学生成绩管理系统(数据结构C语言版源代码)_第1页
学生成绩管理系统(数据结构C语言版源代码)_第2页
学生成绩管理系统(数据结构C语言版源代码)_第3页
学生成绩管理系统(数据结构C语言版源代码)_第4页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、学生成绩管理系统(数据结构c语言版源代码)#include<>#include<>#include<>struct studentschar num10; /*字符型学生学号*/char name20; /*字符型学生姓名*/char sex3; /*字符型学生性别*/double english; /*双精度实型英语成绩*/double java; /*双精度实型java成绩*/double sjjg; /*双精度实数据结构*/double szdl; /*双精度实型数字电路*/double jsj; /*计算机组成原理*/struct students

2、*next; /*用与构建连表指向下一结点*/;file *fp; /*定义全局变量fp*/void revisemenu();/*修改菜单*/void sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void browse(struct students

3、*head);/*浏览全部学生信息*/struct students * create(struct students *head,int *n);/*从tushu_list中读取数据构建链表*/void findofnum(struct students *head);/*按学号查询学生信息*/void findofnname(struct students *head);/*按姓名查询学生信息*/void sortenglish(struct students * head);/*按英语成绩排序*/void sortjava(struct students * head);/*按java成

4、绩排序*/void sortsjjg(struct students * head);/*按数据结构成绩排序*/void sortszdl(struct students * head);/*按数字逻辑电路成绩排序*/void sortjsj(struct students * head);/*按计算机组成原理成绩排序*/struct students * delete(struct students * head,char m15);/*按学号删除学生成绩信息*/struct students * revise();/*修改学生信息(按编号修改)*/*主菜单*/void menu()prin

5、tf("nn");printf("*n");printf(" 学生成绩管理系统 n");printf("-n");printf(" 1-添加新同学 2-浏览学生信息 n");printf(" 3-按学号查询 4-按姓名查询 n");printf(" 5-按成绩排序 6-修改学生信息 n");printf(" 7-删除学生信息 0-退出系统 n");printf("-n");printf("_n")

