收藏 分销(赏)

教务信息综合管理系统优秀课程设计优质报告.docx

上传人:a199****6536 文档编号:2797144 上传时间:2024-06-06 格式:DOCX 页数:27 大小:174.48KB
下载 相关 举报
教务信息综合管理系统优秀课程设计优质报告.docx_第1页
第1页 / 共27页
教务信息综合管理系统优秀课程设计优质报告.docx_第2页
第2页 / 共27页
教务信息综合管理系统优秀课程设计优质报告.docx_第3页
第3页 / 共27页
教务信息综合管理系统优秀课程设计优质报告.docx_第4页
第4页 / 共27页
教务信息综合管理系统优秀课程设计优质报告.docx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、高级语言程序设计课程设计教务信息管理系统题 目:班 级: 软件R7班学生学号:31001015学生姓名: 麦建波指导老师: 姚金涛 提交时间:5月6日华南农业大学 软件学院教务信息管理系统 1. 系统分析 1.1 问题描述本程序为教务信息管理系统,经过输入学生相关信息,对数据进行处理和统计,并按需要输入统计处理后数据到文件中。 1.2 系统功效(1)录入以下信息:学生基础信息:如学号、姓名、性别、年纪、宿舍号码、电话号码等;课程基础信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、 学分、重修否等。假如重修,需要考虑重修学期、重修成绩,而且要考虑数次重修情况。(2)录入选课信息(3)录入

2、学生成绩(4)按班统计学生选课情况及考试成绩(5)按课程统计学生名单及考试成绩(6)统计并输出每个同学已修学分及不及格课程 1.3 功效需求描述:(1)加载学生信息及其课程成绩:从文件录入学生基础资料和课程情况,并覆盖原有数据。(2)新增学生信息及其课程成绩:按要求录入学生基础资料和课程情况,经过提醒信息逐步操作。(3)按班统计学生选课情况及考试成绩:依据录入数据,以班为单位逐一输出选课情况及对应成绩。(4)按课程统计学生名单及考试成绩:按提醒输入课程编号,查询对应课程学生名单及其成绩。(5)统计并输出每个同学已修学分及不及格课程:依据录入数据进行统计,输出全部学生已修学分及不及格课程名称。(

3、6)保留学生信息及其课程成绩并退出:将目前学生基础资料和课程情况保留到文件,并覆盖原有文件。1.4 开发平台及工具介绍(1)硬件环境:u 处 理 器:Intel Pentium 166或更高u 内 存:32MB以上u 硬盘空间:2G以上u 显 卡:SVGA显示适配器(2)软件环境:u 操作系统:Windows98/Me/XP/Vista/7/8等 2. 系统设计 2.1 系统总体结构设计教务信息管理系统保留学生信息及其课程成绩并退出统计学生已修学分及不及格课程按课程统计学生名单及考试成绩按班统计学生选课情况及考试成绩新增学生信息及其课程成绩加载学生信息及其课程成绩 2.2 系统各个功效模块设计

4、(1)加载成功显示相关信息,并提醒加载学生总数系统自动从根文件夹读取文件”stu.txt”,依据程序步骤将学生信息输入到程序加载学生信息及其课程成绩(2)学生学号输入“0”返回到主界面在已经有加载数据基础上新增学生,依据提醒信息依次将学生信息输入到程序新增学生信息及其课程成绩(3)输出完成后自动返回到主界面继续工作基于目前数据,按班级R1R10分类统计并输出学生全部信息到屏幕和文件”case3.txt”按班统计学生选课情况及考试成绩(4)输入课程编号,查找出已修该课程全部学生并输出其成绩及重修是否到屏幕和文件”case4.txt”课程编号输入“0”返回到主界面按课程统计学生名单及考试成绩(5)

5、基于目前数据,将每位学生已修课程学分总和及不及格课程输出到屏幕和文件”case5.txt”输出完成后自动返回到主界面继续工作统计学生已修学分及不及格课程(6)保留成功显示相关信息,并提醒保留学生总数,最终退出程序将目前数据以和加载相同格式输出到文件”stu.txt”,并覆盖原本存在该文件保留学生信息及其课程成绩并退出 2.3 数据结构设计2.3.1学生信息数据结构typedef struct student int age,sub,cla; /年纪,选课数量,班级 double poi; /已修学分 char stun15,name30,sex5,dorn10,phon20; /学号,姓名,性

