1、按提示输入课程编号,查询对应课程的学生名单及其成绩。(5)统计并输出每个同学已修学分及不及格课程:根据录入的数据进行统计,输出全部学生的已修学分及不及格课程的名称。(6)保存学生信息及其课程成绩并退出:将当前的学生基本资料和课程情况保存到文件,并覆盖原有文件。1.4 开发平台及工具介绍(1)硬件环境: 处理器:Intel Pentium 166或更高 内存:32MB以上 硬盘空间:2G以上 显卡:SVGA显示适配器(2)软件环境: 操作系统:Windows98/Me/2000/XP/2007/Vista/7/8等 2. 系统设计2.1 系统总体结构设计保存学生信息及其课程成绩并退出统计学生已修
2、学分及不及格课程按课程统计学生名单及考试成绩按班统计学生选课情况及考试成绩新增学生信息及其课程成绩加载学生信息及其课程成绩 2.2 系统各个功能模块设计(1)加载成功显示相关信息,并提示加载学生总数系统自动从根文件夹读取文件”stu.txt”,依照程序步骤将学生信息输入到程序(2)学生学号输入“0”返回到主界面在已有加载数据基础上新增学生,依照提示信息依次将学生信息输入到程序(3)输出完毕后自动返回到主界面继续工作基于当前数据,按班级R1R10分类统计并输出学生所有信息到屏幕和文件”case3.txt”(4)输入课程编号,查找出已修该课程所有学生并输出其成绩及重修与否到屏幕和文件”case4.
3、txt”课程编号输入“0”返回到主界面(5)基于当前数据,将每位学生已修课程的学分总和及不及格课程输出到屏幕和文件”case5.txt”(6)保存成功显示相关信息,并提示保存学生总数,最后退出程序将当前数据以与加载相同的格式输出到文件”stu.txt”,并覆盖原本存在的该文件 2.3 数据结构的设计2.3.1学生信息数据结构typedefstruct studentintage,sub,cla; /年龄,选课数量,班级 double poi; /已修学分 char stun15,name30,sex5,dorn10,phon20; /学号,姓名,性别,宿舍号码,短号电话号码 course le
4、s10; /课程信息struct student*next;student;2.3.2课程信息数据结构typedefstruct course char lessonn15,lessonname50,re5; /课程编号,课程名称,是否重修 double textmark,formalmark,mark,point; /考试成绩,平时成绩,综合成绩,学分 restudy res5; /重修情况intrestime; /重修次数course;2.3.3重修情况数据结构typedefstruct restudyint term; /重修学期 double resmark; /重修分数restudy
5、; 2.4 界面设计程序界面应遵循简洁美观、方便使用的原则。2.4.1主界面充分考虑界面易于操作的系统需求,用printf语句构造简单的文字界面,具体主界面设计效果如图所示。2.4.2新增信息界面根据相关的文字提示,用户输入对应信息。 3. 系统实现基于系统需求分析与系统总体设计的结果,本系统采用Code:Blocks12.11软件平台基于C语言实现各模块的功能,下面按照模块的功能划分来分别阐述系统的详细设计和实现过程。3.1头文件:#include stdlib.hstring.h3.2主界面模块功能:功能选择界面输入:用户选择的功能选项编号处理:根据用户选项跳转到相关功能函数输出:相关功能
6、函数的处理或显示界面程序清单:student *insstu(); /加载学生信息及其课程成绩student *inspoint(student *head,student *stud); /插入链表结点void clalesmark(student *head); /按班统计学生选课情况及考试成绩void lesstumark(student *head); /按课程统计学生名单及考试成绩void pointfail(student *head); /统计并输出每个同学已修学分及不及格课程student *adds(student *hd); /新增学生信息及其课程成绩student *sa
7、vestu(student *head); /保存学生信息及其课程成绩int main(void)student *head,*p;intnum,n;int size=sizeof(struct student);head=NULL;printf(tt*欢迎使用教务信息管理系统*);do ntt* -请选择- *ntt* 1、加载学生信息及其课程成绩ttt2、新增学生信息及其课程成绩 *ntt* 3、按班统计学生选课情况及考试成绩tt4、按课程统计学生名单及考试成绩 *ntt* 5、统计并输出每个同学已修学分及不及格课程t6、保存学生信息及其课程成绩并退出*ntt* -0、退出- *nnffl
8、ush(stdin); /清除缓冲区scanf(%d,&n);switch(n)case 1:head=insstu();break;case 3:clalesmark(head);case 4:lesstumark(head);case 5:pointfail(head);case 2:head=adds(head);case 6:savestu(head);default : while(n!=0&n!=6);ntt* -!谢谢使用!- *nreturn 0;3.3加载信息模块从根文件夹加载记录学生信息的文件无将所有学生信息形成链表加载成功情况student *insstu()studen
9、t *p,*hd,*pt;inti,j,n=0; FILE *fp;fp = fopen( stu.txt , r ); /从根目录读取文件int size=sizeof(student);hd=NULL;while(1) p=(student *)malloc(size);fscanf(fp,%sp-stun); /读取学号 if(strcmp(p-stun,0)=0)break; /学号为0返回cla); /读取班级name); /读取姓名sex); /读取性别age); /读取年龄dorn); /读取宿舍号码phon); /读取短号电话号码sub=0;poi=0;for(i=p-sub;
10、ipoi+=p-lesi.point; /将该课程学分加入已修总学分lesi.re); /读取是否重修lesi.re,是)=0)lesi.restime); /读取重修次数for(j=0;jnext=p;next=NULL;加载学生数据成功!共加载%d位学生信息n,n);returnhd;3.4新增信息模块增加学生,并完整录入相关个人信息及选课信息学生信息将所得学生信息插入链表student *adds(student *hd)student *p,*q,*r;inti,j; /hd=inspoint(hd,p); /p-请输入学号(12位数字,返回请输入0):if(strcmp(p-请输入班
11、级号(软件R( )班):请输入姓名:请输入性别:请输入年龄:请输入宿舍号码(5位数字):请输入电话号码(短号):请输入课程编号(6位数字,返回请输入0):请输入课程名称:请输入考试成绩:请输入平时成绩:请输入综合成绩:请输入学分:是否需要重修(输入“是,否”,):请输入重修次数:请输入重修学期:请输入重修成绩:hd=inspoint(hd,p); /插入一个新结点以继续增加学生人数 system(cls /清屏3.5按班级统计模块按班级有序地查看学生的情况按班级R1R10分类统计学生信息输出学生所有信息到屏幕和文件”case3.txt”void clalesmark(student *head
12、) /同时输出数据到屏幕和文件inti,j,k;student *s;case3.txtw /输出文件到根目录if(head=NULL) fprintf(fp,没有信息。nfprintf(fp, 学号姓名性别年龄宿舍号电话号码课程编号课程名称平时成绩考试成绩综合成绩学分是否重修重修次数重修情况n-nfor(i=1;软件R%d班:,i); s=head;while(s!=NULL)if(s-cla=i)%13s %8s %s %d%9s%10sn,s-stun,s-name,s-sex,s-age,s-dorn,s-s- %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %
13、slesj.lessonn,s-lesj.lessonname,s-lesj.formalmark,s-lesj.textmark,s-lesj.mark,s-lesj.point,s-lesj.re); if(strcmp(s-lesj.re, %d lesj.restime);for(k=0;klesj.resk.term,s-lesj.resk.resmark); s=s-next;3.6按课程统计模块按课程查看已修该课的学生的成绩情况课程编号逐个学生查找是否已修该课程输出学生成绩情况到屏幕和文件”case4.txt”voidlesstumark(student *head)inti;c
14、harlessonn15;case4.txtwhile(1)请输入课程编号(返回请输入0):lessonn);if(strcmp(lessonn,ntt 课程名称学号姓名平时成绩考试成绩综合成绩学分是否重修ntt-nfor(i=0;lesi.lessonn,lessonn)=0) /查找该学生是否已修该课tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %snlesi.lessonname,s-lesi.formalmark,s-lesi.textmark,s-lesi.mark,s-lesi.point,s-3.7输出已修学分及不及格课程模块查看所有学生已修学分及不及格课程从头到尾检索每个学生已修学分及不及格课程输出所有学生已修学分及不及格课程到屏幕和文件”case5.txt”void
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1