




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生成绩管理系统学生姓名:郭*学 号:1567111215专 业:计算机科学与技术班 级:计科-2指导教师:刘立新日 期:2015年 12月25日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生成绩管理系统指导教师刘立新时间一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可
2、更换。某班学生成绩管理,包括以下功能:v 从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里v 打开文件后,计算每个人的总分和平均分,排序并保存v 具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)v 具有插入、删除和修改功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注
3、释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出
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_Name
8、void按姓名查找Search_IDvoid按学号查找scorefencevoid信息栏writefilevoid写入文件readfromfilevoid读出文件modifymenuvoid修改菜单modifyscorevoid修改成绩delete_stuvoid删除学生sortmenuvoid排序菜单sort_IDvoid按学号排序sort_scorevoid按成绩排序sort_avervoid按平均分排序sort_sumvoid按总分排序readscorevoid读取信息printscorevoid输出信息searchmenuvoid搜索菜单2.4 运行界面设计 首页 查询界面第三章 详细
9、设计3.1 输入模块设计 开始输入学生个数输入学生信息 成功 返回菜单3.2 输出模块设计 开始 输出信息 返回菜单3.3 查找模块设计 开始 选择查找方式 按姓名查找 按学号查找 学生信息返回菜单3.4排序模块设计 开始 选择排序方式按总分数排序按成绩排序按学号排序 学生信息3.5 保存及读取模块设计开始程序使用、修改信息保存创建或读取文件退出程序第四章 测试分析4.1 测试程序执行情况 主菜单 添加信息 查看学生信息 修改学生信息 查询出错 查询结果 排序结果第五章 课程设计总结通过此次课程设计,使我更加扎实的掌握了有关C语言方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思
10、考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手编写,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获
11、成功,收获喜悦,也永远不可能得到社会及他人对你的认可!附录:程序代码1. #include <stdio.h>2. #include <stdlib.h>3. #include <string.h>4. #include <windows.h>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. floa
12、t scoreCOURSE_NUM;14. float sum;15. float aver;16. STU;17. int menu(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();/信息栏2
13、4. void writefile(STU stu);/写入文件25. void readfromfile(STU stu);/读出文件26. void modifymenu(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. vo
14、id sort_aver(STU stu);/按平均分排序33. void sort_sum(STU stu);/按总分排序34. void readscore(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. readfromfile(stu);43. while (1)44. 45. ch = menu();46. swit
15、ch(ch)47. 48. case 1:49. system("cls");50. printf("n -添加学生信息-n");51. printf("输入学生的个数:n");52. scanf("%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. cas
16、e 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. printf("程序结束!n");72. exit(0);73. default:74. printf("输入错误!请重新输入n");75.
17、 Sleep(1000);76. system("cls");77. 78. writefile(stu);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. 对学生信息进行排
18、序n");90. printf(" 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
19、("例如:1567111111 王小明 99 88 77 44 100n");103. printf("n");104. while(num<a+n)105. 106. scanf("%ld %s",&stunum.ID,);107. for(j=0;j<COURSE_NUM;j+)108. 109. scanf(" %f",&stunum.scorej);110. 111. stunum.sum=sum_stu(stu);112. stunum.aver=stun
20、um.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");125. getchar();126. system("cls");127. 128. void printscore(STU stu,int num)/ 输出信息129. 130. int i,
21、j;131. scorefence();132. for(i=0;i<num;i+)133. 134. printf("%5d ",i+1);135. printf("%10ld%10s",stui.ID,);136. for(j=0;j<COURSE_NUM;j+)137. 138. printf("%9.2f",stui.scorej);139. 140. printf("%8.2f%8.2fn",stui.aver,stui.sum);141. 142. getchar();14
22、3. printf("n回车返回主菜单n");144. getchar();145. system("cls");146. 147. int sum_stu(STU stu)/ 求和148. 149. int i,sum;150. for(i=0;i<COURSE_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.按学号查找n
23、");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
24、 search_nameMAX_LEN,ch;177. int i,j,a;178. while(1)179. 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("你要查询的学
25、生信息为:n");192. scorefence();193. printf("%5d %10ld%10s",i,stui.ID,);194. for(j=0;j<COURSE_NUM;j+)195. 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.
26、 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)215. 216. printf("输入你要查找的学号:n");217. scanf("%ld",&search_ID);218. system(&q
27、uot;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,);230. for(j=0;j<COURSE_NUM;j+)231. 232. printf("%9.2
28、f",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. pr
29、intf("%6s%10s%10s","序号","学号","姓名");249. for(i=1;i<=COURSE_NUM;i+)250. 251. printf("%8s","成绩");252. printf("%d",i);253. 254. printf("%8s%8sn","均分","总分");255. printf("-n");256. 257. void wr
30、itefile(STU 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("写入文件错误!n");269. 270. for(i=0;i<num;i+)271. 272. if(fw
31、rite(&stui,sizeof(STU),1,fp)!=1)273. 274. printf("写入文件错误!n");275. 276. 277. fclose(fp);278. 279. void readfromfile(STU 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 (
32、fread(&num,sizeof(int),1,fp)!=1)289. 290. num=-1;291. 292. else293. 294. for(i=0;i<num;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
33、("2.修改姓名n");307. printf("3.修改成绩n");308. printf("4.删除n");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
34、",);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:328. printf("输入错误!请重新输入n");329. Sleep(1000);330. system("cls");331. 332. 333. void modifyscore(STU stu,int i)/修改成
35、绩334. 335. int j;336. for(j=0;j<COURSE_NUM;j+)337. 338. scanf(" %f",&stui.scorej);339. 340. for(j=0,stui.sum=0;j<COURSE_NUM;j+)341. 342. stui.sum=stui.sum+stui.scorej;343. 344. stui.aver=stui.sum/COURSE_NUM;345. 346. void delete_stu(STU stu,int i)/删除学生347. 348. for (i;i<num-1;
36、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("5.按科目4排序n"
37、);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:37
38、6. 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. break;390. case 5:39
39、1. sort_score(stu,3);392. system("cls");393. printscore(stu,num);394. break;395. case 6:396. sort_score(stu,4);397. system("cls");398. printscore(stu,num);399. break;400. case 7:401. sort_aver(stu);402. system("cls");403. printscore(stu,num);404. break;405. case 8:406. sort_sum(stu);407. system("cls");408. printscore(stu,num);409. break;410. 411. 412. void sort_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年电子商务教育资源的整合与利用试题及答案
- 供应链优化的常用工具与试题及答案
- 消防考试实务操作试题及答案
- 城市供水战略合作合同2025
- LED显示屏广告合同协议书
- 出口货物运输代理合同模板
- 16 海上日出 教学设计-2024-2025学年语文四年级下册统编版
- 八年级英语上册 Unit 2 How often do you exercise Section A(Grammar Focus-3c)教学实录 (新版)人教新目标版
- 2024春七年级语文下册 第2单元 5黄河颂教学实录 新人教版
- 医师高级职称述职报告
- SOR-FJ-001-01抗生素发酵工艺批生产记录(整套)
- (正式版)BB∕T 0095-2024 折叠式胶合板周转箱
- 湖北省2024年中考道德与法治真题试卷【附真题答案】
- 《中国饮食文化》课件-中国饮食文化溯源
- QCT1168-2022汽车用电动空气压缩机性能要求及台架试验方法
- 江苏省南通部分学校2024年高二3月月考数学试卷 答案
- 高考数学解答题常考公式及答题模板
- 退租房协议书
- 人教版高一下学期期末考试数学试卷与答案解析(共五套)
- 湖北省武汉市2024届高三下学期四月调考数学试卷
- 2024年辽宁石化职业技术学院单招职业适应性测试题库必考题
评论
0/150
提交评论