2022年c语言课程研究设计学生成绩管理系统.docx

上传人:C****o 文档编号:12789248 上传时间:2022-04-26 格式:DOCX 页数:41 大小:165.17KB
返回 下载 相关 举报
2022年c语言课程研究设计学生成绩管理系统.docx_第1页
第1页 / 共41页
2022年c语言课程研究设计学生成绩管理系统.docx_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《2022年c语言课程研究设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《2022年c语言课程研究设计学生成绩管理系统.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品学习资源封面欢迎下载精品学习资源作者: PanHongliang仅供个人学习学号1305370318成果欢迎下载精品学习资源欢迎下载精品学习资源题目要课程设计说明书成果治理系统2021 年 6 月 16 日 6 月 27 日治理学院工商治理工商 1303 班周玉琪杨英祥设计名称 运算机程序设计设计题目设计时间学院专业班级姓名指导老师2021 年 6 月 27 日目录同学成果治理程序欢迎下载精品学习资源求 3设计目的 3总体设计 3详细设欢迎下载精品学习资源计4调试与测试13源程序 15总结 31同学成果治理程序一 题目要求1. 问题描述 :对在校同学几门课程的考试成果进行统一治理. 每个同

2、学记录包括学号 ,姓名, 年龄, 数学, 英语, 物理成果 , 默认以学号为序存放 .2. 要求:(1) 一个文件按以班为单位储备同学记录 .(2) 将答应的操作分为四种 , 以 A,B ,C,D,E,F为标志: A: 插入一个同学记录;B: 修改同学记录;C:删除一个同学记录;D:查找一个同学记录;E: 浏览同学成果 :F: 退出3. 运算同学的总成果 .4. 按学号排序输出全班同学成果表.二 设计目的依据题目要求 , 由于同学信息是存放在文件中 , 所以应供应文件的输入 , 输出等操作;在程序中需要浏览同学的信息, 应供应显示 , 查找, 排序等操作;另外仍应供应键盘式选择菜单实现功能选择

3、.三 总体设计欢迎下载精品学习资源同学成果治理系统数据输入数据显示数据修改数据删除数据查找四 详细设计1. 主函数:主函数一般设计得比较简洁 , 只供应输入 , 处理和输出部分的函数调用其中各功能模块用菜单方式选择.流程图:显示一系列功能模块N输入 n, 判定 n 是否是 A-FY依据 n 的值调用各功能模块函数 程序:/#include head.hint menu_select,依据上面的需求分析 , 可以将这个系统分为以下模块: 输入模块 , 修改模块 , 删除模块, 查找模块 , 显示模块 .char c;printfnn;printf | 1.增加同学记录5.统计信息|n;print

4、f | 2.查询同学记录6.打开文件|n;printf | 3.修改同学记录7.储存文件|n;printf | 4.同学纪录排序8.显示记录|n;printf | 0.退出系统 |n;printfnn;printf请选择 0-8:;c=getchar;getchar; return c-0;2. 输入模块 : 分析:单独看各数据信息 , 学号, 姓名是字符型 , 可以接受字符型数组;分数为整数, 接受整数;数据信息存放在文件中, 一条记录对应一个同学 , 既符合习惯又便利信息治理 .假如要存放如干同学信息就用结构体数组:void addrecordstudent studint i=0,j,n

5、um;欢迎下载精品学习资源char str5;ifnumstus.=0printf已有记录存在是否掩盖.y/nn;getsstr;ifstr0=Y|str0=y i=0;else i=numstus;printf请输入增加的同学信息条目数 : ;scanf%d,#ifi=0 numstus=num ;else numstus+=num ;ifnumstuslenslens+=50;pointer=student *reallocpointer,lens*LEN;printf请输入同学信息 :n;for;inumstus ;i+getchar;printf请输入学号 : ;getspoi

6、nteri.number;printf请输入姓名 : ;getspointeri.name;printf请输入性别 男/ 女 1/0:;getspointeri.sex;ifpointeri.sex0=0 strcpypointeri.sex,女 ;else strcpypointeri.sex,男 ;printf请输入各科成果: 按“语文,数学,英语,历史,政治”的次序:;studi.score=0;forj=0;j0i=menu_select; /* 把握菜单 */ switchicase 1:addrecordpointer;break ; /* 增加同学信息 */ case 2:fin

