源代码学生信息管理系统.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流源代码学生信息管理系统.精品文档.注意:必须在你的电脑里建一个文档来存储学生信息,我是再d盘建了一个stu.txt的文档,所以你只要在d盘建一个一样的就可以了。如果你要改变存储路径,就必须把程序中的d:stu.txt全都改了#include<iostream>#include<fstream>#include<iomanip>#include<cstring>using namespace std;void menu()system("cls"); cout<<"*"<<endl;cout<<"* 欢迎使用 *"<<endl; cout<<"*"<<endl;cout<<"* 某大学面向对象程序设计 *"<<endl;cout<<"* *"<<endl;cout<<"* 运行操作者:* *"<<endl;cout<<"* *"<<endl;cout<<"* *级软件工程*班 *"<<endl;cout<<"*"<<endl;cout<<"* 1:输出学生信息 *"<<endl;cout<<"* 2:添加学生信息 *"<<endl;cout<<"* 3:修改学生信息 *"<<endl;cout<<"* 4:删除学生信息 *"<<endl;cout<<"* 5:查找 *"<<endl;cout<<"* 6:返回主菜单 *"<<endl;cout<<"* 7:退出并保存学生信息 *"<<endl;cout<<"*"<<endl;typedef structlong int num;/学号char name20;/姓名char sex4;/性别char add20;/住址char native40;/籍贯int age;/年龄data;typedef struct studata x;struct stu* next;node,*pnode;/链表结点的定义class studentprivate:node *head;public:student();pnode gethead();/获取头结点void insert(data x);/插入void output();/打印void del(char *name);/删除void change(char *name);/修改void find(char *str);/查找student:student()head=(node *)new(node);head->next=NULL;void student:insert(data a)node *p;p=(node *)new(node);p->x=a;p->next=head->next;head->next=p;void student:output()node *p; int i=0,t,tempt;long int a100;p=head->next;if(p=NULL)cout<<"没有学生信息!"<<endl;elsecout<<"姓名"<<'t'<<"学号"<<'t'<<" "<<"住址"<<'t'<<"籍贯"<<'t'<<"性别"<<'t'<<"年龄"<<endl<<endl; if(p!=NULL) while(p!=NULL) i=i+1; ai=p->x.num; p=p->next; t=i; for(int n=0;n<=t;n+) /按学号大小排序 for(int j=n+1;j<=t;j+) if(an>aj) tempt=an; an=aj; aj=tempt; p=head->next;if(p!=NULL)for(i=0;i<=t;i+) /打印排序后的信息 while(p!=NULL) if(p->x.num=ai) cout<<p->x.name<<'t'<<setw(10)<<p->x.num<<'t'<<setw(5)<<p->x.add<<'t'<<setw(3)<<p->x.native<<'t'<<setw(2)<<p->x.sex<<'t'<<setw(2)<<p->x.age<<endl;p=p->next; p=head->next;p=head->next;void student:del(char *name)node *p,*per;int flag=1;p=head->next;per=head;if(p=NULL)cout<<"空链表,不能删除!"<<endl;elsewhile(p!=NULL)if(strcmp(p->x.name,name)=0)per->next=p->next;cout<<"删除成功!"<<endl;flag=0;delete p;break;else per=p;p=p->next;if(flag=1)cout<<"没有找到该学生!"<<endl;pnode student:gethead()return head;void student:change(char *name)node *p;int temp=0;p=head->next;char str20;while(p!=NULL)if(strcmp(p->x.name,name)=0)temp=1;cout<<"请选择需要修改的学生信息:"<<endl;cout<<"1.姓名:"<<endl;cout<<"2.学号:"<<endl;cout<<"3.年龄"<<endl;cout<<"4.住址:"<<endl;cout<<"5.籍贯:"<<endl;cout<<"6.性别:"<<endl;int n;cin>>n;switch(n) case 1:cout<<"姓名:" cin>>str;strcpy(p->x.name,str);break;case 2: cout<<"学号:" long int m; cin>>m;p->x.num=m;break;case 3: cout<<"年龄:" int a; cin>>a;p->x.age=a;break;case 4: cout<<"住址:" cin>>str;strcpy(p->x.add,str);break;case 5: cout<<"籍贯:" cin>>str;strcpy(p->x.native,str);break;case 6: cout<<"性别:" cin>>str;strcpy(p->x.sex,str);break;p=p->next;if(temp=0)cout<<"该学生不存在!"<<endl;void student:find(char *str)system("cls");pnode p;int temp=0;p=head->next;while(p!=NULL)if(strcmp(str,p->x.name)=0)cout<<"姓名"<<'t'<<"学号"<<'t'<<" "<<"住址"<<'t'<<"籍贯"<<'t'<<"性别"<<'t'<<"年龄"<<endl; cout<<p->x.name<<'t'<<setw(10)<<p->x.num<<'t'<<setw(5)<<p->x.add<<'t'<<setw(3)<<p->x.native<<'t'<<setw(2)<<p->x.sex<<'t'<<setw(2)<<p->x.age<<endl;temp=1;p=p->next;if(temp=0)cout<<"该学生不存在"<<endl;student H;void insert_stu()/插入学生信息system("cls");ofstream file("d:stu.txt",ios:app);data x;cout<<"请输入学生姓名:"cin>>x.name;/file<<x.name<<' '/cout<<endl;cout<<"请输入学生学号:"cin>>x.num;/file<<x.num<<' '/cout<<endl;cout<<"请输入学生年龄:"cin>>x.age;/file<<x.age<<' 'cout<<"请输入学生住址:"cin>>x.add;/file<<x.add<<' 'cout<<"请输入学生籍贯:"cin>>x.native;/file<<x.intrest<<' 'cout<<"请输入学生性别:"cin>>x.sex;/file<<x.sex<<'n'H.insert(x);file.close();void cout_stu()/输出学生信息system("cls");H.output();void del_stu()/删除学生信息system("cls");char name20;cout<<"请输入要删除学生的名字:"<<endl;cin>>name;H.del(name);void readstu(void)/读文件data x;char str200;ifstream fout;fout.open("d:stu.txt");if(!fout) cout<<"读取文件失败!"<<endl; cout<<"按任意键返回."<<endl; exit(-1); while(fout.getline(str,200)/fout.getline(str,200);cout<<"-"<<endl;/cout<<str<<endl;int i=0;int j=0;while(stri!=' ')x.namej+=stri+;x.namej='0' j=0;i+;x.num=0;while(stri!=' ')x.num=x.num*10+(stri+-'0');j=0;i+;x.age=0;while(stri!=' ')x.age=x.age*10+(stri+-'0');j=0;i+;while(stri!=' ')x.addj+=stri+;x.addj='0'j=0;i+;while(stri!=' ')x.nativej+=stri+;x.nativej='0'j=0;i+;while(stri!='0')x.sexj+=stri+;x.sexj='0'/cout<<x.name<<"="<<x.num<<"="<<x.age<<"="<<x.add/<<"="<<x.native<<"="<<x.sex<<endl;H.insert(x);fout.close();void writestu(void)/写入 pnode q;q=H.gethead()->next;ofstream fin;fin.open("d:stu.txt");if(!fin)cout<<"读取文件失败"<<endl;exit(-1);while(q!=NULL)fin<<q->x.name<<' 'fin<<q->x.num<<' 'fin<<q->x.age<<' 'fin<<q->x.add<<' 'fin<<q->x.native<<' 'fin<<q->x.sex<<'n'q=q->next;void change_stu()/修改学生信息system("cls");char str20;cout<<"请输入要修改的学生的姓名:"<<endl;cin>>str;H.change(str);void find_stu()/查找学生信息system("cls");char str20;cout<<"*"<<endl;cout<<"* 1:输入姓名 *"<<endl; cout<<"*"<<endl; cin>>str;H.find(str);int main()char w='6'readstu();/读取文件的内容while(w!='7')switch(w) case '1':cout_stu();break; case '2':insert_stu();break; case '3':change_stu();break; case '4':del_stu();break; case '5':find_stu();break;case '6':menu();break;case '7':w='7'break; default:cout<<"输入错误"<<endl;cout<<endl<<"请选择:(6->菜单)"<<endl;cin>>w;writestu();cout<<endl<<"欢迎下次使用!"<<endl<<endl;return 1;