6、别,宿舍号码,短号电话号码 course les10; /课程信息 struct student*next;student;2.3.2课程信息数据结构typedef struct course char lessonn15,lessonname50,re5; /课程编号,课程名称,是否重修 double textmark,formalmark,mark,point; /考试成绩,平时成绩,综合成绩,学分 restudy res5; /重修情况 int restime; /重修次数course;2.3.3重修情况数据结构typedef struct restudy int term; /重修学期

7、 double resmark; /重修分数restudy; 2.4 界面设计程序界面应遵照简练美观、方便使用标准。2.4.1主界面充足考虑界面易于操作系统需求,用printf语句结构简单文字界面,具体主界面设计效果图所表示。2.4.2新增信息界面依据相关文字提醒,用户输入对应信息。 3. 系统实现基于系统需求分析和系统总体设计结果,本系统采取Code:Blocks12.11软件平台基于C语言实现各模块功效,下面根据模块功效划分来分别叙述系统具体设计和实现过程。3.1头文件:#include #include #include 3.2主界面模块功效:功效选择界面输入:用户选择功效选项编号处理:

8、依据用户选项跳转到相关功效函数输出:相关功效函数处理或显示界面程序清单:student *insstu(); /加载学生信息及其课程成绩student *inspoint(student *head,student *stud); /插入链表结点void clalesmark(student *head); /按班统计学生选课情况及考试成绩void lesstumark(student *head); /按课程统计学生名单及考试成绩void pointfail(student *head); /统计并输出每个同学已修学分及不及格课程student *adds(student *hd); /新增

9、学生信息及其课程成绩student *savestu(student *head); /保留学生信息及其课程成绩int main(void) student *head,*p; int num,n; int size=sizeof(struct student); head=NULL; printf(tt*欢迎使用教务信息管理系统*); do printf(ntt* -请选择- *n); printf(tt* 1、加载学生信息及其课程成绩ttt2、新增学生信息及其课程成绩 *n); printf(tt* 3、按班统计学生选课情况及考试成绩tt4、按课程统计学生名单及考试成绩 *n); prin

10、tf(tt* 5、统计并输出每个同学已修学分及不及格课程t6、保留学生信息及其课程成绩并退出*n); printf(tt* -0、退出- *nn); fflush(stdin); /清除缓冲区 scanf(%d,&n); switch(n) case 1:head=insstu();break; case 3:clalesmark(head);break; case 4:lesstumark(head);break; case 5:pointfail(head);break; case 2:head=adds(head);break; case 6:savestu(head);break; d

11、efault :break; while(n!=0&n!=6); printf(ntt* -!谢谢使用!- *n); return 0;3.3加载信息模块功效:从根文件夹加载统计学生信息文件输入:无处理:将全部学生信息形成链表输出:加载成功情况程序清单:student *insstu() student *p,*hd,*pt; int i,j,n=0; FILE *fp; fp = fopen( stu.txt , r ); /从根目录读取文件 int size=sizeof(student); hd=NULL; while(1) p=(student *)malloc(size); fsca

12、nf(fp,%s,&p-stun); /读取学号 if(strcmp(p-stun,0)=0)break; /学号为0返回 fscanf(fp,%d,&p-cla); /读取班级 fscanf(fp,%s,&p-name); /读取姓名 fscanf(fp,%s,&p-sex); /读取性别 fscanf(fp,%d,&p-age); /读取年纪 fscanf(fp,%s,&p-dorn); /读取宿舍号码 fscanf(fp,%s,&p-phon); /读取短号电话号码 p-sub=0;p-poi=0; for(i=p-sub;ilesi.lessonn); /读取课程编号 if(strcm

13、p(p-lesi.lessonn,0)=0)break; /课程编号为0返回 fscanf(fp,%s,&p-lesi.lessonname); /读取课程名称 fscanf(fp,%lf,&p-lesi.textmark); /读取考试成绩 fscanf(fp,%lf,&p-lesi.formalmark); /读取平时成绩 fscanf(fp,%lf,&p-lesi.mark); /读取综合成绩 fscanf(fp,%lf,&p-lesi.point); /读取学分 p-poi+=p-lesi.point; /将该课程学分加入已修总学分 fscanf(fp,%s,&p-lesi.re);

