![[工学]湖南工业大学嵌入式创新实验室课程设计.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/19/3dc3d55f-cd9f-430f-9f48-710996c9c929/3dc3d55f-cd9f-430f-9f48-710996c9c9291.gif)
![[工学]湖南工业大学嵌入式创新实验室课程设计.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/19/3dc3d55f-cd9f-430f-9f48-710996c9c929/3dc3d55f-cd9f-430f-9f48-710996c9c9292.gif)
![[工学]湖南工业大学嵌入式创新实验室课程设计.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/19/3dc3d55f-cd9f-430f-9f48-710996c9c929/3dc3d55f-cd9f-430f-9f48-710996c9c9293.gif)
![[工学]湖南工业大学嵌入式创新实验室课程设计.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/19/3dc3d55f-cd9f-430f-9f48-710996c9c929/3dc3d55f-cd9f-430f-9f48-710996c9c9294.gif)
![[工学]湖南工业大学嵌入式创新实验室课程设计.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/19/3dc3d55f-cd9f-430f-9f48-710996c9c929/3dc3d55f-cd9f-430f-9f48-710996c9c9295.gif)
已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
科目:学生成绩管理系统姓名: 冯方俊 学号: 12408200316 目 录1.系统总体设计12.功能需求分析23.系统功能模块划分34.详细设计44.1.头部文件44.2.主函数:54.3.输入模块94.4.删除与修改模块114.5.查询模块164.6.显示模块184.8.统计模块254.9.打开文件模块294.10.保存文件模块31附源代码33I1. 系统总体设计本系统主要分为以下模块:录入模块,查询模块,删除与修改模块,排序模块,统计模块,显示模块,打开文件模块,保存文件模块,退出系统模块。学生成绩管理系统 数据录入数据查询数据排序数据统计数据的删除与修改数据显示打开文件保存文件退出系统2. 功能需求分析程序主要功能:(1)增加学生记录:增加学生的姓名,学号,性别,各科目的成绩, 如果没有记录存在,则给出提示信息,增加学生记录;其中,数据类型的定义如下:姓名 char ,学号 char, 各科目的成绩 float。(2)查询学生记录:可以按“学号”“姓名”或“名次”方式查询记录; 给出查询学生 、 记录的信息; 如果查询的记录不存在,输出提示信息。 (5)删除与修改学生记录:可以按 “学号”、“姓 名”或“名次”查询记录,按照提示信息进行删除或修改;给出将被删除或修改的记录信息,确认后进行删除或修改;如果没找到需要删除或修改的记录,给出提示信息;如果是空表,给出提示信息并返回主菜单; (3)学生记录排序:可以按“学号”“姓名”或“名次”查询记录,进行“升序”“降序”,的排序;如果查询的记录不存在,输出提示信息; (5)统计信息:可以进行相应科目的成绩统计,得到该科目共有多少条记录、成绩最高分,最低分同学的信息、平均分、及格人数、及格率、优秀人数、优秀率;如果查询的记录不存在,输出提示信息; (6)打开文件:打开已有的保存文件,并显示出来;如果文件不存在,输出提示信息; (7)保存文件:保存已完成或修改的文件; 除了退出系统的程序, 其它程序的运行都需要从保存文件中 调用; (8)显示文件:显示保存文件;如果查询的记录不存在,输出提示信息; (9)退出系统:完成相关程序后,按照提示;退出系统。 3. 系统功能模块划分 本系统有9个C文件(31个函数)和1个头文件组成,每个C文件都代表着某特定的功能,他们的关系与功能见下表。 文件及函数组成源文件函数名或其他成分功能head.h常数提供常数结构声明学生成绩结构库函数及函数原型声明引用库函数及函数main.cmain总控函数menu菜单选项及处理assist2辅助函数2assist3辅助函数3assist5辅助函数5assist7辅助函数7addrecord.ccount依照总分排名次addrecord录入学生信息findrecord.cfindrecord查找学生记录sort.csort排序小菜单sort_num_up按照学号升序sort_num_down按照学号降序sort_name_up按照姓名升序sort_name_down按照姓名降序sort_index_up按照名次升序sort_index_down按照名次降序assist1辅助函数1statistic.cstatistic统计学生信息assist4辅助函数4C_language统计C语言mathematic统计高数english统计英语computer统计计算机del_modify.cmodify修改学生信息deleterecord删除学生信息del_modify删除与修改学生信息display.cdisplay1显示学生信息1display显示学生信息openfile.copenfile打开文件assist6辅助函数6writetofile.cwritetofile保存文件4. 详细设计4.1. 头部文件 头部文件包括函数声明、包含文件及自定义宏和数据结构。程序:#ifndef H_STUDENT_HH /避免头文件的重复定义#define H_STUDENT_HH #include#include#include/头文件#include #include#define LEN sizeof(struct student_info) /*宏定义一个结构体数组元素的长度*/ #define numsubs 4 /*学科数目*/ #define INITIAL_SIZE 100/数据初始大小#define INCR_SIZE 50/数组每次增加的大小struct student_info /*结构体定义*/ char number12; /学号 char name16; /姓名 char sex4; /性别 float subjectnumsubs; /计算机、高数、英语、C语言4科目成绩 float average; /考试平均成绩(计算机+高数+英语+C语言)/4 float sum; /综合测评总分 int index; /名次stuINITIAL_SIZE; void menu(); /*函数声明*/ int openfile(struct student_info *p); /打开文件int findrecord(struct student_info *p); /查找记录int writetofile(struct student_info *p); /保存文件void display1(struct student_info *p); /显示记录1void sort(struct student_info *p); /排序void addrecord(struct student_info *p); /增加记录void display(struct student_info *p,int a,int b); /显示记录void del_modify(struct student_info *p); /删除与修改记录void count(struct student_info *p); /排名次void statistic(struct student_info *p);/统计数据void assist7();/辅助函数7extern int numstus; /*学生数目*/#endif /H_STUDENT_HH 4.2. 主函数:主函数比较简单,提供了登录、输入、处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:显示登陆界面模块 Y N(重新登录或退出)主菜单 输入n,判断n是否是0-8Y N(给出提示,进行重新输入)根据n的值调用各功能模块函数程序:void menu()/主菜单 int n; char str2; struct student_info *p; p=stu; p=(struct student_info *)malloc(INITIAL_SIZE*LEN); /*分配内存*/ printf(ttttt*+*nttttt*n ttttt*+*n);printf(ttttt* 请输入0-8实现以下操作,按回车键确定 *n);printf(ttttt* *n);printf(ttttt* 1:录入学生信息(addrecord) *n);printf(ttttt* *n);printf(ttttt* 2:查询学生信息(findrecord) *n);printf(ttttt* *n);printf(ttttt* 3:排序学生信息(sort) *n);printf(ttttt* *n);printf(ttttt* 4:统计学生信息(statistic) *n);printf(ttttt* *n);printf(ttttt* 5:删除与修改学生信息(del_modify) *n);printf(ttttt* *n);printf(ttttt* 6:显示学生信息(display) *n);printf(ttttt* *n);printf(ttttt* 7:打开文件(openfile) *n);printf(ttttt* *n);printf(ttttt* 8.保存文件(writetofile) *n); printf(ttttt* *n);printf(ttttt* 0:退出系统(Exit) *n);printf(ttttt* *n); printf(ttttt*n); while(1) printf(请选择:); scanf(tt%d,&n); fflush(stdin); switch(n) case 1:system(cls);addrecord(stu);menu();break; case 2:system(cls);assist3();findrecord(stu);assist5();menu();break; case 3:system(cls);sort(stu);menu();break; case 4:system(cls);statistic(stu);menu();break; case 5:system(cls);del_modify(stu);menu();break; case 6:system(cls);display1(stu);menu();break; case 7:system(cls);openfile(stu);menu();break; case 8:system(cls);assist2();writetofile(stu);menu();break; case 0:if(numstus!=0) printf(是否保存当前记录?(y/n); gets(str); if(str0=y|str0=Y) writetofile(stu);system(cls);assist7();exit(0);break; /*退出系统*/ default: printf(对不起,您的输入有误,请重新输入!n); void main() int i=0,m; char a20,b20,c20; printf(tttttnnnnnn); printf(ttttt*nprintf(ttttt*欢迎使用学生成绩管理系统*n);printf(ttttt* *n);printf(ttttt* 用户名:fengfangjun *n);printf(ttttt* *n);printf(ttttt* 密码:123456 *n);printf(ttttt* *n);printf(ttttt* 验证码:0ffj *n);printf(ttttt* *n);printf(ttttt* 说明:1、本系统暂时只限于管理员使用,暂不能注册,请您谅解, *n);printf(ttttt* *n);printf(ttttt* 相关信息上面已给出。 *n);printf(ttttt* *n);printf(ttttt* 2、本系统由“小楫轻舟”工作室独家创作,感谢您对我们的 *n);printf(ttttt* *n);printf(ttttt* 大力支持,您的支持永远是我们创作的最大源动力。 *n);printf(ttttt* *n);printf(ttttt* 3、若您在使用本系统时遇到了困难,或有宝贵的建议,欢迎 *n);printf(ttttt* *n);printf(ttttt* 联系我们(QQ-377373448),我们将竭力解决。 *n);printf(ttttt* *n);printf(ttttt* 4、Copyright by fengfangjun,版权所有,倾情奉献。 *n);printf(ttttt* *n); printf(ttttt*n); printf(nnn); printf(tttt下面请输入相关信息n); printf(tttt请输入用户名:);if(strcmp(fengfangjun,gets(a)=0)i+; printf(tttt请输入密码:);if(strcmp(123456,gets(b)=0)i+; printf(tttt请输入验证码:);if(strcmp(0ffj,gets(c)=0)i+;if(i=3)system(cls);menu();elseprintf(tttt对不起,您的相关信息,输入有误,请选择!n);printf(tttt1:重新输入n);printf(tttt2:退出系统n);while(1)printf(tttt请选择:);scanf(%d,&m);fflush(stdin);switch(m)case 1:system(cls);main();break;case 2:exit(0);break;default:printf(您的输入有误,请重新输入!n);4.3. 输入模块分析:最前面是录入信息的欢迎界面,学号、姓名、性别是字符型,采用字符型数组;分数为单精度实数,可以控制输入学生信息输入的组数并且会提醒输入每一组的开始和结束,最后会把输入的所有数据显现出来,以便确认信息是否输入正确。程序:#includehead.hvoid count(struct student_info *p) /依照总分排名次 int i,j; for(i=0;inumstus;i+) pi.index=1; for(j=0;jpi.sum) pi.index+; void addrecord(struct student_info *p) /增加学生信息 int i=0,j,num; char str5; char *subjects=C语言,高数,英语,计算机; printf(ttttttt*n); printf(ttttttt*-欢迎进入录入界面!-*n); printf(ttttttt*n); if(numstus!=0) printf(已有记录存在是否覆盖?(y/n)n); gets(str); if(str0=Y|str0=y) i=0; else i=numstus; printf(请输入增加的学生信息的组数:); scanf(%d,&num); fflush(stdin); if(i=0) numstus=num; else numstus+=num; if(numstusINITIAL_SIZE) p=(struct student_info *)realloc(p,(INITIAL_SIZE+INCR_SIZE)*LEN); /增大储存空间 printf(请输入学生信息:n); for(;inumstus;i+) printf(=请输入第%d组学生信息=n,i+1); printf(请输入学号(如0001):);fflush(stdin); gets(pi.number); printf(请输入姓名(如张 三、王麻子):);fflush(stdin); gets(); printf(请输入性别(男或女):);fflush(stdin); gets(pi.sex); pi.sum=0; for(j=0;jnumsubs;j+) printf(请输入%s成绩(0-100分):,subjectsj);fflush(stdin); scanf(%f,&pi.subjectj); pi.sum+=pi.subjectj; /*计算总分*/ pi.average=pi.sum/numsubs; /*计算平均分*/ printf(=第%d组学生信息录入完毕=n,i+1); count(stu); /*附名次*/ printf(ttttttttt学生相关信息n); display(stu,0,numstus-1); printf(ttttt=您好!%d组学生信息都已录入完毕,按任意键返回=,num); getch(); fflush(stdin); system(cls);4.4. 删除与修改模块分析:首先是进入删除与修改的小菜单,若选择1则进入删除模块,若选择2则进入修改模块,若选择3则返回主菜单。修改模块的功能是:用户通过输入要修改学生的学号或姓名或名次来查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.删除模块的功能是:用户通过输入要删除的学生的学号或姓名或名次来查找学生记录并删除.流程图1:输入要修改的学号或姓名或名次找到? Y N提示没有找到显示记录,调用修改函数返回删除与修改小菜单继续? Y N 流程图2: 输入要删除的学号或姓名或名次找到? Y N提示没有找到显示记录,调用删除函数继续? Y N返回删除与修改小菜单程序:#includehead.hvoid modify(struct student_info *p)/修改学生信息 char str5; /*供用户输入*/ int i=-1,j; char *subjects=C语言,高数,英语,计算机;while(i=0) printf(确定要修改这个学生的信息吗?(y/n); gets(str); if(str0=y|str0=Y) printf(下面请重新输入学生的信息:n); printf(请输入学号(如0001):);fflush(stdin); gets(pi.number); printf(请输入姓名(如张 三、王麻子):);fflush(stdin); gets(); printf(请输入性别(男或女):);fflush(stdin); gets(pi.sex); pi.sum=0; for(j=0;jnumsubs;j+) printf(请输入%s成绩(0-100分):,subjectsj);fflush(stdin); scanf(%f,&pi.subjectj); pi.sum+=pi.subjectj; /*计算总分*/ pi.average=pi.sum/numsubs; /*计算平均分*/ count(stu); display(stu,0,numstus-1); printf(是否继续进行其他修改?(y/n);fflush(stdin); gets(str); if(str0=y|str0=Y) i=-1; else i=1; printf(=您好!若要返回请按任意键=); getch(); fflush(stdin); system(cls); void deleterecord(struct student_info *p) /*删除学生信息*/ char str5; /*供用户输入*/ int i=-1,j; while(i=0) printf(确定要删除这个学生的信息吗?(y/n); gets(str); if(str0=y|str0=Y) if(i=0) for(j=i;jnumstus;j+) pj=pj+1; numstus-; printf(删除成功!n); count(stu); display(stu,0,numstus-1); printf(是否继续删除其他学生信息?(y/n);fflush(stdin); gets(str); if(str0=y|str0=Y) i=-1; else i=1; printf(=您好!若要返回请按任意键=); getch(); fflush(stdin); system(cls);void del_modify(struct student_info *p) /*删除与修改学生信息*/ int n,m; char *subjects=C语言,高数,英语,计算机; printf(ttttttt*n); printf(ttttttt*-欢迎进入删除与修改界面!-*n); printf(ttttttt*n); if(numstus=0) /*没有删除或修改的记录返回*/ printf(t对不起,没有可供删除与修改的数据!n); printf(t1:返回n); printf(t2:退出系统n); while(1) printf(t请选择:); scanf(%d,&n); fflush(stdin); switch(n) case 1:system(cls);menu();break;case 2:system(cls);assist7();exit(0);break;default:printf(t对不起,您的输入有误,请重新输入!n); else printf(tttttttt*n);printf(tttttttt* 请选择 *n);printf(tttttttt* 1:删除学生信息 *n);printf(tttttttt* 2:修改学生信息 *n);printf(tttttttt* 3:返回 *n);printf(tttttttt*n);while(1) printf(请输入:); scanf(%d,&m); fflush(stdin); switch(m) case 1:deleterecord(stu);del_modify(stu);break;case 2:modify(stu);del_modify(stu);break;case 3:system(cls);menu(stu);break;default:printf(对不起,您的输入有误,请重新输入!n); fflush(stdin);system(cls);4.5. 查询模块需求分析:该模块的功能是根据输入的学生的学号或姓名或名次查找对应的记录,找到以后,显示相应的学生信息,若没有该记录则提示没找到。流程图:输入学生学号或姓名或名次提示没有找到显示找到的记录是否找到学生记录 Y N 询问是否继续 N返回主菜单 N Y程序:#include head.h int findrecord(struct student_info *p) /*查找信息*/ char str2; int i,num; if(numstus=0) printf(对不起,没有可被查找的记录n); return -1; else printf(以何种方式查找?n1.学号t2.姓名t3.名次n); gets(str); if(str0=1) /*按学号查找*/ printf(请输入学号:); gets(str); for(i=0;i=numstus;i+) if(strcmp(str,pi.number)=0) display(stu,i,i); break; else continue; else if(str0=2) /*按姓名查找*/ printf(请输入姓名:); gets(str); for(i=0;i=numstus;i+) if(strcmp(str,)=0) display(stu,i,i); break; else continue; else if(str0=3) /*按名次查找*/ printf(请输入名次:); scanf(%d,&num); fflush(stdin); for(i=0;inumstus) printf(没有查找所要的信息。n); return -1; return i; 4.6. 显示模块需求分析:该模块的功能是显示所有学生记录信息.程序:#includehead.hvoid display1(struct student_info *p) /显示学生信息1 int n; printf(ttttttt*n); printf(ttttttt*-欢迎进入显示学生信息界面!-*n); printf(ttttttt*n); if(numstus=0) /*没有显示的记录返回*/ printf(t对不起,没有可供显示的数据!n); printf(t1:返回n); printf(t2:退出系统n); while(1) printf(t请选择:); scanf(%d,&n); fflush(stdin); switch(n) case 1:system(cls);menu();break;case 2:system(cls);assist7();exit(0);break;default:printf(t对不起,您的输入有误,请重新输入!n); else display(stu,0,numstus-1); printf(ttttt=您好!%d组学生信息都已输出完毕,按任意键返回=,numstus); getch(); fflus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红河州特岗小学数学试卷
- 汽车生产质量承诺及保证措施
- 诚信合伙人协议书范本
- 部编版五年级语文下册学生评价计划
- 小学数学实践活动设计研修心得体会
- 成功谈判协议书范本
- 边境口岸新冠病毒核酸检测采样操作流程
- 2024年乌兰察布招聘卫生健康专业技术人员真题
- 中国动物质着色料及其制品行业市场竞争格局分析及投资方向研究报告
- 2024年甘肃省劳务办招聘真题
- 琦君散文-专业文档
- 企业会计准则、应用指南及附录2023年8月
- 初中数学浙教版九年级上册第4章 相似三角形4.3 相似三角形 全国公开课一等奖
- GA/T 852.1-2009娱乐服务场所治安管理信息规范第1部分:娱乐服务场所分类代码
- 建设项目办理用地预审与选址意见书技术方案
- DLT 5066-2010 水电站水力机械辅助设备系统设计技术规定
- 10kV中压开关柜知识培训课件
- 测绘生产困难类别细则及工日定额
- 货架的技术说明(一)
- GB∕T 20984-2022 信息安全技术 信息安全风险评估方法
- 汽车吊施工方案(完整常用版)
评论
0/150
提交评论