7、drecordpointer;break ; /* 查询同学信息 */ case 3:amendrecordpointer;break ; /* 修改同学信息 */ case 4:sortpointer;break ; /* 同学信息排序 */case 5:statisticpointer;break ; /* 统计信息 */ case 6:openfilepointer;break ; /* 打开文件 */ case 7:writetotextpointer;break ; /* 储存文件 */case 8:displaypointer,0,numstus-1;break ; /* 显示记录

8、 */ case 0:ifnumstus.=0 printf是否储存当前记录 .y/n;getsstr;ifstr0=y|str0=Y writetotextpointer;i=-1;break ; /* 退出系统 */default:printf请输入数字 08:n;i=1 ; /* 输入错误 */printftt欢迎再次使用本系统; nn;display1;3. 修改模块 : 分析: 用户输入要修改同学的学号, 依据同学的学号等信息查找同学记录,输入要修改的学号找到 .并提示用户修改该记录的哪部分信息 . 依据用户选择修改相应的信息 . 流程图:欢迎下载精品学习资源YN欢迎下载精品学习资源

9、YN 程序 :显 示 记 录 , 调用修改函数提示没有找到欢迎下载精品学习资源void xiugai连续 .欢迎下载精品学习资源iffp=fopens_score.txt,rb+=NULL|fp1=fopentemp.txt,wb+=NULL/* 检查是否出错 */返回主菜单printfCannot open this file.n;exit0;printfnPLease shuru xiugai xuehao:;scanf%d,&i; getchar;whilefread&data,sizeofdata,1,fp=1j=atoidata.xuehao;ifj=iprintfxuehao:%s

10、nmingzi:%snnianling:%sn,data.xuehao,data.mingzi,data.nianl ing ;printfPlease shuru mingzi:;getsdata.mingzi;printfPlease shuru shuxue score:;getstemp;data.score0=atoftemp;printfPlease input yingyu score:;getstemp;data.score1=atoftemp;printfPlease input wuli score:;getstemp;data.score2=atoftemp;data.s

11、core3=data.score0+data.score1+data.score2; fwrite&data,sizeofdata,1,fp1;fseekfp,0L,0; /* 将位置指针移到离头文件0 个字节处 */ fseekfp1,0L,0;whilefread&data,sizeofdata,1,fp1=1fwrite&data,sizeofdata,1,fp;fclosefp;fclosefp1;欢迎下载精品学习资源4. 删除模块 :分析:该模块的功能是 , 用户输入要删除的同学的学号 , 依据同学学号查找记录并删除. 流程图:输入要删除的学号找到 .YN欢迎下载精品学习资源YN 程

12、序 :显 示 记 录 , 调用删除函数提示没有找到欢迎下载精品学习资源void deleterecordstudent继st续u.,int i /*删除信息 */int j;whilei=0返回主菜单forj=i; jnumstus ;j+ stuj=stuj+1;numstus-;printf删除成功 .n;void countstudent studint i,j;fori=0;inumstus ;i+studi.index=1; forj=0; jstudi.score studi.index+;5. 查找模块 : 需求分析 :该模块的功能是依据输入的同学的姓名查找对应的记录, 找到以后

13、 , 显示相应的同学信息 . 流程图:输入同学学号欢迎下载精品学习资源YNN欢迎下载精品学习资源Y 程序:/#include head.hint findrecordstudent stud /*char str2;int i,num显示;找到的ifnumstu记s录=0是 否 找到 学 生记录查找信息 */提示没有找到欢迎下载精品学习资源printf没有可被查找的记录 n ;欢迎下载精品学习资源return -1;else询 问 是否连续欢迎下载精品学习资源printf以何种方式查找? n1. 学号t2.姓名t3.名次n ;getsstr;欢迎下载精品学习资源ifstr0=1 /*按学号查找

14、 */printf请输入学号 : ;getsstr;fori=0;i=numstus ;i+ ifstrcmpstr,studi.number=0displaystud,i,i;break;else continue;返回主菜单欢迎下载精品学习资源else ifstr0=2 /*按姓名查找 */printf请输入姓名 : ;getsstr;fori=0;i=numstus ;i+ ifstrcmpstr,studi.name=0displaystud,i,i;break;else continue;else ifstr0=3 /*按名次查找 */欢迎下载精品学习资源printf请输入名次 :

