版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上教务信息管理系统课程设计报告专心-专注-专业高级语言程序设计课程设计教务信息管理系统题 目:班 级: 软件R7班学生学号: 学生姓名: 麦建波指导老师: 姚金涛 提交时间: 5月6日华南农业大学 软件学院教务信息管理系统 1. 系统分析 1.1 问题描述本程序为教务信息管理系统,经过输入学生的相关信息,对数据进行处理和统计,并按需要输入统计处理后的数据到文件中。 1.2 系统功能(1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等;课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、 学分、重修否等。如果重修,需要考虑重修学期、
2、重修成绩,而且要考虑多次重修的情况。(2)录入选课信息(3)录入学生成绩(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 系统总体结构设计教务信息管理系统保存学生信息及其课程成绩并退出统计学生已修学分及不及格课程按课程统计学生名单及考试成绩按班统计学生选课情
4、况及考试成绩新增学生信息及其课程成绩加载学生信息及其课程成绩 2.2 系统各个功能模块设计(1)加载成功显示相关信息,并提示加载学生总数系统自动从根文件夹读取文件”stu.txt”,依照程序步骤将学生信息输入到程序加载学生信息及其课程成绩(2)学生学号输入“0”返回到主界面在已有加载数据基础上新增学生,依照提示信息依次将学生信息输入到程序新增学生信息及其课程成绩(3)输出完毕后自动返回到主界面继续工作基于当前数据,按班级R1R10分类统计并输出学生所有信息到屏幕和文件”case3.txt”按班统计学生选课情况及考试成绩(4)输入课程编号,查找出已修该课程所有学生并输出其成绩及重修与否到屏幕和文
5、件”case4.txt”课程编号输入“0”返回到主界面按课程统计学生名单及考试成绩(5)基于当前数据,将每位学生已修课程的学分总和及不及格课程输出到屏幕和文件”case5.txt”输出完毕后自动返回到主界面继续工作统计学生已修学分及不及格课程(6)保存成功显示相关信息,并提示保存学生总数,最后退出程序将当前数据以与加载相同的格式输出到文件”stu.txt”,并覆盖原本存在的该文件保存学生信息及其课程成绩并退出 2.3 数据结构的设计2.3.1学生信息数据结构typedef struct student int age,sub,cla; /年龄,选课数量,班级 double poi; /已修学分
6、 char stun15,name30,sex5,dorn10,phon20; /学号,姓名,性别,宿舍号码,短号电话号码 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
7、.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头文件:#inc
8、lude <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
9、*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("tt*欢迎使用教务信息管理系统*"); do printf(&qu
10、ot;ntt* -请选择- *n"); printf("tt* 1、加载学生信息及其课程成绩ttt2、新增学生信息及其课程成绩 *n"); printf("tt* 3、按班统计学生选课情况及考试成绩tt4、按课程统计学生名单及考试成绩 *n"); printf("tt* 5、统计并输出每个同学已修学分及不及格课程t6、保存学生信息及其课程成绩并退出*n"); printf("tt* -0、退出- *nn"); fflush(stdin); /清除缓冲区 scanf("%d",&
11、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("ntt* -!谢谢使用!- *n"); return 0;3.3加载信息模块功能:从根文件夹加
12、载记录学生信息的文件输入:无处理:将所有学生信息形成链表输出:加载成功情况程序清单: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->
13、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&
14、quot;,&p->phon); /读取短号电话号码 p->sub=0;p->poi=0; for(i=p->sub;i<=10;i+) fscanf(fp,"%s",&p->lesi.lessonn); /读取课程编号 if(strcmp(p->lesi.lessonn,"0")=0)break; /课程编号为0返回 fscanf(fp,"%s",&p->lesi.lessonname); /读取课程名称 fscanf(fp,"%lf",&a
15、mp;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); /
16、读取是否重修 if(strcmp(p->lesi.re,"是")=0) fscanf(fp,"%d",&p->lesi.restime); /读取重修次数 for(j=0;j<p->lesi.restime;j+) fscanf(fp,"%d",&p->lesi.resj.term); /读取重修学期 fscanf(fp,"%lf",&p->lesi.resj.resmark); /读取重修成绩 p->sub+; n+; if(n=1) hd=p;p
17、t=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);
18、 /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("
19、;请输入性别:"); 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
20、->sub;i<=10;i+) printf("请输入课程编号(6位数字,返回请输入0):"); scanf("%s",&p->lesi.lessonn); if(strcmp(p->lesi.lessonn,"0")=0)break; printf("请输入课程名称:"); scanf("%s",&p->lesi.lessonname); printf("请输入考试成绩:"); scanf("%lf",&am
21、p;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("是否需要
22、重修(输入“是,否”,):"); scanf("%s",&p->lesi.re); if(strcmp(p->lesi.re,"是")=0) printf("请输入重修次数:"); scanf("%d",&p->lesi.restime); for(j=0;j<p->lesi.restime;j+) printf("请输入重修学期:"); scanf("%d",&p->lesi.resj.term); pr
23、intf("请输入重修成绩:"); scanf("%lf",&p->lesi.resj.resmark); p->sub+; hd=inspoint(hd,p); /插入一个新结点以继续增加学生人数 p->next=NULL; system("cls"); /清屏 return hd;3.5按班级统计模块功能: 按班级有序地查看学生的情况输入:无处理:按班级R1R10分类统计学生信息输出:输出学生所有信息到屏幕和文件”case3.txt”程序清单:void clalesmark(student *head)
24、/同时输出数据到屏幕和文件 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(" 学号 姓名 性
25、别 年龄 宿舍号 电话号码 课程编号 课程名称 平时成绩 考试成绩 综合成绩 学分 是否重修 重修次数 重修情况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%10sn",s->stu
26、n,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;j<s->sub;j+) fprintf(fp," %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s",s->lesj.lessonn,s->lesj.lessonname,s-&g
27、t;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(strcmp(s->lesj.r
28、e,"是")=0) fprintf(fp," %d ",s->lesj.restime);printf(" %d ",s->lesj.restime); for(k=0;k<s->lesj.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.res
29、k.term,s->lesj.resk.resmark); fprintf(fp,"n");printf("n"); s=s->next; 3.6按课程统计模块功能: 按课程查看已修该课的学生的成绩情况输入:课程编号处理:逐个学生查找是否已修该课程 输出:输出学生成绩情况到屏幕和文件”case4.txt”程序清单:void lesstumark(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( "case4.txt" , &quo
30、t;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,"ntt 课程名称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修n"); printf("ntt 课程名
31、称 学号 姓名 平时成绩 考试成绩 综合成绩 学分 是否重修n"); fprintf(fp,"tt-n"); printf("tt-n"); s=head; while(s!=NULL) for(i=0;i<s->sub;i+) if(strcmp(s->lesi.lessonn,lessonn)=0) /查找该学生是否已修该课 fprintf(fp,"tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %sn",s->lesi.lessonname,s->s
32、tun,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->le
33、si.re); break; s=s->next; fprintf(fp,"n"); printf("n"); 3.7输出已修学分及不及格课程模块功能: 查看所有学生已修学分及不及格课程输入:无处理:从头到尾检索每个学生已修学分及不及格课程 输出:输出所有学生已修学分及不及格课程到屏幕和文件”case5.txt”程序清单:void pointfail(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( "case5.txt" , &quo
34、t;w" ); if(head=NULL) fprintf(fp,"没有信息。n");printf("没有信息。n"); else fprintf(fp,"tt 学号 姓名 班级 已修学分 不及格课程n");printf("tt 学号 姓名 班级 已修学分 不及格课程n"); fprintf(fp,"tt-n");printf("tt-n"); s=head; while(s!=NULL) fprintf(fp,"tt%11s %8s %d %.1lf &
35、quot;,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;i<s->sub;i+) if(s->lesi.mark<60) fprintf(fp,"%s ",s->lesi.lessonname);printf("%s ",s->lesi.lessonname); fprintf(fp,"
36、;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
37、n",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
38、); p->sub=0;p->poi=0; for(i=p->sub;i<=10;i+) fprintf(fp,"%sn",p->lesi.lessonn); if(strcmp(p->lesi.lessonn,"0")=0)break; fprintf(fp,"%sn",p->lesi.lessonname); fprintf(fp,"%lfn",p->lesi.textmark); fprintf(fp,"%lfn",p->lesi.fo
39、rmalmark); fprintf(fp,"%lfn",p->lesi.mark); fprintf(fp,"%lfn",p->lesi.point); p->poi+=p->lesi.point; fprintf(fp,"%sn",p->lesi.re); if(strcmp(p->lesi.re,"是")=0) fprintf(fp,"%dn",p->lesi.restime); for(j=0;j<p->lesi.restime;j+) fprintf(fp,"%dn",p->lesi.resj.term); fprintf(fp,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 13《桥》说课稿-2024-2025学年六年级上册语文统编版
- 增材制造与创新设计:从概念到产品 课件 第6、7章 3D打印产品创新结构设计、增材制造创新综合应用实例
- 2024技术开发合同约定的技术成果交付和保密
- 农科创新之路
- 科技引领电商新纪元
- 12 故宫博物院(说课稿)-2024-2025学年统编版语文六年级上册
- 基于信任关系产生的租赁合同范本(2篇)
- 专项活动策划委托:2024年合作合同版B版
- 2024年版混砖结构烟囱拆除操作合同版B版
- 10-1《劝学》说课稿 2024-2025学年统编版高中语文必修上册
- 2024-2030年马齿苋提取物行业供需调研及投资战略规划报告
- 医院感染风险评估表(适用于病房、换药室、治疗室、注射室)
- TCASWSS 025-2024 老年大学课程设置规范
- 小学道德与法治课程标准与教材研究 课件 第七章 法治教育
- JJG 633-2024气体容积式流量计
- 电机制造行业的竞争对手分析
- 广西失败企业案例分析报告
- 湖南建设工程施工阶段监理服务费计费规则
- 【基层版】中国房颤中心认证标准
- 磨工技能试卷及答案
- 稀土铝合金电缆项目可行性研究报告
评论
0/150
提交评论