6、;/*排序菜单*/void sortmenu()printf("nn");printf("*n");printf(" 按成绩排序 n");printf(" 1-大学英语 2-java编程 n");printf(" 3-数据结构 4-数字逻辑电路 n");printf(" 5-计算机组成原理 0-返回上级菜单 n");printf("*n");/*修改菜单*/void revisemenu()printf("nn"); printf(&q

7、uot; 1-修改学生姓名 2-修改学生学号 n"); printf(" 3-修改学生性别 4-修改英语成绩 n"); printf(" 5-修改java成绩 6-修改数据结构 n"); printf(" 7-修改数字电路 8-修改计算计 n");printf(" 0-返回上级菜单 n"); printf("nn");/*安全验证*/void secret()char a20;printf("*欢迎来到学生信息管理系统,进入系统前请先进行密码验证-");printf

8、(" ");dogets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误,请重新输入-");while(strcmp(a,"0605")!=0); /*单一密码"0605"*/system("cls");/*新建学生信息*/struct students * input()struct students *p1,*p2,*head; /*建立辅助结点及头结点*/char name;int n=0,x;pri

9、ntf("n请按对应项输入学生信息以#结束:n");printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机组成原理n");p1=(struct students *)malloc(sizeof(struct students);head=p2=p1;do /*使用do while语句输入学生信息*/scanf("%s",&p1->name);if(strcmp(p1->name,"#")=0)break; /*判断结束符*/elsescanf("%s%s%lf%l

10、f%lf%lf%lf",p1->num,p1->sex,&p1->english,&p1->java,&p1->sjjg,&p1->szdl,&p1->jsj);name='#'p1=(struct students *)malloc(sizeof(struct students);p2->next=p1;p2=p1;n+;while(1);p1->next=null;printf("学生信息输入结束!n");getchar(); printf("

11、;是否保存学生信息(1.是/2.否):");scanf("%d",&x);if(x=1)fprint(head); /*调用函数保存至文件*/elseprintf("n文件没有被保存!n");return head; /*返回头指针*/*将信息导入文件可追加*/void fprint(struct students *head)struct students *p1;if(fp=fopen("","a")=null)printf("file open error!n");exi

12、t(0);for(p1=head;p1->next!=null;p1=p1->next) /*遍历*/fprintf(fp,"%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p1->name,p1->num,p1->sex,p1->english,p1->java,p1->sjjg,p1->szdl,p1->jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("n学生信息已成功保存到文件 中!n");getchar();/*

13、将信息导入文件并覆盖*/void fprint_(struct students *head)struct students *p1;if(fp=fopen("","w")=null)printf("file open error!n");exit(0);for(p1=head;p1!=null;p1=p1->next) /*遍历*/fprintf(fp,"%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p1->name,p1->num,p1->sex,p1

14、->english,p1->java,p1->sjjg,p1->szdl,p1->jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();/*浏览全部学生信息*/void browse(struct students *head) char num10; /*字符型学生学号*/char name20; /*字符型学生姓名*/char sex3; /*字符型学生性别*/double english; /*双精度实型英语成绩*/double java; /*双精度实型java成绩*/double sjjg; /*双精度实数据结

15、构*/double szdl; /*双精度实型数字电路*/double jsj; /*计算机组成原理*/if(fp=fopen("","a+")=null)printf("file open error!n");exit(0);printf("-n");printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");while(!feof(fp)/*读取并输出*/fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",name,num,sex,

16、&english,&java,&sjjg,&szdl,&jsj);printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",name,num,sex,english,java,sjjg,szdl,jsj);if(fclose(fp)printf("can not close the file!n");exit(0);/*从tushu_list中读取数据构建链表*/struct students * create(struct students * head,int *n)fi

17、le *fp;struct students*p,*p1,*p2;if(fp=fopen("","a+")=null)printf("file open error!n");exit(0);while(!feof(fp)(*n)+; p=(struct students *)malloc(sizeof(struct students);fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->name,p->num,p->sex,&p->english,&p-

18、>java,&p->sjjg,&p->szdl,&p->jsj);if(head=null)head=p;p1=p;elsep1->next=p;p2=p1;p1=p; p2->next=null;free(p);(*n)-;fclose(fp);return head;/*按姓名查询学生信息*/void findofname(struct students *head)int i=0,n=0; char b20; struct students *p;head=create(head,&n);p=head;printf(&q

19、uot;n请输入要查询的学生姓名:");scanf("%s",b);while(p!=null)if(strcmp(p->name,b)=0) printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);i+;p=p->

20、;next;if(i=0)printf("n对不起!没有找到名为“%s”的学生信息!n",b);/*按学号查询学生信息*/void findofnum(struct students *head)int i=0,n;char b20;struct students *p;head=create(head,&n);p=head;printf("n请输入要查询的学生学号:");scanf("%s",b);while(p!=null)if(strcmp(p->num,b)=0)printf("姓名 学号 性别 英语

21、java 数据结构 数字电路 计算机n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);i+;p=p->next;if(i=0)printf("n对不起!没有找到学号为“%s”学生信息!n",b);/*按英语成绩排序*/void sortenglish(struct students * head)struct

22、 students *p,*tail; /*定义中间变量*/int n;double english;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");while(head->next!=null) /*利用选择法排序*/tail=null; p=head; english=p->english; /*将链表中第一个成绩赋给english*/ while(p!=null)if(

23、p->english)>english)/*比较*/english=p->english;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->english=english)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)he

24、ad=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->english=english) /*分数相同时无需比较*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*将链表赋给结构体指针*/printf

25、("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):n");return;/*按java成绩排序*/void sortjava(struct students * head)struct students *p,*tail; /*定义中间变量*/int n

26、;double java;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");while(head->next!=null) /*利用选择法排序*/tail=null; p=head; java=p->java; /*将链表中第一个成绩赋给java*/ while(p!=null)if(p->java)>java)/*比较*/java=p->java;tail=

27、p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->java=java)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next

28、;if(p->java=java) /*成绩相同时无需比较*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*将链表赋给结构体指针*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->n

29、um,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*浏览排序后的信息*/printf("按java成绩排序后输出如上(注:此过程不保存至文件):n");return;/*按数据结构排序*/void sortsjjg(struct students * head)struct students *p,*tail; /*定义中间变量*/int n;double sjjg;p=(struct students *)malloc(sizeof(struct students);head=c

30、reate(head,&n);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");while(head->next!=null) /*利用选择法排序*/tail=null; p=head; sjjg=p->sjjg; /*将链表中第一个成绩赋给sjjg*/ while(p!=null)if(p->sjjg)>sjjg)/*比较*/sjjg=p->sjjg;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->sjjg=s

31、jjg)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->sjjg=sjjg) /*成绩相同时无需比较*/printf("%st%st%st%.1lft%.1lft%.1

32、lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*将链表赋给结构体指针*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);

33、/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):n");return;/*按数字电路排序*/void sortszdl(struct students * head)struct students *p,*tail; /*定义中间变量*/int n;double szdl;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");

34、while(head->next!=null) /*利用选择法排序*/tail=null; p=head; szdl=p->szdl; /*将链表中第一个成绩赋给szdl*/ while(p!=null)if(p->szdl)>szdl)/*比较*/szdl=p->szdl;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->szdl=szdl)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->na

35、me,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->szdl=szdl) /*成绩相同时无需比较*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p-&g

36、t;java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*将链表赋给结构体指针*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):n");return;/*

37、按计算机组成原理排序*/void sortjsj(struct students * head)struct students *p,*tail; /*定义中间变量*/int n;double jsj;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");while(head->next!=null) /*利用选择法排序*/tail=null; p=head; jsj=p->jsj

38、; /*将链表中第一个成绩赋给jsj*/ while(p!=null)if(p->jsj)>jsj)/*比较*/jsj=p->jsj;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->jsj=jsj)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj

39、);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->jsj=jsj) /*成绩相同时无需比较*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*将链表赋给结构体指针*/

40、printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):n");return;/*按学号删除学生成绩信息*/struct students * delete(struct students * head,char m15)struct s

41、tudents *ptr1,*ptr2;int n; printf("n所有学生信息如下:n");browse(head);printf("n请输入想要删除的学生学号:");scanf("%s",m);head=create(head,&n);if(head=null)printf("无学生信息!n");return head;if(strcmp(head->num,m)=0)&&head!=null)ptr2=head;head=head->next;free(ptr2);if

42、(strcmp(head->num,m)!=0)ptr1=head;ptr2=head->next;while(ptr2!=null)if(strcmp(ptr2->num,m)=0)ptr1->next=ptr2->next;free(ptr2);elseptr1=ptr2;ptr2=ptr1->next;fprint_(head);printf("n学号为' %s '学生信息已被删除,并保存至文件!n",m);return head;/*修改学生信息(按编号修改)*/struct students * revise()

43、int n=0,t; char num10; char num10; /*字符型学生学号*/char name20; /*字符型学生姓名*/char sex3; /*字符型学生性别*/double english; /*双精度实型英语成绩*/double java; /*双精度实型java成绩*/double sjjg; /*双精度实数据结构*/double szdl; /*双精度实型数字电路*/double jsj; /*计算机组成原理*/ struct students *head=null; struct students *p; printf("n所有学生信息如下:n&quo

44、t;);browse(head);head=create(head,&n);printf("n输入需要修改的学生的学号:");scanf("%s",num);p=head;while(head!=null)if(strcmp(p->num,num)=0)system("cls");revisemenu();printf("编号为%s的学生信息如下:n",num);printf("姓名 学号 性别 英语 java 数据结构 数字电路 计算机n");printf("%st%s

45、t%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);while(1)printf("请选择需要修改的信息:");scanf("%d",&t);switch(t)case 1:printf("请输入新姓名:");scanf("%s",name);strcpy(p->name,name);break;

46、case 2:printf("请输入新学号:");scanf("%s",&num);strcpy(p->num,num);break;case 3:printf("请输入新性别:");scanf("%s",sex);strcpy(p->sex,sex);break;case 4:printf("请输入新英语成绩:");scanf("%lf",&english);p->english=english;break;case 5:printf("请输入新java成绩:");scanf("%lf",&java);p->java=java;break;case

温馨提示

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

评论

0/150

提交评论