教务信息管理系统源代码2010.05.20_第1页
教务信息管理系统源代码2010.05.20_第2页
教务信息管理系统源代码2010.05.20_第3页
教务信息管理系统源代码2010.05.20_第4页
教务信息管理系统源代码2010.05.20_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、一、要求教务信息管理系统1、题目描述 设计一个教务信息管理系统,该程序具有以下功能:(1)录入如下信息: 学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。 学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、 学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的 情况。( 2)统计每个学生各门功课的平均成绩, 并按平均成绩从高到低的次序排名输出每个学生各 门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成 绩、平时成绩、综合成绩)。( 3)统计并输出各班各门功课的平均成绩和总平均成绩。( 4)统计并输出每个同学已修

2、学分。( 5)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。( 6)教务信息其它方面的统计(自行确定,加分项)。2、题目要求(1)按照分析、设计、编码、调试和测试过程完成应用程序;(2)学习并使用流程图等工具,并在撰写论文中使用;(3)程序的各项功能在程序运行时,以菜单方式选择并执行;(4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结 束方式等(5)所有的信息存储在文件中,并实现文件读写操作。3、提示(1)学生基本信息可以设计一个结构体类型(2)多个学生基本信息可以以数组或链表来存储。二、代码:/# #/# #include<stdio.h>#

3、include<stdlib.h>#include<string.h>#include<windows.h>#include<math.h>#define N 500/ 定义班级的个数/# 结构体的定义 # /# # struct again/ 重修结构体char term3;/ 重修学期float total;/ 重修成绩 ;struct course/ 课程结构体char num10;/ 课程编号char name20;/ 课程名称float final;/考试成绩float performance;/ 平时成绩float total;/综合

4、成绩int credit;/学分Char re5;/是否重修 PaSS或failestruct again ag5;/ 重修情况 zui do wu ci int timeS;/重修次数;StruCt Student/学生结构体int ClaSS;/ 班级Char num12;/ 学号Char name20;/ 姓名Char Sex5;/ 性别 int age;/ 年龄char room20;/ 宿舍号码char phone15;/ 电话号码int subject;/输入几门课程struct course cou10;/ 课程及成绩struct student *next;/ 下一个学生;st

5、ruct score/课程成绩结构体char name20;/ 课程名float final; / 考试成绩float performance;/ 平时成绩float total;/ 综合成绩;struct ave/ 学生平均成绩结构体int Class;/ 班级char number12;/ 学号char name20;/ 姓名float studentave;/ 平均成绩int subjects;/几门课程struct score s10;/课程及成绩struct ave *next;/ 下一个学生;/# 函数声明 # /# #struct student *creat();/构建学生成绩

6、链表void write(struct student *head);/ 写入磁盘文件void read(struct student*head);/从文本输出内容struct ave *studentave(struct student *head);/构建学生平均成绩链表void sequence(struct ave *heads);/ void classave(struct student *head);/ 绩平均成绩从高到低排序输出输出各班各门功课的平均成绩和总平均成void credit(struct student *head);/ void failstudent(struc

7、t student *head);/输出每个同学已修学分列出不及格学生清单struct student *out();/把文件信息读入电脑但不显示输出学生总数void conclude(struct student*head);/struct ave *insert(struct ave *heads,struct ave *charu);/ 按大小顺序插入(为 了排序)写入磁盘文件删除信息函数struct ave *sort(struct ave *head); void writeshan(struct student *head);/ struct student*del(struct

8、student*head);/处理多余信息函数从文件中输出数据从文件中输出数据按学号查找学生信息void shan();/ 删除所有信息函数 struct student*chuli(struct student*head);/ struct student *out2();void shan2();void read2(struct student *head );/ struct student *out3();void read3(struct student *head );/ void chazhao(struct student*head);/# 主函数#/# 分界线# void

9、main()/ 主函数 int function,con=1;char function14;struct student *head,*head2;struct ave *heads; head=NULL;While(CO n=V)Il当COn等于1时,执行循环体 printf("=n"); printf(" = 欢迎进入教务信息管理系统=n");printf("printf(" =n");/printf("01输入学生基本信息LL''printf(" =n");printf(

10、"02输出全部基本信息LL''printf(" =n");/printf("03输出学生排名信息LL''printf(" =04输出各班成绩信息LL''=n");=n");=n");=n");=n");printf("=n");printf(" = 05 输 出 学 生 总 的 学 分 =n");/printf("= =n");printf(" = 06 列 出 不 及 格 的

11、学 生 =n");/printf("= =n");printf(" = 07 按 学号 查找 学生 信息 =n");printf("= =n");printf(" = 08 按 条 件 删 学 生 信 息 =n");/printf("= =n");printf(" = 09 删 除 所 有 学 生 信 息 =n");printf("= =n");printf(" = 10 复 制 现 有 学 生 信 息 =n");/print

12、f("= =n");printf(" = 11 输 出 已 复 制 的 信 息 =n");printf("= =n");printf(" = 12 退出 =n");printf(" =n");/ / 主界面printf(" =请 输 入 数 字 选 择 相 应 的 操 作=n");printf("=n");function10=getchar();function11=getchar();function12=getchar();fflush(stdin)

13、;/ 清除缓存 if(function10>='0'&&function10<='1'&&function11>='0'&&function11<='9'&&fun CtiO n12='n')function=(function10-48)*10+(function11-48);switCh(funCtiOn)case 1:head=creat();write(head);break;/录入信息,写入磁盘文件case 2:hea

14、d=out();read(head);break;/输出文本的内容case 3:head=out();heads=studentave(head);sequence(heads);break;/ 按平均成绩输出各班各门功课的平均成绩及总平均统计并输出每个同学的已修学分列出不及格学生清单 输出学生个数 删除学生信息从高到输出学生成绩case 4:head=out();classave(head);break;/ 成绩case 5:head=out();credit(head);break;/ case 6:head=out();failstudent(head);break;/ case 7:h

15、ead=out(); chazhao(head);break;/ case 8:head=out();head=del(head);break;/case 9:shan();break; / 删除所有信息case 10:head=out();head=chuli(head);writeshan(head);head=out();read2(head);break;/ 复制信息case 11:head=out2();read2(head);break;/ 打开复制信息case 12:exit(0);defaul: system("cls");printf("nnnn

16、n输入错误 nnnnnnnnnnnn");/ 出错printf( function=0;"printf("* 此操作已结束,若要继续操作其他功能,请按回车键,回到主菜 单*n"); 是否退出程序printf(" n");_fflush(stdin);/清除缓存getchar();fflush(stdin);/清除缓存system("cls");/# #/# 输入信息#struct student *creat()/构建学生成绩链表struct student*head=NULL, *stu,*p1;/声明学生结构体

17、指针int j=0,i=0,con=1,n=0,k;char c4;system("cls");stu=(struct student*)malloc(sizeof(struct student);/ 开辟空间printf("n# 现在开始输入学生基本信息#nn");/ 开始输入学生信息while(con=1)printf("nnnnnnnn 真的要输入信息吗?如果不想输入,请输入 0 , 否则输入其它任一数字 ");scanf("%d",&k);if(k=0) return(head);system(&q

18、uot;cls");printf("n01 、请输入你的班级(数字) :");*printf("n*n");printf(" 请注意: nn 第一位代表年级 ;第二位代表专业 ( 1、网络工程 2 、 软件工程 nn 3 、计算机科学与技术 4 、地理信息系统 5、教技 6 、工业工程 7、信管 nn8、测绘 9 、软件工程(软件学院);第三位代表班级! nn"); printf("如 112 表示 09网络工程( 2 )班 n");printf("n*n");*scanf("

19、;%d",&stu->Class);/ 班级 printf("n");printf("02 、请输入你的学号(最多 11位符号): "); scanf("%s",stu->num);/ 学号 printf("n");printf("03 、请输入你的性别 , 男 或 女: "); scanf("%s",stu->sex);/ 性别 printf("n");While(StrCmp("男",stu-&g

20、t;sex)!=O)&&(StrCmp("女",stu->sex)!=O)printf(" 输入错误 , 请重新输入: "); sCanf("%s",stu->sex);/性别printf("n");printf("04 、请输入你的年龄: ");sCanf("%d",&stu->age);/ 年龄 printf("n");printf("05 、请输入你的姓名 ( 最多 19位符号): ");

21、 sCanf("%s",&stu->name);/ 姓名 printf("n");printf("06 、请输入你的宿舍号码(最多19位符号): ");sCanf("%s",stu->room);/ 宿舍号码printf("n"); printf("07 、请输入你的电话号码(最多 14位符号): "); scanf("%s",stu->phone);/ 电话号码printf("n");printf("

22、;08 、请输入你所选的课程的门数: ");scanf("%d",&stu->subject);/ 输入学生选修的课程数 printf("n");for(j=0;jvstu->subject;j+)输入 M门课程信息printf("09 、输入课程编码(最多 10): ");scanf("%s",stu->couj.num);/ 课程编号printf("n");printf("10 、输入课程名称(最多 20位): ");scanf(&qu

23、ot;%s",stu->);/ 课程名称printf("n");printf("11 、输入学生的考试成绩: ");scanf("%f",&stu->couj.final);/考试成绩printf("n");printf("12 、输入学生的平时成绩: ");scanf("%f",&stu->couj.performance);/平时成绩printf("n");printf("13 、

24、输入学生的综合成绩: "); scanf("%f",&stu->couj.total);/总成绩printf("n");printf("14 、输入学生的已修的总学分: ");scanf("%d",&stu->couj.credit);/学分printf("n");if(stu->couj.totalv60.0)&&(stu->couj.total>0) strcpy(stu->couj.re,"fail&q

25、uot;);else strcpy(stu->couj.re,"pass");/是否通过考试if(strcmp("fail",stu->couj.re)=0)printf("15、学生没考过这门课 n");printf("16、请输入重修次数: ");scanf("%d",&stu->couj.times); printf("n");for(i=0;ivstu->couj.times;i+)3个字符,按先后顺序)重修学期重修分数:")

26、;printf("17 、输入重修的学期(不超过 scanf("%s",stu->couj.agi.term);/ printf("n");printf("18、输入考试分数 :");scanf("%f",&stu->couj.agi.total);/ printf("n");printf("19开辟空间;否则请输入 1 :");、如果输入的信息正确,请输入 y ,否则请输入 n : ");printf("n");p

27、rintf("n");printf("n");scanf("%s",c);printf("n");if(strcmp(c,"y")=0)n+;if(n=1)head=stu;elsep1->next=stu;p1=stu;/ 构建学生链stu=(struct student*)malloc(sizeof(struct student);/printf("20 、如果停止输入学生基本信息,请输 0 printf("n");printf("n"

28、);printf("n");printf("n");scanf("%d",&con);/ 是否结束输入学生信息printf("n");system("cls");/ce ship1=NULL; /ceshistu=NULL;return(head);/ 返回头指针/# 三 # /# 保存信息 #void write(struct student *head)/写入磁盘文件FILE *fp;struct student *stu;stu=head;system("cls"

29、;);fp=fopen(" 学生基本信息 .txt","a+");/ 打开文本if(head=NULL);elsewhile(stu!=NULL)fwrite(stu,sizeof(struct student),1,fp); stu=stu->next;/ 下一个学生fclose(fp);/ 关闭文件/# 四 # /# 输出学生基本信息 # void read(struct student *head )/ 从文件中输出数据struct student*stu;int n=0,i,j,k,l,f;system("cls");s

30、tu=head;if(head=NULL)printf("nnnnnnnn 对不起,还没有学生的信息,请问是否输入新信息,若要 请输入 1';否则请输入 0'nn");scanf("%d",&k);if(k=1)head=creat();write(head); system("cls"); printf("nnnnnnnnnn 入 1 否则输入任一数字 nn"); scanf("%d",&f);信息输入完毕,请问是否马山打开,若是请输if(f=1)head=ou

31、t();read(head);else system("cls");return;else system("cls");return;printf("n 以下是所有学生的个人基本信息以及具体选课信息 n");printf(*H);H*while(stu!=NULL)if(stu->Class<N&&stu->Class>0)n+;printf("n");Prin tf("+ 第 c位学生的信息 +n",n);Printf("n");Pr

32、intf(" 个人基本信息: n");Printf("nn");Printf("班级:%-5d 学号:%-11s宿舍号码:-19s性别:-5snn 年龄:%-5d 姓名:%-11s电话号码:%-19s科数: %-5dnn",stu->Class ,stu->num ,stu->room ,stu->sex ,stu->age ,stu->name , stu->Phone ,stu->subject );for(j=0,l=1;j<stu->subject;j+,l+)Pri

33、ntf("n");Printf("选课具体信息:"); Prin tf("#第 科 #n",l);Printf("nn");Prin tf("课程编号:-19s课程名称:%-19s学分: %-dnn",stu->couj.num,stu->,stu->couj.credit);Printf("考试成绩:%-19.1f平时成绩:%-19.1f综合: %-.1fnn",stu->couj.final,stu->couj.Perfor

34、mance,stu->couj.total);Printf("考试情况(若是 fail 则需重修):sn",stu->couj.re);Printf("nn");if(strcmP("fail",stu->couj.re)=0)Printf("重修次数:%-20dnn",stu->couj.times);for(i=0;i<stu->couj.times;i+)pr in tf("重修学期:-20s重修分数:-20.1fn",stu->couj.agi.

35、term,stu->couj.agi.total);stu=stu->next;Printf("");Printf("共 有 %2d 位 学 生 的 信 息,已 全 部 输 出n",n);/# 五# /# 统计个人平均 #构建学生平均成绩链表struct ave *studentave(struct student *head)/struct student *p1;struct ave *s,*heads,*p;struct ave *pp1;/ ceshifloat a=0,sum=0;int i=0,n=1,l=0,f=0;int k;

36、/ceshisystem("cls"); p1=head; if(head=NULL) printf("nnnnnnnn 对不起,还没有学生的信息,请问是否输入新信息,若要 请输入 1 ;否则请输入任一数字 nn");scanf("%d",&l);if(l=1) head=creat();write(head); printf("nnnnnnnnnn 信息输入完毕,请问是否马山统计并输出学生的 排名信息,若是请输入 1 否则输入任一数字 nn");scanf("%d",&f);

37、if(f=1)head=out();heads=studentave(head);sequence(heads); else _exit(0);else system("cls");return(heads);elseprintf("= =n");while(p1!=NULL) if(p1->Class<N&&p1->Class>0) /ce shi yu yu yong/ 神奇之比,搞得我找了好几个小时才想到,哈哈s=(struct ave*)malloc(sizeof(struct ave);/开辟空间sum=

38、0;for(i=0;i<p1->subject;i+) sum=sum+p1->coui.total;/ 各门课程总成绩相加 s->si.final=p1->coui.final;s->si.performance=p1->coui.performance; s->si.total=p1->coui.total;printf(" 考试成绩: %-9.1f 平时成绩: %-9.1f 综合成 绩: %-9.1fn",s->si.final,s->si.performance,s->si.total);/ce

39、shistrcpy(s->,p1->);/ 把课程结构体的考试成绩, 平时成绩,总成绩,课程名放到平均分结构体中 a=sum/p1->subject;/ 每个学生的平均分 printf(" 平均分 :%-9.1f",a);/ce shi s->studentave=a;s->subjects=p1->subject; s->Class=p1->Class;strcpy(s->number,p1->num); strcpy(s->name,p1->name);/ 把学生结构

40、体的班级,学号,姓名放到平均分 结构体中if(n=1)heads=s; else p->next=s; p=s;/ 构建平均成绩链表 n+; p1=p1->next;/ 下一个学生 p->next=NULL; return(heads);/# 六 # /# 按平均分排名次 #struct ave *sort(struct ave *heads)/排大小顺序函数 struct ave *p1,*p2; p1=p2=heads; if(heads->next=NULL) return(heads);p2=p2->next; p1->next=NULL;p1=p2

41、; while(p2->next!=NULL) p2=p2->next;p1->next=NULL;heads=insert(heads,p1);p1=p2;heads=insert(heads,p1);return(heads);/# 七 # /# 按顺序插入 #struct ave *insert(struct ave *heads,struct ave *charu)/按大小顺序插入(为了排序)struct ave *p0,*p1,*p2;int i;/ceship1=heads;p0=charu;if(heads=NULL)heads=p0; p0->next=

42、NULL;else while(p0->studentave<p1->studentave)&&(p1->next!=NULL) p2=p1; p1=p1->next; if(p0->studentave>=p1->studentave) if(heads=p1) heads=p0;else p2->next=p0;p0->next=p1; else p1->next=p0; p0->next=NULL; return(heads);/# 八 # /# 输出大小顺序的信息 #void sequence(st

43、ruct ave *heads)/ 平均成绩从高到低排序输出struct ave *s,*p1;int i=0,n=1,k=0;s=heads;system("cls");/shan si ni!if(heads=NULL)printf(" 没有平均成绩信息 n");return;elseheads=sort(heads);system("cls");p1=heads;while(p1!=NULL)if(n<=9)Printf("第 0%(名:n", n);输出名次elsePrintf("第 (名:

44、n",n);Printf("n");Printf("班级:%-10d学号:%-16s姓名:%-16s平均成绩:%-7.1f科目:%-4dn",p1->Class,p1->number,p1->name,p1->studentave,p1->subjects);Printf("n");for(i=0;i<p1->subjects;i+)Printf("课名:%-10s 考试:%-15.1f 平时:%-15.1f 综合成绩:-9.1fn",p1->si. nam

45、e,p1->si.fi nal,p1->si.performa nce,p1->si.total) printf("n");printf(H*n");printf("n*n");/zengjiap1=p1->next;/ 下一个平均成绩 n+;/# 九 # /# 输出各班各科平均成绩 #void classave(struct student *head)/输出各班各门功课的平均成绩和总平均成绩int cN=0,i,j;struct student *s,*p=NULL;float sum8=0,a8,av=0,b=0;

46、if(head=NULL)printf("nnnn 没有学生信息 nnnnnn");elsefor(i=1;i<N;i+)/有( N-1 )个班级s=head; while(s!=NULL)if(s->Class=i)/ 寻找班级相同的学生ci+; p=s;for(j=0;j<s->subject;j+) sumj=sumj+s->couj.total;/i 班的各门功课总成绩相加 s=s->next;if(p!=NULL)*#* ",i);班每科平均成绩与总平均成绩printf("*# %dprintf(H*nn&q

47、uot;);/zengjia课程名称班各门功课的平均分printf(" 班级 平均分 n");for(j=0;j<p->subject;j+) aj=sumj/ci;/i sumj=0;printf("n");if(i<=9) printf(" 00%-22d %-31s%-9.2fn",i,p->,aj);else if(i<100)printf(" 0%-23d %-31s%-9.1fn",i,p->,aj); elseprintf(&qu

48、ot; %-24d %-31s%-9.1fn",i,p->,aj);av=av+aj;/i 班各门功课的平均分相加b=av/p->subject;/i 班总平均分printf("= =n");printf("n 该班学生总数为 :%-10d 班级总分为 :%-9.1f 总平均成绩是: %-9.1fn",ci,av,b);p=NULL;av=0;/# 十 # /# 统计并输出每位学生的已修学分#void credit(struct student *head)/输出每个同学已修学分struct student *p;

49、没有学生信息学生已修学分 n");/ 学生已修学分printf(int credit=0,i;system("cls");p=head;if(head=NULL)printf("nnnnnnnnnn");return;else if(p->Class<N&&p->Class>0) printf("n");printf("printf("n");printf(" 学号 学生姓名 已修 学分 n");else printf("nnnnnnnnnn还 没 有 学 生信 息,故 没 有 学 分 nnnnnnnnnnn");return; while(p!=NULL)if(p-

温馨提示

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

评论

0/150

提交评论