《学生信息数据系统及文本格式的保存读取.docx》由会员分享,可在线阅读,更多相关《学生信息数据系统及文本格式的保存读取.docx(15页珍藏版)》请在三一办公上搜索。
1、学生信息数据系统及文本格式的保存读取#include<iostream>#include<fstream>#include<string >#include<stdlib.h>#include<conio.h>#include<iomanip>using namespace std;int n=0,m;typedef struct Studentstring num;string name;double score;struct Student *next;Stu;Stu *head;void MainMenusystem(cls);for(in
2、t i=0;i<24;i+) cout<<=;cout<<n|t1.添加学生tt|n|t2.查询学生tt|n|t3.编辑学生tt|n|t4.删除学生tt|n<<|t5.打印全部tt|n|t6.总人数tt|n|t7.存盘tt|n|t8.读取数据t|n|t9.存盘t|n|t0.读取数据t|n|ta. 退出ttt|n;for(i=0;i<24;i+) cout<<=;int Compare(string s1,string s2)int i,t=0;char a100,b100;for(i=0;i<s1.length;i+) ai=s1i;ai=0;for
3、(i=0;i<s2.length;i+) bi=s2i;bi=0;if(atol(a)>atol(b) return 1;else if(atol(a)=atol(b) return 0;else return 2;void Add(Stu *h)system(cls);Stu *p,*p1=h,*p2=h;p2=p2->next;int flag=1;p=new Stu;cout<<=n输入学生信息:n学号:;cin>>p->num;while(p->num).size!=4|(p->num)=0000)cout<<输入非法:学号必须是4位且不
4、能为0000,请重新输入!n学号:;cin>>p->num;cout<<姓名:;cin>>p->name;cout<<成绩:;cin>>p->score;while(p1->next!=NULL)if(Compare(p2->num,p->num)=1)p1->next=p;p->next=p2;p2->next=NULL;flag=0;break;else if(Compare(p2->num,p->num)=2)p1=p2;p2=p2->next;else if(Compare(p2->num,p-
5、>num)=0) cout<<学号已存在,请重新输入!;cin>>p->num;if(flag=1)p1->next=p;p->next=NULL;n+;void Print(Stu *h)system(cls);int i=0;Stu *p,*p1;p=h;p1=h->next ;cout<<=n所有学生信息:n;while(p->next!=NULL)i+;cout<<i<<: <<p1->num<<, <<p1->name<<, <<p1->score<<endl;
6、p=p->next;p1=p1->next;cout<<=;void Query(Stu *h)system(cls);string num;int i=0;Stu *p=h,*p1=h->next;Print(head);cout<<n=n输入要查找学生的学号:n学号:;cin>>num;while(num.size!=4)cout<<输入非法:学号必须是4位,请重新输入!;cin>>num;while(p->next!=NULL)if(p1->num=num) cout<<学号为<<num<<的学生信息:姓
7、名,分数n; else i+;p=p->next;p1=p1->next;if(i=n) cout<<没有找到学号为<<num<< 的学生,请确认学号是否输入正确!n;cout<<=;void Edit(Stu *h)system(cls);Stu *p=h,*p1=h->next;int i=0;char c;string num;Print(head);cout<<n=n输入学生学号:n学号:;cin>>num;while(p->next!=NULL)if(p1->num=num) cout<<学号为<<n
8、um<<的学生信息:姓名,分数n请选择修改项目:n1. 姓名n2. 分数;c=getch;if(c=1) cout<<n新名:;cin>>p1->name;else if(c=2)cout<<n新分数:;cin>>p1->score;else cout<<error!;else i+;p=p->next;p1=p1->next;if(i=n) cout<<没有找到学号为<<num<< 的学生,请确认学号是否输入正确!n;cout<<=;void Delete(Stu *h)system(cls);P
9、rint(head);string num;Stu *p=h,*p1=p->next;int i=0;cout<<nn=n输入要删除学生的学号:(如果删除所有学生请输入0000)n学号:;cin>>num;if(num=0000) h->next=NULL;n=0;cout<<n=;else while(p->next!=NULL)if(p1->num=num)p->next=p1->next;m=n-;break;else i+;p=p->next;p1=p1->next;if(i=m) cout<<没有找到学号为<<n
10、um<< 的学生,请确认学号是否输入正确!n;cout<<=; void Keep1(Stu *h)system(cls);char str100;string string;Stu *p=h,*p1=h->next;cout<<输入文件路径:;cin>>string;for(int i=0;i<string.size;i+) stri=stringi;stri=0;ofstream myfile(str);if(myfile.fail)cout<<存盘失败!n按任意键返回操作.n;else cout<<数据已成功保存在:<<st
11、ring<<n按任意键返回操作.n;int j=1;while(p->next!=NULL)myfile<<j<<:<<p1->num<<,<<p1->name<<,<<p1->score<<endl;p=p->next;p1=p1->next;j+;myfile.close;void Read1(Stu *h)system(cls);Stu *p=h,*p1=h->next;string str1100,str3;/double a100;/int aa100;char str100;cout
12、<<输入文件路径:;cin>>str3;for(int i=0;i<str3.size;i+) stri=str3i;stri=0;ifstream gettxt(str,ios_base:in);if(gettxt.fail)cout<<文件不存在!n;return;i=0;while(p->next!=NULL)gettxt>>str1i;/gettxt>>ai;p=p->next;p1=p1->next;i+;int n=i;/cout<<Num <<Name <<Scoren;for(i=0;i<n;i
13、+)cout<<str1i<<endl;void Keep2(Stu *h)system(cls);char str100;string string;Stu *p=h,*p1=h->next;cout<<输入文件路径:;cin>>string;for(int i=0;i<string.size;i+) stri=stringi;stri=0;ofstream myfile(str,ios_base:binary);if(myfile.fail)cout<<存盘失败!n按任意键返回操作.n;else cout<<数据已成功保存在:<&
14、ltstring<<n按任意键返回操作.n;int j=1;while(p->next!=NULL)myfile<<j<<:<<p1->num<<,<<p1->name<<,<<p1->score<<endl;p=p->next;p1=p1->next;j+;myfile.close;void Read2(Stu *h)system(cls);Stu *p=h,*p1=h->next;string str1100,str3;/double a100;/int aa100;char str100;
15、cout<<输入文件路径:;cin>>str3;for(int i=0;i<str3.size;i+) stri=str3i;stri=0;ifstream gettxt(str,ios_base:binary);if(gettxt.fail)cout<<文件不存在!n;return;i=0;while(p->next!=NULL)gettxt>>str1i;/gettxt>>ai;p=p->next;p1=p1->next;i+;int n=i;/cout<<Num <<Name <<Scoren;for(i=0
16、;i<n;i+)cout<<str1i<<endl;/<<ai<<endl;void Totalsystem(cls);cout<<=n学生总人数:<<n<<n=;void mainchar ch;head=new Stu;head->next=NULL;while(1)MainMenu;ch=getch;if(ch=a) cout<<endl;break;switch(ch)case 1: Add(head);break;case 2: Query(head);getch;break;case 3: Edit(head);getch;break;case 4: Delete(head);getch;break;case 5: Print(head);getch;break;case 6: Total;getch;break;case 7: Keep1(head);getch;break;case 8: Read1(head);getch;break;case 9: Keep2(head);getch;break;case 0: Read2(head);getch;break;default: break;