学生成绩管理系统源代码_第1页
学生成绩管理系统源代码_第2页
学生成绩管理系统源代码_第3页
学生成绩管理系统源代码_第4页
学生成绩管理系统源代码_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #include #include #include #include #include #include #include using namespace std;struct student char name12; / 姓名 char id10; / 学号 float Computer; / 计算机分数 float Math; / 数学分数 float Chinese; / 语文分数 float English; /英语分数 float number; / 总分 float average; /平均分 student *next;class stud student *p1,*p2,*head;public: stud() /-析构函数- while(head) p1=head-next; delete head; head=p1; /-成员函数-student* input(student *head); / 输入学生成绩 void output(student *head); / 输出学生成绩 student* del(student *head, char*p); / 删除记录 student* find(student *head,char *p,int &n);/ 查找学生记录(可查找多个同名数据) student* search(student *head,char *p,int &n); student* stat(student *head); /排序统计学生总分 friend void total(student*head);/统计学生总分 friend void pingjun(student*head);/统计平均分 student* insert(student *head); /按学生总分插入记录 student* clear(student *head); / 删除当前表 void Inputs(student *p); /用于添加数据的子函数;/-void stud:Inputs(student*p)/ 输入学生成绩 coutsetw(4)姓名setw(4) 学号setw(12)计算机setw(12)数学setw(12)语文setw(12)英语p-name p-id; cin p-Computer; while(cin.fail() cout您的输入有误,请重新输入p-Computer; cinp-Math; while(cin.fail() cout您的输入有误,请重新输入p-Math; cinp-Chinese; while(cin.fail() cout您的输入有误,请重新输入p-Chinese; cinp-English; while(cin.fail() cout您的输入有误,请重新输入p-English; total(p); /计算出总分 pingjun(p);/计算平均分void stud:output (student *head)/输出学生成绩 p1=head; while(p1!=NULL) coutsetw(4)namesetw(4)idsetw(12)Computersetw(12)Math setw(12)Chinese setw(12)English setw(8)numbersetw(12)averagenext ; student* stud:insert(student *head) p1=new student;/指向要插入的节点 Inputs(p1); /调用子函数 增加数据 p2=head;/使p2指向第一个节点 student* p3=NULL; while(p2-number number ) & p2-next !=NULL) p3=p2;/使p3指向刚刚p2指向的节点 p2=p2-next;/p2后移一个节点 if(p2-number p1-number) p1-next=p2; if(p3=NULL) / 若当前值是最小的 return p1; p3-next =p1; return head; else p2-next=p1; p1-next=NULL; return head; student* stud:clear(student*head) while(head) p1=head-next ; delete head; head=p1; return head;student *stud:stat(student *head) p2=head; p1=p2-next; while(p2-next) /起泡法 if(p2-number p1-number) / 把头指针指向当前比较小的节点 p2-next=p1-next; p1-next=head; head=p1; / 把用于比较的两个指针复位 /p2=head; p1=p2-next ; else / 指向下一个节点 p2=p2-next ; p1=p2-next ; /- cout当前表以按学生总分排序成功id ,p)& p1-next !=NULL) p2=p1; p1=p1-next ; if(!strcmp(p1-id ,p) if(p1=head) head=p1-next; else p2-next=p1-next ; cout删除成功,OKendl; delete p1; else cout 没找到姓名pnumber = p-Computer + p-Math + p-Chinese+ p-English; void pingjun(student *p) p-average=(p-Computer+p-Math+p-Chinese+p-English)/4; student* stud:find (student *head,char *p,int& n) p2=head; while(strcmp(p2-name ,p) !=0 & p2-next !=NULL) p2=p2-next ; if(0=strcmp(p2-name,p) coutsetw(4)namesetw(4)idsetw(12)Computersetw(12)Math setw(12)Chinese setw(12)Englishsetw(7)number setw(12)averageendl; n+; return p2; else if(n=0) system(cls); cout对不起,没有您要查找的学生数据id ,p) !=0 & p2-next !=NULL) p2=p2-next ; if(0=strcmp(p2-id,p) coutsetw(4)namesetw(4)idsetw(12)Computersetw(12)Math setw(12)Chinese setw(12)Englishsetw(7)number setw(12)averageendl; n+; return p2; else if(n=0) system(cls); cout对不起,没有您要查找的学生数据next =NULL; return head; while(p2-next !=NULL) p2=p2-next; p2-next=p1; p1-next=NULL; return head;void error() cout错误,这还是一张空表,请输入数据endl; getch();int main() stud stus; student *head=NULL;/链表初始化 student *pd; /临时指针, 用于查找函数 char choice; /用于存放用户的选择项 char name10; /查找,删除记录的 key while(1) system(cls); cout*n; cout 学生成绩管理系统 n;cout*Meau*n;cout1.输入学生成绩记录n; cout2.显示学生成绩记录n; cout3.修改学生成绩记录n; cout4.按姓名查找学生成绩记录n; cout5.按学号查找学生成绩记录n; cout6.删除学生成绩记录n; cout7.插入学生成绩记录n; cout8.全表删除n; cout9.退出n;cout*n; cout 请输入您的选择(1-8):; coutchoice; fflush(stdin); /清空缓冲区 if(choice=9) /安全退出 cout谢谢使用,再见endl; exit(0); /- switch(choice) case 1: head=stus.input (head); break;/- case 2: if(head=NULL) error(); break; coutsetw(4)姓名setw(4) 学号setw(12)数据结构setw(12)操作系统setw(12)组成原理setw(12)计算机网络setw(8)总分setw(10)平均分endl; stus.output (head); getch();/从键盘获取一个字符 break;/- case 3: if(head=NULL) error(); break; char id10; cout请输入想要修改学生学号id; head=stus.del(head,id); head=stus.input (head); break;/- case 4: if(head =NULL) error(); /调用函数输出错误信息 break; cout请输入想要查找的学生姓名name; pd=head; coutsetw(4)姓名setw(4) 学号setw(12)计算机setw(12)数学setw(12)语文setw(12)英语setw(8)总分setw(10)平均分next ; /指针指向当前以找到的下一个节点,用于查找多个同名学生 getch(); break;/- case 5: if(head =NULL) error(); /调用函数输出错误信息 break; cout请输入想要查找的学生学号id; pd=head; coutsetw(4)姓名setw(4) 学号setw(12)计算机setw(12)数学setw(12)语文setw(12)英语setw(8)总分setw(10)平均分next ; /指针指向当前以找到的下一个节点,用于查找多个同名学生 getch(); break;/- case 6: if(head=NULL) error(); break; cout请输入想要删除学生学号id; head=stus.del(head,id); getch(); break;/- case 7: if(head=NULL) err

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论