C语言课程设计——学生成绩管理系统.doc

上传人:z**** 文档编号:61305854 上传时间:2022-11-20 格式:DOC 页数:33 大小:302KB
返回 下载 相关 举报
C语言课程设计——学生成绩管理系统.doc_第1页
第1页 / 共33页
C语言课程设计——学生成绩管理系统.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《C语言课程设计——学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计——学生成绩管理系统.doc(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、优质文本内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生成绩管理系统学生姓名:郭*学 号:1567111215专 业:计算机科学与技术班 级:计科-2指导教师:刘立新日 期:2015年 12月25日优质文本内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生成绩管理系统指导教师刘立新时间2015.1.52015.1.9一、教学要求1. 稳固和加深学生对C语言课程的根本知识的理解和掌握2. 掌握C语言编程和程序调试的根本技能3. 利用C语言进行根本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程

2、设计题目中任意选择一题,独立完成,题目选定后不可更换。某班学生成绩管理,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 翻开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能即按照给定的关键字,如姓名找出满足条件的纪录v 具有插入、删除和修改功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求可选用数组或链表实现,可多人最多3人协作完成一个题目2. 写出详细设计说明至少包括功能实现分析和模块流程图3. 编写程序代码,调试程序使其能正确运行代码书写要标准,标示符要见名知意,要有必要的注释,

3、每人至少500行代码,不包括注释和花括号4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告请严格按照模板进行排版四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告打印稿及电子稿五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,那么所有雷同的所有人均判为不及格。六、建议参考资料1?C语言程序设计?,谭浩强,清华大学出版社2?C语言程序设计课程设计?,刘振安,机械工业出版社优质文本目 录内蒙古科技大

4、学课程设计任务书I第一章 需求分析31.1引言31.2任务概述31.3数据描述31.4功能需求31.5性能需求31.6运行需求41.7任务方案4第二章概要设计42.1总体设计42.2数据类型设计或数据结构设计52.3接口设计 /函数声明52.4运行界面设计6第三章详细设计73.1输入模块设计73.2输出模块设计73.3查找模块设计83.4排序模块设计83.5保存及读取模块设计9第四章测试分析104.1测试程序执行情况10第五章课程设计总结14附录:程序代码15参考文献32致谢32优质文本第一章 需求分析1.1 引言因学校中学生信息庞大,复杂,为了方便教师们管理学生信息,特编写了一个学生成绩管理

5、系统。1.2 任务概述1. 目标本学生成绩管理系统主要是为学校里的老师提供一个管理学生信息的平台。根据系统界面的提示信息对学生信息进行添加、浏览、修改、保存等操作。 2.运行环境Windows系统3. 用户特点懂得一些根本的电脑操作即可。4. 条件限制计算机一台1.3 数据描述系统的数据类型有:整型int,实型float,字符型char,结构体struct;自己定义的数据类型有:STU;1.4 功能需求v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 翻开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能即按照给定的关键字,如姓名找出

6、满足条件的纪录v 具有插入、删除和修改功能具有输出文件数据信息的功能1.5 性能需求无1.6 运行需求1. 硬件环境普通的计算机2. 软件环境支持的操作系统包括windows98/xp及及以上版本1.7 任务方案本系统共分为一个主页面模块主函数局部,五个功能模块(功能函数)分别为增加学生成绩信息、查看学生成绩信息、修改学生成绩信息、对学生信息进行排序、退出。设计时要先写好主函数、定义好全局变量和功能函数,再对五个功能函数进行设计。在每个功能函数和主函数应参加控制条件使用户可以随时退出系统,并在用户输入指令错误的时候给予提醒和退出选项。第二章 概要设计2.1 总体设计 程序运行 退出 排序 修改

7、 浏览 添加2.2 数据类型设计或数据结构设计typedef struct student/定义结构体 long ID;/学生学号 char nameMAX_LEN;/学生姓名 float scoreCOURSE_NUM;/学生成绩 float sum;/总分 float aver;/平均分STU;对学生信息采用一个结构体变量,使学生信息的管理更加灵活方便2.3 接口设计 函数名函数格式 /即函数首部函数功能menuint主菜单sum_stuint求和return_IDint通过学号返回数组下标return_nameint通过姓名返回数组下标Search_Namevoid按姓名查找Search

8、_IDvoid按学号查找scorefencevoid信息栏writefilevoid写入文件readfromfilevoid读出文件modifymenuvoid修改菜单modifyscorevoid修改成绩delete_stuvoid删除学生sortmenuvoid排序菜单sort_IDvoid按学号排序sort_scorevoid按成绩排序sort_avervoid按平均分排序sort_sumvoid按总分排序readscorevoid读取信息printscorevoid输出信息searchmenuvoid搜索菜单2.4 运行界面设计 首页 查询界面优质文本第三章 详细设计3.1 输入模块设

9、计 开始输入学生个数输入学生信息 成功 返回菜单3.2 输出模块设计 开始 输出信息 返回菜单3.3 查找模块设计 开始 选择查找方式 按姓名查找 按学号查找 学生信息返回菜单3.4排序模块设计 开始 选择排序方式按总分数排序按成绩排序按学号排序 学生信息3.5 保存及读取模块设计开始程序使用、修改信息保存创立或读取文件退出程序优质文本第四章 测试分析4.1 测试程序执行情况 主菜单 添加信息 查看学生信息 修改学生信息 查询出错 查询结果 排序结果优质文本第五章 课程设计总结通过此次课程设计,使我更加扎实的掌握了有关C语言方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一

10、遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验缺乏。实践出真知,通过亲自动手编写,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的开展和实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收

11、获喜悦,也永远不可能得到社会及他人对你的认可!优质文本附录:程序代码1. #include 2. #include 3. #include 4. #include 5. #define MAX_LEN 106. #define STU_NUM 307. #define COURSE_NUM 58. int num=0;9. typedef struct student/定义结构体10. 11. long ID;12. char nameMAX_LEN;13. float scoreCOURSE_NUM;14. float sum;15. float aver;16. STU;17. int m

12、enu(void);/主菜单18. int sum_stu(STU stu);/ 求和19. int return_ID(STU stu,long ID);/通过学号返回数组下标20. int return_name(STU stu,char name);/通过姓名返回数组下标21. void Search_Name(STU stu);/按姓名查找22. void Search_ID(STU stu);/按学号查找23. void scorefence();/信息栏24. void write stu);/写入文件25. void readfrom stu);/读出文件26. void mod