15、;scanf%d,#getchar;fori=0;inumstusprintf没有查找所要的信息; n ;return -1;return i;6. 显示模块 : 需求分析 :该模块的功能是显示全部同学记录信息. 程序:void welcomeprintft*n;printftttt*学 生成 绩 管 理系 统 *ntttt倾 情奉 献欢 迎使用.n;printft*n;void showtableprintf-n;printf学号t姓名t性别t语文t数学t英语t历史t政治t总分t平均分t名次n ;printf-n;欢迎下载精品学习资源void displaystudent stud,

16、int n1,int n2int i;showtable; /* 显示表头 */ fori=n1;i=n2 ;i+printf%st%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2ft%.2ft%dtn,studi.number,studi.name,studi.sex,studi.subject0,studi.subject1,studi.subject2,studi.subject3,studi.subject4,st udi.score,studi.average,studi.index;/* 通过循环输出数据 */void display1printftt本系统由计

17、科二班制作nn;printftt制作人员列表 : nn;printfttprintfnn殷增锋ttt邵超n;getchar;五 调试与测试在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中显现了很多的错误,例如:各种数据类型的定义,函数的调用等等;但最终仍是在老师同学的帮忙下进行了各种代码的编写与修改, 最终程序成功的运行;下面是各个模块的界面图(1) 主菜单函数 :(2) :输入模块 :(3) :显示模块 :(4) :删除模块 :(5) :查找模块:(6) :修改模块 :六程序源#ifndef H_STUDENT_HH #define H_STU

18、DENT_HH欢迎下载精品学习资源#include stdio.h #include string.h #include malloc.h#define LEN sizeofstruct message_student /*一个结构体数组元素的长度*/#define numsubs 5 /*学科数目 */typedef struct message_student /*结构体定义 */char number6;char name20;char sex4;float subjectnumsubs;float score;float average;int index;student;extern

19、 int numstus; /* 同学数目 */extern student *pointer; /* 指向结构体数组 */ extern int lens;int menu_select; /* 函数声明 */ int openfilestudent stu; int findrecordstudent stud;int writetotextstudent stud;void welcome;void display1;void showtable;void sortstudent stu;void deleterecordstudent stu,int i;void addrecords

20、tudent stud;void displaystudent stud,int n1,int n2;void amendrecordstudent stud;void countstudent stud; void sortnumstudent stud;void sortnum2student stud;void sortnamestudent stud;void sortname2student stud;void sortcountstudent stud;void sortcount2student stud;void statisticstudent stud;void displ

21、ay1;#endif/#include head.h int menu_select欢迎下载精品学习资源char c;printfnn;printf | 1.增加同学记录5.统计信息|n;printf | 2.查询同学记录6.打开文件|n;printf | 3.修改同学记录7.储存文件|n;printf | 4.同学纪录排序printf | 0.退出系统 |nprintfnn;printf请选择 0-8:;8.显示记录;|n;c=getchar;getchar; return c-0;/#include head.hint findrecordstudent stud /*查找信息 */cha

22、r str2;int i,num;ifnumstus=0printf没有可被查找的记录n;return -1;elseprintf以何种方式查找? n1. 学号t2.姓名t3.名次n ;getsstr;ifstr0=1 /*按学号查找 */printf请输入学号 : ;getsstr;fori=0;i=numstus ;i+ ifstrcmpstr,studi.number=0displaystud,i,i;break;else continue;else ifstr0=2 /*按姓名查找 */printf请输入姓名 : ;getsstr;fori=0;i=numstus ;i+欢迎下载精品学

23、习资源ifstrcmpstr,studi.name=0displaystud,i,i;break;else continue;else ifstr0=3 /*按名次查找 */printf请输入名次 : ;scanf%d,#getchar;fori=0;inumstusprintf没有查找所要的信息; n ;return -1;return i;/#includehead.hint openfilestudent stuint i=0,j;FILE *fp;char filename20,str2;ifnumstus.=0printf已经有记录存在,是否储存 .y/n;getsstr;i