14、/读取是否重修 if(strcmp(p-lesi.re,是)=0) fscanf(fp,%d,&p-lesi.restime); /读取重修次数 for(j=0;jlesi.restime;j+) fscanf(fp,%d,&p-lesi.resj.term); /读取重修学期 fscanf(fp,%lf,&p-lesi.resj.resmark); /读取重修成绩 p-sub+; n+; if(n=1) hd=p;pt=p; else pt-next=p;pt=p; pt-next=NULL; printf(加载学生数据成功!共加载%d位学生信息n,n); return hd;3.4新增信息

15、模块功效:增加学生,并完整录入相关个人信息及选课信息输入:学生信息处理:将所得学生信息插入链表输出:无程序清单:student *adds(student *hd) student *p,*q,*r; int i,j; int size=sizeof(student); while(1) p=(student *)malloc(size); /hd=inspoint(hd,p); /p-next=NULL; printf(请输入学号(12位数字,返回请输入0):); scanf(%s,&p-stun); if(strcmp(p-stun,0)=0)break; printf(请输入班级号(软件

16、R( )班):); scanf(%d,&p-cla); printf(请输入姓名:); scanf(%s,&p-name); printf(请输入性别:); scanf(%s,&p-sex); printf(请输入年纪:); scanf(%d,&p-age); printf(请输入宿舍号码(5位数字):); scanf(%s,&p-dorn); printf(请输入电话号码(短号):); scanf(%s,&p-phon); p-sub=0;p-poi=0; for(i=p-sub;ilesi.lessonn); if(strcmp(p-lesi.lessonn,0)=0)break; pri

17、ntf(请输入课程名称:); scanf(%s,&p-lesi.lessonname); printf(请输入考试成绩:); scanf(%lf,&p-lesi.textmark); printf(请输入平时成绩:); scanf(%lf,&p-lesi.formalmark); printf(请输入综合成绩:); scanf(%lf,&p-lesi.mark); printf(请输入学分:); scanf(%lf,&p-lesi.point); p-poi+=p-lesi.point; printf(是否需要重修(输入“是,否”,):); scanf(%s,&p-lesi.re); if(s

18、trcmp(p-lesi.re,是)=0) printf(请输入重修次数:); scanf(%d,&p-lesi.restime); for(j=0;jlesi.restime;j+) printf(请输入重修学期:); scanf(%d,&p-lesi.resj.term); printf(请输入重修成绩:); scanf(%lf,&p-lesi.resj.resmark); p-sub+; hd=inspoint(hd,p); /插入一个新结点以继续增加学生人数 p-next=NULL; system(cls); /清屏 return hd;3.5按班级统计模块功效: 按班级有序地查看学生

19、情况输入:无处理:按班级R1R10分类统计学生信息输出:输出学生全部信息到屏幕和文件”case3.txt”程序清单:void clalesmark(student *head) /同时输出数据到屏幕和文件 int i,j,k; student *s; FILE *fp; fp = fopen( case3.txt , w ); /输出文件到根目录 if(head=NULL) fprintf(fp,没有信息。n);printf(没有信息。n); else fprintf(fp, 学号 姓名 性别 年纪 宿舍号 电话号码 课程编号 课程名称 平时成绩 考试成绩 综合成绩 学分 是否重修 重修次数

20、重修情况n); printf( 学号 姓名 性别 年纪 宿舍号 电话号码 课程编号 课程名称 平时成绩 考试成绩 综合成绩 学分 是否重修 重修次数 重修情况n); printf(-n); fprintf(fp,-n); for(i=1;icla=i) fprintf(fp,%13s %8s %s %d%9s%10sn,s-stun,s-name,s-sex,s-age,s-dorn,s-phon); printf(%13s %8s %s %d%9s%10sn,s-stun,s-name,s-sex,s-age,s-dorn,s-phon); for(j=0;jsub;j+) fprintf(

21、fp, %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s,s-lesj.lessonn,s-lesj.lessonname,s-lesj.formalmark,s-lesj.textmark,s-lesj.mark,s-lesj.point,s-lesj.re); printf( %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s,s-lesj.lessonn,s-lesj.lessonname,s-lesj.formalmark,s-lesj.textmark,s-lesj.mark,s-lesj.point,s-lesj.re); if