13、ifymenu(STU stu,int i);/修改菜单27. void modifyscore(STU stu,int i);/修改成绩28. void delete_stu(STU stu,int i);/删除学生29. void sortmenu(STU stu);/排序菜单30. void sort_ID(STU stu);/按学号排序31. void sort_score(STU stu,int m);/按成绩排序32. void sort_aver(STU stu);/按平均分排序33. void sort_sum(STU stu);/按总分排序34. void readscore

14、(STU stu,int n);/ 读取信息35. void printscore(STU stu,int n);/ 输出信息36. void searchmenu(STU stu);/ 搜索菜单37. int main()38. 39. int n;40. char ch;41. STU stuSTU_NUM;42. readfrom);43. while (1)44. 45. ch = menu();46. switch(ch)47. 48. case 1:49. system(cls);50. printf(n -添加学生信息-n);51. printf(输入学生的个数:n);52. s

15、canf(%d,&n);53. readscore(stu,n);54. break;55. case 2:56. system(cls);57. printf(n -查看学生信息-nn);58. printscore(stu,num);59. break;60. case 3:61. system(cls);62. printf(n-修改学生信息-n);63. searchmenu(stu);64. break;65. case 4:66. system(cls);67. printf(n-排序-n);68. sortmenu(stu);69. break;70. case 5:71. pr

