教务信息综合管理系统优秀课程设计优质报告.docx
《教务信息综合管理系统优秀课程设计优质报告.docx》由会员分享,可在线阅读,更多相关《教务信息综合管理系统优秀课程设计优质报告.docx(27页珍藏版)》请在咨信网上搜索。
《高级语言程序设计》课程设计 教务信息管理系统 题 目: 班 级: 软件R7班 学生学号: 31001015 学生姓名: 麦建波 指导老师: 姚金涛 提交时间: 5月6日 华南农业大学 软件学院 教务信息管理系统 1. 系统分析 1.1 问题描述 本程序为教务信息管理系统,经过输入学生相关信息,对数据进行处理和统计,并按需要输入统计处理后数据到文件中。 1.2 系统功效 (1)录入以下信息: 学生基础信息:如学号、姓名、性别、年纪、宿舍号码、电话号码等; 课程基础信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、 学分、重修否等。假如重修,需要考虑重修学期、重修成绩,而且要考虑数次重修情况。 (2)录入选课信息 (3)录入学生成绩 (4)按班统计学生选课情况及考试成绩 (5)按课程统计学生名单及考试成绩 (6)统计并输出每个同学已修学分及不及格课程 1.3 功效需求描述: (1)加载学生信息及其课程成绩:从文件录入学生基础资料和课程情况,并覆盖原有数据。 (2)新增学生信息及其课程成绩:按要求录入学生基础资料和课程情况,经过提醒信息逐步操作。 (3)按班统计学生选课情况及考试成绩:依据录入数据,以班为单位逐一输出选课情况及对应成绩。 (4)按课程统计学生名单及考试成绩:按提醒输入课程编号,查询对应课程学生名单及其成绩。 (5)统计并输出每个同学已修学分及不及格课程:依据录入数据进行统计,输出全部学生已修学分及不及格课程名称。 (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 系统各个功效模块设计 (1) 加载成功显示相关信息,并提醒加载学生总数 系统自动从根文件夹读取文件”stu.txt”,依据程序步骤将学生信息输入到程序 加载学生信息及其课程成绩 (2) 学生学号输入“0”返回到主界面 在已经有加载数据基础上新增学生,依据提醒信息依次将学生信息输入到程序 新增学生信息及其课程成绩 (3) 输出完成后自动返回到主界面继续工作 基于目前数据,按班级R1~R10分类统计并输出学生全部信息到屏幕和文件”case3.txt” 按班统计学生选课情况及考试成绩 (4) 输入课程编号,查找出已修该课程全部学生并输出其成绩及重修是否到屏幕和文件”case4.txt” 课程编号输入“0”返回到主界面 按课程统计学生名单及考试成绩 (5) 基于目前数据,将每位学生已修课程学分总和及不及格课程输出到屏幕和文件”case5.txt” 输出完成后自动返回到主界面继续工作 统计学生已修学分及不及格课程 (6) 保留成功显示相关信息,并提醒保留学生总数,最终退出程序 将目前数据以和加载相同格式输出到文件”stu.txt”,并覆盖原本存在该文件 保留学生信息及其课程成绩并退出 2.3 数据结构设计 2.3.1学生信息数据结构 typedef struct student { int age,sub,cla; //年纪,选课数量,班级 double poi; //已修学分 char stun[15],name[30],sex[5],dorn[10],phon[20]; //学号,姓名,性别,宿舍号码,短号电话号码 course les[10]; //课程信息 struct student*next; }student; 2.3.2课程信息数据结构 typedef struct course { char lessonn[15],lessonname[50],re[5]; //课程编号,课程名称,是否重修 double textmark,formalmark,mark,point; //考试成绩,平时成绩,综合成绩,学分 restudy res[5]; //重修情况 int restime; //重修次数 }course; 2.3.3重修情况数据结构 typedef struct restudy { int term; //重修学期 double resmark; //重修分数 }restudy; 2.4 界面设计 程序界面应遵照简练美观、方便使用标准。 2.4.1主界面 充足考虑界面易于操作系统需求,用printf语句结构简单文字界面,具体主界面设计效果图所表示。 2.4.2新增信息界面 依据相关文字提醒,用户输入对应信息。 3. 系统实现 基于系统需求分析和系统总体设计结果,本系统采取Code::Blocks12.11软件平台基于C语言实现各模块功效,下面根据模块功效划分来分别叙述系统具体设计和实现过程。 3.1头文件: #include <stdio.h> #include <stdlib.h> #include <string.h> 3.2主界面模块 功效:功效选择界面 输入:用户选择功效选项编号 处理:依据用户选项跳转到相关功效函数 输出:相关功效函数处理或显示界面 程序清单: 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 *savestu(student *head); //保留学生信息及其课程成绩 int main(void) { student *head,*p; int num,n; int size=sizeof(struct student); head=NULL; printf("\t\t*****************************欢迎使用教务信息管理系统*****************************"); do { printf("\n\t\t* ------------------------------------请选择------------------------------------ *\n"); printf("\t\t* 1、加载学生信息及其课程成绩\t\t\t2、新增学生信息及其课程成绩 *\n"); printf("\t\t* 3、按班统计学生选课情况及考试成绩\t\t4、按课程统计学生名单及考试成绩 *\n"); printf("\t\t* 5、统计并输出每个同学已修学分及不及格课程\t6、保留学生信息及其课程成绩并退出*\n"); printf("\t\t* -----------------------------------0、退出------------------------------------ *\n\n"); 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; default :break; } }while(n!=0&&n!=6); printf("\n\t\t* ----------------------------------!谢谢使用!---------------------------------- *\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); fscanf(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;i<=10;i++) { fscanf(fp,"%s",&p->les[i].lessonn); //读取课程编号 if(strcmp(p->les[i].lessonn,"0")==0)break; //课程编号为0返回 fscanf(fp,"%s",&p->les[i].lessonname); //读取课程名称 fscanf(fp,"%lf",&p->les[i].textmark); //读取考试成绩 fscanf(fp,"%lf",&p->les[i].formalmark); //读取平时成绩 fscanf(fp,"%lf",&p->les[i].mark); //读取综合成绩 fscanf(fp,"%lf",&p->les[i].point); //读取学分 p->poi+=p->les[i].point; //将该课程学分加入已修总学分 fscanf(fp,"%s",&p->les[i].re); //读取是否重修 if(strcmp(p->les[i].re,"是")==0) { fscanf(fp,"%d",&p->les[i].restime); //读取重修次数 for(j=0;j<p->les[i].restime;j++) { fscanf(fp,"%d",&p->les[i].res[j].term); //读取重修学期 fscanf(fp,"%lf",&p->les[i].res[j].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新增信息模块 功效:增加学生,并完整录入相关个人信息及选课信息 输入:学生信息 处理:将所得学生信息插入链表 输出:无 程序清单: 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("请输入班级号(软件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;i<=10;i++) { printf("请输入课程编号(6位数字,返回请输入0):"); scanf("%s",&p->les[i].lessonn); if(strcmp(p->les[i].lessonn,"0")==0)break; printf("请输入课程名称:"); scanf("%s",&p->les[i].lessonname); printf("请输入考试成绩:"); scanf("%lf",&p->les[i].textmark); printf("请输入平时成绩:"); scanf("%lf",&p->les[i].formalmark); printf("请输入综合成绩:"); scanf("%lf",&p->les[i].mark); printf("请输入学分:"); scanf("%lf",&p->les[i].point); p->poi+=p->les[i].point; printf("是否需要重修(输入“是,否”,):"); scanf("%s",&p->les[i].re); if(strcmp(p->les[i].re,"是")==0) { printf("请输入重修次数:"); scanf("%d",&p->les[i].restime); for(j=0;j<p->les[i].restime;j++) { printf("请输入重修学期:"); scanf("%d",&p->les[i].res[j].term); printf("请输入重修成绩:"); scanf("%lf",&p->les[i].res[j].resmark); } } p->sub++; } hd=inspoint(hd,p); //插入一个新结点以继续增加学生人数 p->next=NULL; } system("cls"); //清屏 return hd; } 3.5按班级统计模块 功效: 按班级有序地查看学生情况 输入:无 处理:按班级R1~R10分类统计学生信息 输出:输出学生全部信息到屏幕和文件”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," 学号 姓名 性别 年纪 宿舍号 电话号码 课程编号 课程名称 平时成绩 考试成绩 综合成绩 学分 是否重修 重修次数 重修情况\n"); printf(" 学号 姓名 性别 年纪 宿舍号 电话号码 课程编号 课程名称 平时成绩 考试成绩 综合成绩 学分 是否重修 重修次数 重修情况\n"); printf("-----------------------------------------------------------------------------------------------------------------------------------------------------------------\n"); fprintf(fp,"-----------------------------------------------------------------------------------------------------------------------------------------------------------------\n"); for(i=1;i<=10;i++) { fprintf(fp,"软件R%d班:\n",i);printf("软件R%d班:\n",i); s=head; while(s!=NULL) { if(s->cla==i) { fprintf(fp,"%13s %8s %s %d%9s%10s\n",s->stun,s->name,s->sex,s->age,s->dorn,s->phon); printf("%13s %8s %s %d%9s%10s\n",s->stun,s->name,s->sex,s->age,s->dorn,s->phon); for(j=0;j<s->sub;j++) { fprintf(fp," %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s",s->les[j].lessonn,s->les[j].lessonname,s->les[j].formalmark,s->les[j].textmark,s->les[j].mark,s->les[j].point,s->les[j].re); printf(" %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s",s->les[j].lessonn,s->les[j].lessonname,s->les[j].formalmark,s->les[j].textmark,s->les[j].mark,s->les[j].point,s->les[j].re); if(strcmp(s->les[j].re,"是")==0) { fprintf(fp," %d ",s->les[j].restime);printf(" %d ",s->les[j].restime); for(k=0;k<s->les[j].restime;k++) { fprintf(fp,"/第%d次:第%d学期,%.1lf分/",k+1,s->les[j].res[k].term,s->les[j].res[k].resmark); printf("/第%d次:第%d学期,%.1lf分/",k+1,s->les[j].res[k].term,s->les[j].res[k].resmark); } } fprintf(fp,"\n");printf("\n"); } } s=s->next; } } } } 3.6按课程统计模块 功效: 按课程查看已修该课学生成绩情况 输入:课程编号 处理:逐一学生查找是否已修该课程 输出:输出学生成绩情况到屏幕和文件”case4.txt” 程序清单: void lesstumark(student *head) { int i; char lessonn[15]; 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(lessonn,"0")==0)break; fprintf(fp,"\n\t\t 课程名称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修\n"); printf("\n\t\t 课程名称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修\n"); fprintf(fp,"\t\t--------------------------------------------------------------------------------\n"); printf("\t\t--------------------------------------------------------------------------------\n"); s=head; while(s!=NULL) { for(i=0;i<s->sub;i++) { if(strcmp(s->les[i].lessonn,lessonn)==0) //查找该学生是否已修该课 { fprintf(fp,"\t\t%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %s\n",s->les[i].lessonname,s->stun,s->name,s->les[i].formalmark,s->les[i].textmark,s->les[i].mark,s->les[i].point,s->les[i].re); printf("\t\t%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %s\n",s->les[i].lessonname,s->stun,s->name,s->les[i].formalmark,s->les[i].textmark,s->les[i].mark,s->les[i].point,s->les[i].re); break; } } s=s->next; } fprintf(fp,"\n"); printf("\n"); } } } 3.7输出已修学分及不及格课程模块 功效: 查看全部学生已修学分及不及格课程 输入:无 处理:从头到尾检索每个学生已修学分及不及格课程 输出:输出全部学生已修学分及不及格课程到屏幕和文件”case5.txt” 程序清单: void pointfail(student *head) { int i; char lessonn[15]; student *s; FILE *fp; fp = fopen( "case5.txt" , "w" ); if(head==NULL) {fprintf(fp,"没有信息。\n");printf("没有信息。\n");} else { fprintf(fp,"\t\t 学号 姓名 班级 已修学分 不及格课程\n");printf("\t\t 学号 姓名 班级 已修学分 不及格课程\n"); fprintf(fp,"\t\t----------------------------------------------------------------------\n");printf("\t\t----------------------------------------------------------------------\n"); s=head; while(s!=NULL) { fprintf(fp,"\t\t%11s %8s %d %.1lf ",s->stun,s->name,s->cla,s->poi); printf("\t\t%11s %8s %d %.1lf ",s->stun,s->name,s->cla,s->poi); for(i=0;i<s->sub;i++) { if(s->les[i].mark<60) {fprintf(fp,"%s ",s->les[i].lessonname);printf("%s ",s->les[i].lessonname);} } fprintf(fp,"\n");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,"%s\n",p->stun); if(strcmp(p->stun,"0")==0)break; fprintf(fp,"%d\n",p->cla); fprintf(fp,"%s\n",p->name); fprintf(fp,"%s\n",p->sex); fprintf(fp,"%d\n",p->age); fprintf(fp,"%s\n",p->dorn); fprintf(fp,"%s\n",p->phon); p->sub=0;p->poi=0; for(i=p->sub;i<=10;i++) { fprintf(fp,"%s\n",p->les[i].lessonn);- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教务 信息 综合 管理 系统 优秀 课程设计 优质 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文