学生信息数据系统及文本格式的保存读取

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#include
#include
#include
#include
using namespace std;
int n=0,m;

typedef struct Student
{ string num;
string name;
double score;
struct Student *next;
}Stu;

Stu *head;


void MainMenu()
{ system("cls");
for(int i=0;i<24;i++) cout<<"=";
cout<<"\n|\t1.添加学生\t\t|\n|\t2.查询学生\t\t|\n|\t3.编辑学生\t\t|\n|\t4.删除学生\t\t|\n"
<<"|\t5.打印全部\t\t|\n|\t6.总人数\t\t|\n|\t7.存盘(文本)\t\t|\n|\t8.读取数据(文本)\t|\n|\t9.存盘(二进制)\t|\n|\t0.读取数据(二进制)\t|\n|\ta. 退出\t\t\t|\n";
for(i=0;i<24;i++) cout<<"=";
}

int Compare(string s1,string s2)
{ int i,t=0;
char a[100],b[100];
for(i=0;ifor(i=0;iif(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位且不能为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->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<num<<", "<name<<", "<score<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<<"学号为"<name<<"),分数("<score<<")\n";}
else i++;
p=p->next;
p1=p1->next;
}
if(i==n) cout<<"没有找到学号为"<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<<"学号为"<

"<name<<"),分数("<score<<")\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<<"没有找到学号为"<cout<<"=============================";
}



void Delete(Stu *h)
{ system("cls");
Print(head);
string num;
Stu *p=h,*p1=p->next;
int i=0;
cout<<"\n\n========================\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<<"没有找到学号为"<cout<<"=============================";

}
}

void Keep1(Stu *h)
{ system("cls");
char str[100];
string string;
Stu *p=h,*p1=h->next;
cout<<"输入文件路径:";
cin>>string;
for(int i=0;istr[i]='\0';
ofstream myfile(str);
if(myfile.fail())cout<<"存盘失败!\n按任意键返回操作...\n";
else cout<<"数据已成功保存在:"<int j=1;
while(p->next!=NULL)
{ myfile<num<<","<name<<","<score<p=p->next;
p1=p1->next;
j++;
}
myfile.close();
}

void Read1(Stu *h)
{ system("cls");
Stu *p=h,*p1=h->next;
string str1[100],str3;
//double a[100];
//int aa[100];
char str[100];
cout<<"输入文件路径:";
cin>>str3;
for(int i=0;istr[i]='\0';
ifstream gettxt(str,ios_base::in);
if(gettxt.fail()){cout<<"文件不存在!\n";return;}
i=0;
while(p->next!=NULL)
{
gettxt>>str1[i];
//gettxt>>a[i];
p=p->next;
p1=p1->next;
i++;
}
int n=i;
//cout<<"Num "<<"Name "<<"Score\n";
for(i=0;i{ cout<}

void Keep2(Stu *h)
{ system("cls");
char str[100];
string string;
Stu *p=h,*p1=h->next;
cout<<"输入文件路径:";
cin>>string;
for(int i=0;istr[i]='\0';
ofstream myfile(str,ios_base::binary);
if(myfile.fail())cout<<"存盘失败!\n按任意键返回操作...\n";
else cout<<"数据已成功保存在:"<int j=1;
while(p->next!=NULL)
{ myfile<num<<","<name<<","<score<p=p->next;
p1=p1->next;
j++;
}
myfile.close();
}

void Read2(Stu *h)
{ system("cls");
Stu *p=h,*p1=h->next;
string str1[100],str3;
//double a[100];
//int aa[100];
char str[100];
cout<<"输入文件路径:";
cin>>str3;
for(int i=0;i

) str[i]=str3[i];
str[i]='\0';
ifstream gettxt(str,ios_base::binary);
if(gettxt.fail()){cout<<"文件不存在!\n";return;}
i=0;
while(p->next!=NULL)
{
gettxt>>str1[i];
//gettxt>>a[i];
p=p->next;
p1=p1->next;
i++;
}
int n=i;
//cout<<"Num "<<"Name "<<"Score\n";
for(i=0;i{ cout<}


void Total()
{ system("cls");
cout<<"============================\n学生总人数:"
<}

void main()
{ char ch;
head=new Stu;
head->next=NULL;
while(1)
{ MainMenu();
ch=getch();
if(ch=='a') {cout<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;
}
}
}





相关文档
最新文档