16、intf(程序结束!n);72. exit(0);73. default:74. printf(输入错误!请重新输入n);75. Sleep(1000);76. system(cls);77. 78. write);79. 80. return 0;81. 82. int menu()/主菜单83. 84. int ch;85. printf(n - 学生成绩管理系统-n);86. printf( 1. 增加学生成绩信息n);87. printf( 2. 查看学生成绩信息n);88. printf( 3. 修改学生成绩信息n);89. printf( 4. 对学生信息进行排序n);90. pr

17、intf( 5. 退出n);91. printf(n -n);92. printf(请选择(1-5):);93. scanf(%d,&ch);94. return ch;95. 96. void readscore(STU stu,int n)/ 读取信息97. 98. int j,a;99. a=num;100. printf(n);101. printf(输入学生的学号、姓名、成绩n);102. printf(例如:1567111111 王小明 99 88 77 44 100n);103. printf(n);104. while(numa+n)105. 106. scanf(%ld %s

18、,&stunum.ID,stunum.name);107. for(j=0;jCOURSE_NUM;j+)108. 109. scanf( %f,&stunum.scorej);110. 111. stunum.sum=sum_stu(stu);112. stunum.aver=stunum.sum/COURSE_NUM;113. num+;114. 115. getchar();116. if(num!=0)117. 118. printf(n添加完成!n);119. 120. else121. 122. printf(n添加失败!n);123. 124. printf(回车返回主菜单n);

19、125. getchar();126. system(cls);127. 128. void printscore(STU stu,int num)/ 输出信息129. 130. int i,j;131. scorefence();132. for(i=0;inum;i+)133. 134. printf(%5d ,i+1);135. printf(%10ld%10s,stui.ID,stui.name);136. for(j=0;jCOURSE_NUM;j+)137. 138. printf(%9.2f,stui.scorej);139. 140. printf(%8.2f%8.2fn,st

20、ui.aver,stui.sum);141. 142. getchar();143. printf(n回车返回主菜单n);144. getchar();145. system(cls);146. 147. int sum_stu(STU stu)/ 求和148. 149. int i,sum;150. for(i=0;iCOURSE_NUM;i+)151. 152. sum=sum+stunum.scorei;153. 154. return sum;155. 156. void searchmenu(STU stu)/ 搜索菜单157. 158. int ch;159. printf( 1.

21、按学号查找n);160. printf( 2.按姓名查找n);161. printf(请选择n);162. scanf(%d,&ch);163. if(ch=1)164. 165. Search_ID(stu);166. 167. else if(ch=2)168. 169. Search_Name(stu);170. 171. getchar();172. system(cls);173. 174. void Search_Name(STU stu)/按姓名查找175. 176. char search_nameMAX_LEN,ch;177. int i,j,a;178. while(1)1

22、79. 180. printf(输入你要查找的姓名:n);181. scanf(%s,search_name);182. system(cls);183. i=return_name(stu,search_name);184. if(i=-1)185. 186. printf(学生不存在!n);187. 188. else189. 190. a=i;191. printf(你要查询的学生信息为:n);192. scorefence();193. printf(%5d %10ld%10s,i,stui.ID,stui.name);194. for(j=0;jCOURSE_NUM;j+)195.

