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

下载本文档

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

文档简介

一、要求教务信息管理系统1、题目描述 设计一个教务信息管理系统,该程序具有以下功能: (1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。(2)统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩、平时成绩、综合成绩)。(3)统计并输出各班各门功课的平均成绩和总平均成绩。(4)统计并输出每个同学已修学分。(5)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。(6)教务信息其它方面的统计(自行确定,加分项)。2、题目要求 (1)按照分析、设计、编码、调试和测试过程完成应用程序; (2)学习并使用流程图等工具,并在撰写论文中使用; (3)程序的各项功能在程序运行时,以菜单方式选择并执行; (4)要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式及结束方式等 (5)所有的信息存储在文件中,并实现文件读写操作。3、提示 (1)学生基本信息可以设计一个结构体类型 (2)多个学生基本信息可以以数组或链表来存储。二、代码:/#/#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;/重修情况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;/平时成绩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);/从文本输出内容struct 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(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);/处理多余信息函数 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 *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 输 出 学 生 总 的 学 分 =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);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);/学号printf(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、请输入你的宿舍号码(最多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、输入课程名称(最多20位):);scanf(%s,);/课程名称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);/学分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);/重修学期 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);/开辟空间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(学生基本信息.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对不起,还没有学生的信息,请问是否输入新信息,若要请输入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+;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(选课具体信息:);printf( #第%d科#n,l);printf(_ _nn); printf( 课程编号:%-19s课程名称:%-19s学分:%-dnn,stu-couj.num,,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( 重修次数:%-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,&f);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-ClassClass0) /ce shi yu yu yong /神奇之比,搞得我找了好几个小时才想到,哈哈 s=(struct ave*)malloc(sizeof(struct ave);/开辟空间sum=0; for(i=0;isubject;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);/ceshi strcpy(,);/把课程结构体的考试成绩,平时成绩,总成绩,课程名放到平均分结构体中 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);/把学生结构体的班级,学号,姓名放到平均分结构体中 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;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=NULL;elsewhile(p0-studentavestudentave)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-studentave=p1-studentave)if(heads=p1)heads=p0;elsep2-next=p0;p0-next=p1;elsep1-next=p0;p0-next=NULL;return(heads);/# 八

温馨提示

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

评论

0/150

提交评论