22、(strcmp(s-lesj.re,是)=0) fprintf(fp, %d ,s-lesj.restime);printf( %d ,s-lesj.restime); for(k=0;klesj.restime;k+) fprintf(fp,/第%d次:第%d学期,%.1lf分/,k+1,s-lesj.resk.term,s-lesj.resk.resmark); printf(/第%d次:第%d学期,%.1lf分/,k+1,s-lesj.resk.term,s-lesj.resk.resmark); fprintf(fp,n);printf(n); s=s-next; 3.6按课程统计模块

23、功效: 按课程查看已修该课学生成绩情况输入:课程编号处理:逐一学生查找是否已修该课程 输出:输出学生成绩情况到屏幕和文件”case4.txt”程序清单:void lesstumark(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( case4.txt , w ); if(head=NULL) fprintf(fp,没有信息。n);printf(没有信息。n); else while(1) printf(请输入课程编号(返回请输入0):); scanf(%s,&lessonn); if(strcmp(

24、lessonn,0)=0)break; fprintf(fp,ntt 课程名称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修n); printf(ntt 课程名称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修n); fprintf(fp,tt-n); printf(tt-n); s=head; while(s!=NULL) for(i=0;isub;i+) if(strcmp(s-lesi.lessonn,lessonn)=0) /查找该学生是否已修该课 fprintf(fp,tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %sn

25、,s-lesi.lessonname,s-stun,s-name,s-lesi.formalmark,s-lesi.textmark,s-lesi.mark,s-lesi.point,s-lesi.re); printf(tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %sn,s-lesi.lessonname,s-stun,s-name,s-lesi.formalmark,s-lesi.textmark,s-lesi.mark,s-lesi.point,s-lesi.re); break; s=s-next; fprintf(fp,n); printf

26、(n); 3.7输出已修学分及不及格课程模块功效: 查看全部学生已修学分及不及格课程输入:无处理:从头到尾检索每个学生已修学分及不及格课程 输出:输出全部学生已修学分及不及格课程到屏幕和文件”case5.txt”程序清单:void pointfail(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( case5.txt , w ); if(head=NULL) fprintf(fp,没有信息。n);printf(没有信息。n); else fprintf(fp,tt 学号 姓名 班级 已修学分 不及格

27、课程n);printf(tt 学号 姓名 班级 已修学分 不及格课程n); fprintf(fp,tt-n);printf(tt-n); s=head; while(s!=NULL) fprintf(fp,tt%11s %8s %d %.1lf ,s-stun,s-name,s-cla,s-poi); printf(tt%11s %8s %d %.1lf ,s-stun,s-name,s-cla,s-poi); for(i=0;isub;i+) if(s-lesi.marklesi.lessonname);printf(%s ,s-lesi.lessonname); fprintf(fp,n)

28、;printf(n); s=s-next; 3.8保留信息模块功效:保留目前学生信息输入:无处理:将原有学生信息及新增学生信息写出到根目录文件,并覆盖原来文件输出:保留成功情况程序清单:student *savestu(student *head) student *p; int i,j,n=0; FILE *fp; fp = fopen( stu.txt , w ); /写出到根文件夹文件,并覆盖原有文件 p=head; while(p!=NULL) fprintf(fp,%sn,p-stun); if(strcmp(p-stun,0)=0)break; fprintf(fp,%dn,p-cla); fprintf(fp,%sn,p-name); fprintf(fp,%sn,p-sex); fprintf(fp,%dn,p-age); fprintf(fp,%sn,p-dorn); fprintf(fp,%sn,p-phon); p-sub=0;p-poi=0; for(i=p-sub;ilesi.lessonn);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服