23、196. printf(%9.2f,stui.scorej);197. 198. printf(%8.2f%8.2fn,stui.aver,stui.sum);199. modifymenu(stu,a);200. 201. printf(是否继续?(y/n);202. scanf( %c,&ch);203. if(ch=n|ch=N)204. 205. break;206. 207. 208. 209. void Search_ID(STU stu)/按学号查找210. 211. long search_ID;212. int i,j,a;213. char ch;214. while(1)

24、215. 216. printf(输入你要查找的学号:n);217. scanf(%ld,&search_ID);218. system(cls);219. i=return_ID(stu,search_ID);220. if(i=-1)221. 222. printf(学生不存在!n);223. 224. else225. 226. a=i;227. printf(你要查询的学生信息为:n);228. scorefence();229. printf(%5d %10ld%10s,i,stui.ID,stui.name);230. for(j=0;jCOURSE_NUM;j+)231. 232

25、. printf(%9.2f,stui.scorej);233. 234. printf(%8.2f%8.2fn,stui.aver,stui.sum);235. modifymenu(stu,a);236. 237. printf(是否继续?(y/n);238. scanf( %c,&ch);239. if(ch=n|ch=N)240. 241. break;242. 243. 244. 245. void scorefence()/信息栏246. 247. int i;248. printf(%6s%10s%10s,序号,学号,姓名);249. for(i=1;i=COURSE_NUM;i

26、+)250. 251. printf(%8s,成绩);252. printf(%d,i);253. 254. printf(%8s%8sn,均分,总分);255. printf(-n);256. 257. void write stu)/写入文件258. 259. FILE *fp;260. int i;261. if(fp=fopen(student.txt,wb)=NULL)262. 263. printf(不能翻开文件!n);264. return ;265. 266. if (fwrite(&num,sizeof(int),1,fp)!=1)267. 268. printf(写入文件错

27、误!n);269. 270. for(i=0;inum;i+)271. 272. if(fwrite(&stui,sizeof(STU),1,fp)!=1)273. 274. printf(写入文件错误!n);275. 276. 277. fclose(fp);278. 279. void readfrom stu)/读出文件280. 281. FILE *fp;282. int i;283. if (fp=fopen(student.txt,rb)=NULL)284. 285. printf(不能翻开文件!n);286. return;287. 288. if (fread(&num,siz

28、eof(int),1,fp)!=1)289. 290. num=-1;291. 292. else293. 294. for(i=0;inum;i+)295. 296. fread(&stui,sizeof(STU),1,fp);297. 298. 299. fclose(fp);300. 301. void modifymenu(STU stu,int i)/修改菜单302. 303. int ch;304. printf(n);305. printf(1.修改学号n);306. printf(2.修改姓名n);307. printf(3.修改成绩n);308. printf(4.删除n);

29、309. scanf(%d,&ch);310. switch(ch)311. 312. case 1:313. printf(输入新学号n);314. scanf(%ld,&stui.ID);315. break;316. case 2:317. printf(输入新姓名n);318. scanf(%s,stui.name);319. break;320. case 3:321. printf(输入新成绩n);322. modifyscore(stu,i);323. break;324. case 4:325. delete_stu(stu,i);326. break;327. default

30、:328. printf(输入错误!请重新输入n);329. Sleep(1000);330. system(cls);331. 332. 333. void modifyscore(STU stu,int i)/修改成绩334. 335. int j;336. for(j=0;jCOURSE_NUM;j+)337. 338. scanf( %f,&stui.scorej);339. 340. for(j=0,stui.sum=0;jCOURSE_NUM;j+)341. 342. stui.sum=stui.sum+stui.scorej;343. 344. stui.aver=stui.su

31、m/COURSE_NUM;345. 346. void delete_stu(STU stu,int i)/删除学生347. 348. for (i;inum-1;i+)349. 350. stui=stui+1;351. 352. num-;353. 354. void sortmenu(STU stu)/排序菜单355. 356. int ch;357. printf(选择排序的方式n);358. printf(1.按学号排序n);359. printf(2.按科目1排序n);360. printf(3.按科目2排序n);361. printf(4.按科目3排序n);362. printf

32、(5.按科目4排序n);363. printf(6.按科目5排序n);364. printf(7.按均分排序n);365. printf(8.按总分排序n);366. printf(请选择:n);367. scanf(%d,&ch);368. switch(ch)369. 370. case 1:371. sort_ID(stu);372. system(cls);373. printscore(stu,num);374. break;375. case 2:376. sort_score(stu,0);377. system(cls);378. printscore(stu,num);379. break;380. case 3:381. sort_score(stu,1);382. system(cls);383. printscore(stu,num);384. break;385. case 4:386. sort_score(stu,2);387. system(cls);388. printscore(stu,num);389.

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com