《2022年学生信息管理系统源代码 .pdf》由会员分享,可在线阅读,更多相关《2022年学生信息管理系统源代码 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 C+课程设计参考程序源码main.cpp#include student.h/*课程设计题目:学生信息管理系统班级:0601 学号:200605112 姓名:xxx*/使用链表存储学生数据链式存储int main()Student s;char i=9;s.showMenu();couti;system(cls);/清除屏幕s.showMenu();s.doMenu(i);s.showTip();link.h#ifndef LINK_H_INCLUDED#define LINK_H_INCLUDED#include#include#include#include#include#inclu
2、de using namespace std;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -2/结点类,用于存放学生的各种数据class Node public:int id;/学号string name;/姓名Node*next;/指向下一结点的指针Node(int nid=0,string nname=noname);/构造函数,初始化变量;/Link 类,把数据以链表的形式存储,链表的每个结点为一个Node 对象class Link private:Node*head;/链表的头指针,为Node 对象类型的指针public:Link();/构造函数,初始化变量b
3、ool linkIsEmpty();/判断链表是否为空void linkInsert(Node*newnode);/向链表中插入新的结点bool linkDelete(int nid);/从链表中删除的结点void linkClear();/清空链表中数据void linkView();/查看链表中数据Node*linkFind(int nid);/在链表中查找id 为 nid 结点,返回指向该结点的指针Node*getHead();/获取头指针;#endif/LINK_H_INCLUDED link.cpp#include link.h Node:Node(int nid,string nn
4、ame)id=nid;name=nname;next=NULL;Link:Link()/构造函数,初始化链表为空 head=NULL;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -3 bool Link:linkIsEmpty()/判断链表是否为空,空则返回true return(head=NULL);void Link:linkInsert(Node*newnode)/按 id 值从小到大的顺序,插入新的结点 Node*p1;if(!head)/链表为空的情况head=newnode;else if(head-id)(newnode-id)/插入到第一个结点的情况
5、newnode-next=head;head=newnode;else/插入到第二个及以后情况 p1=head;while(1)if(!(p1-next)p1-next=newnode;break;else if(p1-next)-idnewnode-id)newnode-next=p1-next;p1-next=newnode;break;p1=p1-next;bool Link:linkDelete(int nid)/删除结点,成功则返回true Node*p;if(head=NULL)/链表为空的情况return false;if(head-id=nid)/删除的为第一个结点的情况 he
6、ad=head-next;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -4 return true;p=head;while(p-next)/删除的为第二个及以后结点的情况 if(p-next)-id=nid)p-next=(p-next)-next;return true;p=p-next;return false;void Link:linkClear()/清空链表 head=NULL;Node*Link:linkFind(int nid)/查找 id 值为 nid 的结点,返回该结点的指针 Node*p=head;/没找到符合条件的结点的话,返回的指针值为NUL
7、L while(p)if(p-id=nid)break;else p=p-next;return p;void Link:linkView()/显示链表数据 Node*p=head;coutsetw(6)学号 setw(10)姓名 endl;while(p)coutsetw(6)id setw(10)namenext;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -5 Node*Link:getHead()return head;student.h#ifndef STUDENT_H_INCLUDED#define STUDENT_H_INCLUDED#include l
8、ink.h/类 Student,用于包装Link 类及菜单操作class Student private:Link slink;/Link对象成员bool k;/记录数据是否被修改public:Student();void studentClear();void studentInsert();void studentDelete();void studentFind();void studentView();void studentLoad();void studentSave();void Exit();/退出程序void showMenu();/显示菜单void showTip();/显
9、示操作提示void doMenu(char n);/执行相应菜单项功能;#endif/STUDENT_H_INCLUDED student.cpp#include student.h Student:Student()Link();/调用成员对象的构造函数studentLoad();/从文件中读取数据,创建链表k=false;/设置数据被修改 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -6 void Student:studentClear()/清空学生记录 slink.linkClear();cout 成功清空学生记录!endl;void Student:stud
10、entInsert()/插入学生记录 Node*p=new Node();coutp-id;coutp-name;if(!slink.linkFind(p-id)/判断学号是否存在 slink.linkInsert(p);k=true;else cout 学号为 id 的学生已存在,插入失败!endl;void Student:studentDelete()/删除学生记录 int i;if(slink.linkIsEmpty()/链表为空的情况cout 没有学生记录!endl;else couti;if(slink.linkDelete(i)cout 成功删除学号为i 的学生记录!endl;k
11、=true;else cout 没有找到学号为i 的学生!endl;void Student:studentFind()/查找某学号的学生记录 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -7 int n;Node*p;if(slink.linkIsEmpty()/链表为空的情况cout 没有学生记录!endl;else coutn;p=slink.linkFind(n);/获得找到的结点的指针if(p)/指针值不为NULL 时 coutsetw(6)学号 setw(10)姓名 endl;coutsetw(6)id setw(10)nameendl;else/指针值为
12、NULL 时cout 没有找到学号为n 的学生记录!endl;void Student:studentView()/显示所有学生的记录 if(slink.linkIsEmpty()cout 没有学生记录!endl;else slink.linkView();void Student:studentLoad()/从文件中读入数据,创建链表 Node*p;int nid;ifstream infile(data.txt);if(!infile)cerrnid)/读取学号,直到读空 p=new Node();p-id=nid;infilep-name;/读取姓名slink.linkInsert(p)
13、;infile.close();/关闭文件 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -8 void Student:studentSave()/将数据保存到文件 Node*p=slink.getHead();ofstream outfile(data.txt);if(!outfile)cerr 错误:数据文件不能打开!n;else while(p)outfileid namenext;k=false;cout 保存成功!endl;void Student:Exit()char s=Y;if(k)/判断数据是否修改 couts;if(s=y|s=Y)studentS
14、ave();cout 已安全退出,;system(pause);exit(0);void Student:showMenu()cout|-|endl;cout|学生信息管理系统|endl;cout|-|endl;cout|1.清空:清除所有学生数据|endl;cout|2.添加:插入一条学生数据|endl;cout|3.删除:删除指定学生数据|endl;cout|4.查找:查找指定学生数据|endl;cout|5.显示:显示所有学生数据|endl;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -9 cout|6.保存:保存所有学生数据|endl;cout|0.退出:安全
15、的退出本系统|endl;cout|-|endlendl;void Student:showTip()coutendl;cout-操作完成-endl;cout-选择 05 继续-endl;cout 请选择:;void Student:doMenu(char n)switch(n)case 1:studentClear();break;case 2:studentInsert();break;case 4:studentFind();break;case 3:studentDelete();break;case 5:studentView();break;case 6:studentSave();break;case 0:Exit();break;default:cout 输入错误!;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -