C语言实现学生信息管理系统_第1页
C语言实现学生信息管理系统_第2页
C语言实现学生信息管理系统_第3页
C语言实现学生信息管理系统_第4页
C语言实现学生信息管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要 随着科学技术的不断发展,计算机领域不断取得新的成果,并不断地代替和延伸脑力劳动方面发挥越来越重要的作用。尤其是在学校里,要处理大量的学生数据信息,因而,学生信息管理就成为了一项尤为重要的工作。学生信息管理系统是典型的信息管理系统(MIS),本文主要通过c语言程序设计来实现简单的学生信息管理功能,主要包括对学生信息(包括学号、姓名、性别、数学、英语、C语言、总分、平均分)进行管理,还包括学生成绩的信息输入、输出、查询、删除、排序、修改、保存、统计、退出等操作.经过分析,主要采用结构体和结构体数组来建立学生信息管理系统,在设计过程中,经过不断地修正和改进,最终形成了可以正常运行并实现所要求的

2、各项功能。关键字:学生信息管理;C语言;结构体;目 录1设计目的及设计题目要求5 1.1设计目的5 1.2设计题目及要求52设计算法分析6 2.1 题目求解的理论依据6 2.2 简要的操作流程6 2.3 系统特点73程序代码84调试情况16结论17参考文献18致谢19引言 学生信息管理系统是一个教育单位不可缺少的一部分,它的内容对于学校的决策者和管理者来说都是至关重要的,所以信息管理系统设计是以能够为用户提供充足的信息和快捷的查询手段为核心内容的。加之,现今的学生成绩管理非常繁琐,管理人员付出大量的工作时间,得到的效率很低。为提高工作效率,减轻校方人员的工作负担,特编写此学生成绩管理系统,以供

3、教学人员及操作者进行学生管理,方便操作者随时添加、查询、修改、保存、统计等。同时,也能够提高我们对已学课程的运用能力、编程能力,提高我们程序设计思想,在我们与辅助老师交流过程中,能学习知识、吸取经验,在技术和软件思想上也得到锻炼和提高,从而使总体水平上升到一个新的高度。1.设计目的及设计题目要求1.1设计目的 本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下:1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思

4、想和方法。2培养学生综合运用所学知识独立完成课题的能力。3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。1.2课程设计题目和要求 对学生信息(包括学号、姓名、性别、数学、英语、C语言、平均分)进行管理,包括学生成绩的信息输入、输出、查询、显

5、示、删除、排序、保存、统计、退出.是高等学校教务管理的重要组成部分,学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、性别、3门课程成绩(2)、输入功能:可以一次完成若干条记录的输入。(3)、显示功能:完成全部学生记录的显示。(4)、查找功能:完成按姓名或学号查找学生记录,并显示。(5)、排序功能:按学生成绩进行排序。(6)、保存功能:把学生信息以文件的形式保存。(7)、统计功能:按学生及格人数进行统计。(8)、删除功能:按学生学号进行删除。 (9)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美

6、观!2.设计算法分析2.1 题目求解的理论依据及算法1. 数据结构: struct studentchar name10;/用于输入姓名char num10;/用于输入学号char sex10;/性别int ying;/英语成绩int shu;/数学成绩int c;/C语言int zong;/总分int ping;/平均分;2. 各函数的功能和实现: 输入模块:输入信息包括学生的姓名、学号、性别以及学生的成绩等相关信息;可用函数void jia(Link i)来实现此操作。 显示模块:输出学生的信息以及成绩void xianshi(Link i);同时也可以分别来输出成绩的平均分数、总分。 排

7、序模块:用函数void pai(Link i)来实现 查询模块:可用void cha(Link i)来实现。可以按学号或姓名来查找 删除模块:用函数void shan(Link i)来实现,可以按学号或姓名来实现删除 修改功能:用函数void xiu(Link i) 来实现 保存功能:用函数void bao(Link i) 来实现 统计功能:用函数void tong(Link i)来实现退出系统:首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。2.2 简要的操作流程2.3 系统特点 特点:这个学生信息管理系统建立了学生信息的结构体,实现了学生信息的录入、排序、保存、统计、修改、删

8、除、查找等功能,并能计算学生的总分,对学生进行排序。3.程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>int wang=0;struct student char name10;/用于输入姓名 char num10;/用于输入学号 char sex10;/性别int ying;/英语成绩int shu;/数学成绩int c;/C语言int zong;/总分int ping;/平均分;typedef struct nodestruct student data;struct node *nex

9、t;Node,*Link;void wrong()printf("=>提示:输入错误!请重新输入n");void nofind()printf("=>沒有找到该学生!请检查你的输入!n");void xian()printf("-n");void caidan()printf("*n");printf(" 1输入学生成绩 2删除学生成绩n");printf(" 3修改学生成绩 4学生成绩排序n");printf(" 5保存学生成绩 6查询学生成绩n&qu

10、ot;);printf(" 7统计学生成绩 8显示所有信息n");printf(" 0返回菜单n"); printf("*n");void mima()char mi10; printf("=>请输入密码:"); scanf("%s",mi); if(strcmp(mi,"yangfan")=0) return; else printf("=>没有记住密码!请重新输入n"); mima();void shuchu()printf("

11、学号 姓名 性别 英语 数学 C语言 总分 平均分n");void shuchu1(Node *p)printf(" %s %s %s %d %d %d %d %dn",p->data.num,p->,p->data.sex,p->data.ying,p->data.shu,p->data.c,p->data.zong,p->data.ping);Node *Locate(Link i,char find,char nameornum)Node *r;if(strcmp(nameornum,&quo

12、t;num")=0)/学号查询strcmp比较函数r=i->next;while(r!=NULL)if(strcmp(r->data.num,find)=0)return r; r=r->next;else if(strcmp(nameornum,"name")=0)r=i->next;while(r!=NULL)if(strcmp(r->,find)=0) return r; r=r->next; return 0;void jia(Link i)Node *r,*s,*p; char num10; r=i;

13、 s=i->next;while(r->next!=NULL) r=r->next;/用于指向指针的末尾while(1)/若选择1则为此操作printf("请输入学号(0返回上级菜单):");scanf("%s",num);if(strcmp(num,"0")=0)/如果是0返回上级菜单break;while(s)if(strcmp(r->data.num,num)=0)printf("=>提示:学号为%s的学生已经存在!n",num);xian();shuchu(); shuchu1

14、(s); xian();return; s=s->next; p=(Node *)malloc(sizeof(Node);strcpy(p->data.num,num);/将输入的号码复制给学生学号printf("请输入姓名:"); scanf("%s",p->); getchar();printf("请输入性别:"); scanf("%s",p->data.sex); getchar();printf("请输入英语成绩:");scanf("%

15、d",&p->data.ying);getchar();printf("请输入数学成绩:");scanf("%d",&p->data.shu);getchar(); printf("请输入C语言成绩:");scanf("%d",&p->data.c);getchar(); p->data.zong=p->data.ying+p->data.shu+p->data.c; p->data.ping=p->data.zong/3;p-

16、>next=NULL;r->next=p;r=p;wang=1;/用于后来的提示保存void cha(Link i)int sel;char find20;Node *p;if(!i->next)printf("=>提示:没有资料可以查询!n");return;printf("=>1按学号查询n=>2按姓名查询n");printf("=>请输入你的选择:"); scanf("%d",&sel);if(sel!=1&&sel!=2)wrong();ch

17、a(i);if(sel=1)printf("=>请输入你要查询的学号:");scanf("%s",find);p=Locate(i,find,"num");if(p)printf(" 查询结果n");xian();shuchu();shuchu1(p); xian();elsenofind();elseprintf("=>请输入姓名:");scanf("%s",find);p=Locate(i,find,"name");if(p)printf(

18、" 查询结果n");xian();shuchu();shuchu1(p);xian();elsenofind();void shan(Link i)int sel; char find20; Node *p,*r;if(!i->next)printf("=>提示:没有资料可以删除!n");return;printf("=>1按学号删除n=>2按姓名删除n");printf("=>请输入你的选择:"); scanf("%d",&sel);if(sel!=1&a

19、mp;&sel!=2)wrong(); shan(i);if(sel=1)printf("=>输入你要删除的学号:"); scanf("%s",find);p=Locate(i,find,"num");xian(); shuchu(); shuchu1(p); xian();if(p)r=i;while(r->next!=p) r=r->next; r->next=p->next; free(p);printf("=>提示:该学生已经成功删除!n");wang=1;els

20、enofind();if(sel=2)printf("=>输入你要删除的姓名:");scanf("%s",find);xian(); shuchu(); shuchu1(p); xian();p=Locate(i,find,"name");if(p)r=i;while(r->next!=p) r=r->next; r->next=p->next; free(p);printf("=>提示:该学生已经成功删除!n"); wang=1; nofind();void xiu(Link

21、i)Node *p; char find20;if(!i->next)printf("=>提示:没有资料可以修改!n"); return;printf("请输入要修改的学号:"); scanf("%s",find);p=Locate(i,find,"num");if(p)printf("请输入新的学号(原来学号是%s):",p->data.num);scanf("%s",p->data.num);printf("请输入新的姓名(原来姓名是%s

22、):",p->);scanf("%s",p->);printf("请输入新的性别(原来性别是%s):",p->data.sex);scanf("%s",p->data.sex);printf("请输入新的英语成绩(原来英语成绩是%d):",p->data.ying);scanf("%d",&p->data.ying);printf("请输入新的数学成绩(原来数学成绩是%d):",p-&g

23、t;data.shu);scanf("%d",&p->data.shu);printf("请输入新的C语言成绩(原来数学成绩是%d):",p->data.c);scanf("%d",&p->data.c);p->data.zong=p->data.ying+p->data.shu+p->data.c;p->data.ping=p->data.zong/3;wang=1;printf("=>修改成功!n");elsewrong();void

24、xianshi(Link i)Node *p; int cout=0; p=i->next;if(!p)printf("n=>没有资料可以显示!n"); return;printf(" 显示信息n");xian(); shuchu(); printf("n");while(p) shuchu1(p);p=p->next;xian(); printf("n");void bao(Link i)Node *p; FILE *fp; int flag=1,count=0;fp=fopen("s

25、.txt","wb");/利用二进制进行保存if(fp=NULL)printf("=>提示:打开文件发生错误!n"); exit(1);p=i->next;while(p) if(fwrite(p,sizeof(Node),1,fp)=1) p=p->next;count+;else flag=0;break;if(flag) printf("n-提示:文件保存成功(有%d条文件已经保存)n",count); wang=0;fclose(fp);void pai(Link i)Link ii; Node *

26、p,*rr,*s; int a; if(i->next=NULL)printf("n=>提示:没有资料可以排序n");return; p=i->next; xian();printf("=>1按C语言排序 =>2按数学排序n=>3按英语排序 =>4按总分排序n");xian(); printf("请你选择:"); scanf("%d",&a);switch(a)case 4: ii=(Link)malloc(sizeof(Node);/用于做新的链表 ii->

27、next=NULL; while(p!=NULL) s=(Node*)malloc(sizeof(Node);/新建节点用于保存信息 s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.zong>=p->data.zong) rr=rr->next;/由大到小 if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(i); i->

28、next=ii->next; printf("n=>提示:排序已经完成!n");xianshi(i);break; case 1:ii=(Link)malloc(sizeof(Node);/用于做新的链表 ii->next=NULL; while(p!=NULL)s=(Node*)malloc(sizeof(Node);/新建节点用于保存信息 s->data=p->data;s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.c>=p-&

29、gt;data.c)rr=rr->next;/由大到小if(rr->next=NULL) rr->next=s;else s->next=rr->next; rr->next=s; p=p->next; free(i); i->next=ii->next; printf("n=>提示:排序已经完成!n"); /xianshi(i); break;case 2: ii=(Link)malloc(sizeof(Node);/用于做新的链表 ii->next=NULL; while(p!=NULL)s=(Node*

30、)malloc(sizeof(Node);/新建节点用于保存信息 s->data=p->data; s->next=NULL; rr=ii;while(rr->next!=NULL&&rr->next->data.shu>=p->data.shu) rr=rr->next;/由大到小 if(rr->next=NULL)rr->next=s; else s->next=rr->next;rr->next=s; p=p->next; free(i); i->next=ii->nex

31、t;printf("n=>提示:排序已经完成!n");xianshi(i);break;case 3:ii=(Link)malloc(sizeof(Node);/用于做新的链表 ii->next=NULL; while(p!=NULL) s=(Node*)malloc(sizeof(Node);/新建节点用于保存信息 s->data=p->data; s->next=NULL; rr=ii; while(rr->next!=NULL&&rr->next->data.ying>=p->data.yin

32、g) rr=rr->next;/由大到小 if(rr->next=NULL) rr->next=s; else s->next=rr->next; rr->next=s; p=p->next; free(i); i->next=ii->next; printf("n=>提示:排序已经完成!n"); xianshi(i);break;default :wrong ();getchar();break;wang=1;void tong(Link i)Node *p; int a,b,c,n;p=i->next;i

33、f(!p)printf("=>没有资料可以统计!n"); return; a=b=c=0; printf("请输入分数线:"); scanf("%d",&n);while(p)if(p->data.c>=n) a+; if(p->data.shu>=n) b+;if(p->data.ying>=n) c+;p=p->next;printf(" -统计结果-n");printf(" -n");printf(" 科目 高于%d分人数n

34、",n);printf(" 英语 %dn",c);printf(" 数学 %dn",b);printf(" C语言 %dn",a);printf(" -n");printf("n");void main()Link i; FILE *fp; char jian,ch; int count=0,sel; Node *p,*r;printf(" 学生信息管理系统n"); i=(Node*)malloc(sizeof(Node);/申请空间构建节点i->next=N

35、ULL;/i这时为空 r=i;lp:fp=fopen("s.txt","rb"); if(fp=NULL)printf("=>提示:文件还不存在是否创建?(y/n)n");printf("=>请输入你的选择:"); scanf("%c",&jian); if(jian='Y'|jian='y')fp=fopen("s.txt","wb"); printf("=>创建成功!n");

36、 goto lp;elseexit(0); mima();printf("n=>正在导入记录请稍后n");while(!feof(fp)p=(Node*)malloc(sizeof(Node);if(fread(p,sizeof(Node),1,fp)p->next=NULL; r->next=p; r=p;/将节点挂入连接 count+;fclose(fp);/关闭文件printf("n=>提示:记录导入完毕,共导入%d条记录。n",count);while(1)caidan(); printf("请选择你的操作:"); scanf("%d",&sel);if(sel=0) if(wang=1)getchar(

温馨提示

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

评论

0/150

提交评论