1、精品文档就在这里-各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-一、要求教务信息管理系统1、题目描述 设计一个教务信息管理系统,该程序具有以下功能: (1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。(2)统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩)。(3)统
2、计并输出各班各门功课的平均成绩和总平均成绩。(4)统计并输出每个同学已修学分。(5)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。(6)教务信息其它方面的统计(自行确定,加分项)。2、题目要求 (1)按照分析、设计、编码、调试和测试过程完成应用程序; (2)学习并使用流程图等工具,并在撰写论文中使用; (3)程序的各项功能在程序运行时,以菜单方式选择并执行; (4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等 (5)所有的信息存储在文件中,并实现文件读写操作。3、提示 (1)学生基本信息可以设计一个结构体类型 (2)多个学生基本信息可以以数组或链表
3、来存储。二、代码:/#/#include#include#include#include#include#define N 500/定义班级的个数/#结构体的定义#/#struct again/重修结构体char term3;/重修学期float total;/重修成绩;struct course/课程结构体char num10;/课程编号char name20;/课程名称float final;/考试成绩float performance;/平时成绩float total;/综合成绩int credit;/学分char re5;/是否重修pass或failestruct again ag5;
4、/重修情况zui do wu ciint 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;/下一个学生;struct score/课程成绩结构体char name20;/课程名float final; /考试成绩float performance;/
5、平时成绩float total;/综合成绩;struct ave/学生平均成绩结构体int Class;/班级char number12;/学号char name20;/姓名float studentave;/平均成绩int subjects;/几门课程struct score s10;/课程及成绩struct ave *next;/下一个学生; /#函数声明#/# struct student *creat();/构建学生成绩链表void write(struct student *head);/写入磁盘文件void read(struct student*head);/从文本输出内容str
6、uct ave *studentave(struct student *head);/构建学生平均成绩链表 void sequence(struct ave *heads);/平均成绩从高到低排序输出void classave(struct student *head);/输出各班各门功课的平均成绩和总平均成绩void credit(struct student *head);/输出每个同学已修学分void failstudent(struct student *head);/列出不及格学生清单struct student *out();/把文件信息读入电脑但不显示 void conclude
7、(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 student*head);/删除信息函数 void shan();/删除所有信息函数 struct student*chuli(struct student*head);/处理多余信
8、息函数 struct student *out2(); void shan2();void read2(struct student *head );/从文件中输出数据 struct student *out3(); void read3(struct student *head );/从文件中输出数据void chazhao(struct student*head);/按学号查找学生信息 /#主函数#/#分界线# void main()/主函数int function,con=1;char function14;struct student *head,*head2;struct ave *
9、heads;head=NULL;while(con=1)/当con等于1时,执行循环体printf( =n);printf( = 欢迎进入教务信息管理系统 =n);printf( =n);printf( = 01 输 入 学 生 基 本 信 息 =n);/printf( = =n);printf( = 02 输 出 全 部 基 本 信 息 =n);printf( = =n);printf( = 03 输 出 学 生 排 名 信 息 =n);/printf( = =n);printf( = 04 输 出 各 班 成 绩 信 息 =n);printf( = =n);printf( = 05 输 出
10、 学 生 总 的 学 分 =n);/printf( = =n);printf( = 06 列 出 不 及 格 的 学 生 =n);/printf( = =n);printf( = 07 按 学号 查找 学生 信息 =n);printf( = =n);printf( = 08 按 条 件 删 学 生 信 息 =n);/printf( = =n);printf( = 09 删 除 所 有 学 生 信 息 =n);printf( = =n);printf( = 10 复 制 现 有 学 生 信 息 =n);/printf( = =n);printf( = 11 输 出 已 复 制 的 信 息 =n)
11、;printf( = =n);printf( = 12 退 出 =n);printf( =n);/主界面printf( = 请 输 入 数 字 选 择 相 应 的 操 作 =n);printf( =n);function10=getchar();function11=getchar();function12=getchar();fflush(stdin);/清除缓存 if(function10=0&function10=0&function11Class);/班级printf(n); printf(02、请输入你的学号(最多11位符号):);scanf(%s,stu-num);/学号print
12、f(n); printf(03、请输入你的性别, 男 或 女:);scanf(%s,stu-sex);/性别printf(n); while(strcmp(男,stu-sex)!=0)&(strcmp(女,stu-sex)!=0)printf(输入错误,请重新输入:); scanf(%s,stu-sex);/性别 printf(n); printf(04、请输入你的年龄:);scanf(%d,&stu-age);/年龄printf(n); printf(05、请输入你的姓名(最多19位符号):);scanf(%s,&stu-name);/姓名 printf(n); printf(06、请输入你
13、的宿舍号码(最多19位符号):);scanf(%s,stu-room);/宿舍号码printf(n); printf(07、请输入你的电话号码(最多14位符号):);scanf(%s,stu-phone);/电话号码printf(n); printf(08、请输入你所选的课程的门数:);scanf(%d,&stu-subject);/输入学生选修的课程数printf(n); for(j=0;jsubject;j+)/输入M门课程信息 printf(09、输入课程编码(最多10):);scanf(%s,stu-couj.num);/课程编号printf(n); printf(10、输入课程名称(
14、最多20位):);scanf(%s,stu-couj.name);/课程名称printf(n); printf(11、输入学生的考试成绩:);scanf(%f,&stu-couj.final);/考试成绩printf(n); printf(12、输入学生的平时成绩:);scanf(%f,&stu-couj.performance);/平时成绩printf(n); printf(13、输入学生的综合成绩:);scanf(%f,&stu-couj.total);/总成绩printf(n); printf(14、输入学生的已修的总学分:);scanf(%d,&stu-couj.credit);/学分
15、printf(n); if(stu-couj.totalcouj.total0) strcpy(stu-couj.re,fail); 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;icouj.times;i+)printf(17、输入重修的学期(不超过3个字符,按先后顺序):); scanf(%s,stu-couj.agi.term)
16、;/重修学期 printf(n); printf(18、输入考试分数:); scanf(%f,&stu-couj.agi.total);/重修分数 printf(n); printf(19、如果输入的信息正确,请输入 y ,否则请输入 n :);printf(n); printf(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);/开
17、辟空间printf(20、如果停止输入学生基本信息,请输 0 ;否则请输入 1 :);printf(n); printf(n); printf(n); printf(n); scanf(%d,&con);/是否结束输入学生信息printf(n); system(cls); /ce shi p1=NULL; /ceshistu=NULL;return(head);/返回头指针/# 三 #/#保存信息#void write(struct student *head)/写入磁盘文件FILE *fp;struct student *stu;stu=head; system(cls);fp=fopen(
18、学生基本信息.txt,a+);/打开文本if(head=NULL);else while(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);stu=head;if(head=NULL) printf(nnnnnnnn对不起,还没有学生的信息,请问是否输入新信息,
19、若要请输入1;否则请输入0nn);scanf(%d,&k);if(k=1)head=creat();write(head);system(cls);printf(nnnnnnnnnn 信息输入完毕,请问是否马山打开,若是请输入 1 否则输入任一数字nn); scanf(%d,&f);if(f=1)head=out();read(head);else system(cls);return;else system(cls);return; printf(n 以下是所有学生的个人基本信息以及具体选课信息n);printf(*);while(stu!=NULL)if(stu-ClassClass0)n
20、+;printf(-n);printf(+第%d位学生的信息+n,n); printf(-n); printf(个人基本信息: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;jsubject;j+,l+)printf(-n);printf(选课具体信息:);pri
21、ntf( #第%d科#n,l);printf(_ _nn); printf( 课程编号:%-19s课程名称:%-19s学分:%-dnn,stu-couj.num,stu-couj.name,stu-couj.credit);printf( 考试成绩:%-19.1f平时成绩:%-19.1f综合:%-.1fnn,stu-couj.final,stu-couj.performance,stu-couj.total);printf(考试情况(若是fail则需重修):%sn,stu-couj.re);printf(_nn);if(strcmp(fail,stu-couj.re)=0)printf( 重修
22、次数:%-20dnn,stu-couj.times);for(i=0;icouj.times;i+)printf( 重修学期:%-20s重修分数:%-20.1fn,stu-couj.agi.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; /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