24、fstr0=y|str0=Y writetotextstu;printf请输入文件名 : ;getsfilename;numstus=0 ;欢迎下载精品学习资源iffp=fopenfilename,rb+=NULLprintf无法打开该文件 n ;return-1;fscanffp,%d,&numstus;fgetcfp; whileinumstusfscanffp,%s,stui.number;fscanffp,%s,stui.name;fscanffp,%s,stui.sex;forj=0;jnumsubs;j+ fscanffp,%f,&stui.subjectj;fscanffp,%f

25、,&stui.score;fscanffp,%f,&stui.average;fscanffp,%d,&stui.index;i+;fclosefp;printf文件读取成功 n ;printf是否显示纪录 .y/n;getsstr;ifstr0=y|str0=Y displaystu,0,numstus-1;return0;/#include head.hvoid sortstudent studint i;char str5;student *p;p=stud ;ifnumstus=0printf没有可供查询的记录 . ;while1fori=0;i+printf请输入查询方式 : ;pr

26、intf(直接输入回车就终止查询操作) n ;欢迎下载精品学习资源printf1.依据学号 t;printf2.依据姓名 t;printf3.getsstr依据名次 n;ifstrlenstr=0 break;ifstr0=1printf请输入排序次序: n ;printf1.升序排列 t;printf2.降序排列 n ;getsstr;ifstr0=1 sortnum2p;elsesortnump;displaystud,0,numstus-1;else ifstr0=2printf请输入排序次序: n ;printf1.升序排列 t;printf2.降序排列 n ;getsstr;ifst

27、r0=1sortname2p;elsesortnamep;displaystud,0,numstus-1;else ifstr0=3printf请输入排序次序: n;printf1.升序排列 t;printf2.降序排列 n ;getsstr;ifstr0=1sortcount2p;elsesortcountp;displaystud,0,numstus-1;else printf请输入 13 ;printf是否退出排序 .y/n;getsstr;欢迎下载精品学习资源ifstr0=y|str0=Y break;return;void sortnumstudent studint i,j;stu

28、dent temp;student *p;p=stud ;fori=0;inumstus ;i+forj=0;j0temp=*p+j;*p+j=*p+j+1;*p+j+1=temp;void sortnum2student studint i,j;student temp;student *p;p=stud ;fori=0;inumstus ;i+forj=0;j0temp=*p+j;*p+j=*p+j+1;*p+j+1=temp;void sortnamestudent studint i,j;student temp;student *p;欢迎下载精品学习资源p=stud ;fori=0;

29、inumstus ;i+ forj=0;j0temp=*p+j;*p+j=*p+j+1;*p+j+1=temp;void sortcountstudent studint i,j;student temp;student *p;p=stud ;fori=0;inumstus ;i+ forj=0;jstudj.indextemp=*p+j;*p+j=*p+j+1;*p+j+1=temp;void sortcount2student studint i,j;student temp;student *p;p=stud ;fori=0;inumstus ;i+ forj=0;jstudj+1.in

30、dextemp=*p+j;*p+j=*p+j+1;欢迎下载精品学习资源*p+j+1=temp;/#includehead.hvoid statisticstudent stud /*新增功能,输出统计信息 */int i,j=0,k=0;char c1,str2;float averagenumsubs,sum=0;ifnumstus=0printfelse没有可被查找的记录n ;while1printf printf下面将统计考试成果 n ;请选择你要统计哪科的成果 1.At2.Bt3.Ct4.Dt5.En;c1=getchar;printftswitchc1一共有个 %d记录n,numst

31、us; /*总共记录数 */case 1:fori=0;istudi.subject0 k=i;ifstudj.subject0studi.subject0 j=i;average0=sum/numstus;printft科目 A的最高分 :n; /* 最高分*/printftt学号:%s姓名:%s分数:%.2fn,studj.number,studj.name,studj.subject0;printftprintftt科目 A的最低分是 :n学号; /*:%s最低分 */姓名:%s分数:%.2fn,studk.number,studk.name,studk.subject0;printft科目 A的平均分是 %5.2fn,average0; /*平均分 */break;case 2:fori=0;istudi.subject1 k=i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