收藏 分销(赏)

C语言专业课程设计学生成绩标准管理系统(3).doc

上传人:w****g 文档编号:2497411 上传时间:2024-05-30 格式:DOC 页数:36 大小:299.04KB
下载 相关 举报
C语言专业课程设计学生成绩标准管理系统(3).doc_第1页
第1页 / 共36页
C语言专业课程设计学生成绩标准管理系统(3).doc_第2页
第2页 / 共36页
C语言专业课程设计学生成绩标准管理系统(3).doc_第3页
第3页 / 共36页
C语言专业课程设计学生成绩标准管理系统(3).doc_第4页
第4页 / 共36页
C语言专业课程设计学生成绩标准管理系统(3).doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生成绩管理系统学生姓名:郭*学 号:专 业:计算机科学和技术班 级:计科-2指导老师:刘立新日 期: 12月25日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生成绩管理系统指导老师刘立新时间.1.5.1.9一、教学要求1. 巩固和加深学生对C语言课程基础知识了解和掌握2. 掌握C语言编程和程序调试基础技能3. 利用C语言进行基础软件设计4. 掌握书写程序设计说明文档能力5. 提升利用C语言处理实际问题能力二、设计资料及参数每个学生在老师提供课程设计题目中任意选择一题,独立完成,题目选定后不可更换。某班学生成绩管理,包含

2、以下功效:v 从键盘输入包含学号、姓名、各门课程成绩(不少于5门),并将其保留在磁盘文件里v 打开文件后,计算每个人总分和平均分,排序并保留v 含有单项查询或多项查询功效(即根据给定关键字,如姓名找出满足条件纪录)v 含有插入、删除和修改功效v 含有输出文件数据信息功效三、设计要求及结果1. 分析课程设计题目标功效需求(可选择数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出具体设计说明(最少包含功效实现分析和模块步骤图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必需注释,每人最少500行代码,不包含注释和花括号)4. 设计完成软件要便于操作

3、和使用5. 设计完成后提交课程设计汇报(请严格根据模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题要求第二天 编程第三天 编程及调试第四天 写课程设计汇报第五天 提交课程设计汇报(打印稿及电子稿)五、评分标准1. 依据平时上机考勤、表现和进度,老师将天天点名和检验2. 依据课程设计完成情况,必需有可运行软件。3. 依据课程设计汇报质量,如有雷同,则全部雷同全部些人均判为不及格。六、提议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社目 录内蒙古科技大学课程设计任务书I第一章 需求分析31.1引言31.2任务概述31.3数据描述31.4

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 引言因学校中学生信息庞大,复杂,为了方便老师们管理学生信息,特编写了一个学生成绩管理系统。1.2 任务概述1. 目标本学生成绩管理系统关键是为学校里老师提供一个管理学生信息平

5、台。依据系统界面提醒信息对学生信息进行添加、浏览、修改、保留等操作。 2.运行环境Windows系统3. 用户特点知道部分基础电脑操作即可。4. 条件限制计算机一台1.3 数据描述系统数据类型有:整型int,实型float,字符型char,结构体struct;自己定义数据类型有:STU;1.4 功效需求v 从键盘输入包含学号、姓名、各门课程成绩(不少于5门),并将其保留在磁盘文件里v 打开文件后,计算每个人总分和平均分,排序并保留v 含有单项查询或多项查询功效(即根据给定关键字,如姓名找出满足条件纪录)v 含有插入、删除和修改功效含有输出文件数据信息功效1.5 性能需求无1.6 运行需求1.

6、硬件环境一般计算机2. 软件环境支持操作系统包含windows98/xp及及以上版本1.7 任务计划本系统共分为一个主页面模块(主函数部分),五个功效模块(功效函数)分别为增加学生成绩信息、查看学生成绩信息、修改学生成绩信息、对学生信息进行排序、退出。设计时要先写好主函数、定义好全局变量和功效函数,再对五个功效函数进行设计。在每个功效函数和主函数应加入控制条件使用户能够随时退出系统,并在用户输入指令错误时候给提醒和退出选项。第二章 概要设计2.1 总体设计 程序运行 退出 排序 修改 浏览 添加2.2 数据类型设计(或数据结构设计)typedef struct student/定义结构体 lo

7、ng ID;/学生学号 char nameMAX_LEN;/学生姓名 float scoreCOURSE_NUM;/学生成绩 float sum;/总分 float aver;/平均分STU;对学生信息采取一个结构体变量,使学生信息管理愈加灵活方便2.3 接口设计 函数名函数格式 /即函数首部函数功效menuint主菜单sum_stuint求和return_IDint经过学号返回数组下标return_nameint经过姓名返回数组下标Search_Namevoid按姓名查找Search_IDvoid按学号查找scorefencevoid信息栏writefilevoid写入文件readfromf

8、ilevoid读出文件modifymenuvoid修改菜单modifyscorevoid修改成绩delete_stuvoid删除学生sortmenuvoid排序菜单sort_IDvoid按学号排序sort_scorevoid按成绩排序sort_avervoid按平均分排序sort_sumvoid按总分排序readscorevoid读取信息printscorevoid输出信息searchmenuvoid搜索菜单2.4 运行界面设计 首页 查询界面第三章 具体设计3.1 输入模块设计 开始输入学生个数输入学生信息 成功 返回菜单3.2 输出模块设计 开始 输出信息 返回菜单3.3 查找模块设计 开

9、始 选择查找方法 按姓名查找 按学号查找 学生信息返回菜单3.4排序模块设计 开始 选择排序方法按总分数排序按成绩排序按学号排序 学生信息3.5 保留及读取模块设计开始程序使用、修改信息保留创建或读取文件退出程序第四章 测试分析4.1 测试程序实施情况 主菜单 添加信息 查看学生信息 修改学生信息 查询犯错 查询结果 排序结果第五章 课程设计总结经过此次课程设计,使我愈加扎实掌握了相关C语言方面知识,在设计过程中即使碰到了部分问题,但经过一次又一次思索,一遍又一遍检验最终找出了原因所在,也暴露出了前期我在这方面知识欠缺和经验不足。实践出真知,经过亲自动手编写,使我们掌握知识不再是纸上谈兵。过而

10、能改,善莫大焉。在课程设计过程中,我们不停发觉错误,不停更正,不停领悟,不停获龋最终检测调试步骤,本身就是在践行“过而能改,善莫大焉”知行观。这次课程设计最终顺利完成了,在设计中碰到了很多问题,最终在老师指导下,最终游逆而解。在以后社会发展和实践过程中,一定要不懈努力,不能碰到问题就想到要退缩,一定要不厌其烦发觉问题所在,然后一一进行处理,只有这么,才能成功做成想做事,才能在以后道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及她人对你认可!附录:程序代码1. #include 2. #include 3. #include 4. #include 5.

11、#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 menu(void);/主菜单18. int sum_stu(STU stu);/ 求和19. int return_ID(STU stu,long ID);/经过学号返回

12、数组下标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 writefile(STU stu);/写入文件25. void readfromfile(STU stu);/读出文件26. void modifymenu(STU stu,int i);/修改菜单27. void modifyscore(STU stu,int i);/修改成绩

13、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(STU stu,int n);/ 读取信息35. void printscore(STU stu,int n);/ 输出信息36. vo

14、id 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. switch(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. syst

15、em(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. printf(程序结束!n);72. exit(0);73. default:74. printf(输入错误!请重新输入n);7

16、5. 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. 对学生信息进行排序n);90. printf( 5. 退出n);91. printf(n -n);92. printf(请选择(1-5):);9

17、3. 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(比如: 王小明 99 88 77 44 100n);103. printf(n);104. while(numa+n)105. 106. scanf(%ld %s,&stunum.ID,stunum.name);107. for(j=0;jCOURSE_NUM;j+)108. 109. sc

18、anf( %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);125. getchar();126. system(cls);127. 128. void printscore(STU stu

19、,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,stui.aver,stui.sum);141. 142. getchar();143. printf(n回车返回主菜单n);144.

20、 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.按学号查找n);160. printf( 2.按姓名查找n);161. printf(请选择n);162. scanf(%d,&c

21、h);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)179. 180. printf(输入你要查找姓名:n);181. scanf(%s,search_name);182. syste

22、m(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. 196. printf(%9.2f,stui.scorej);197. 198. printf(%8.2f%8.2fn,stui.av

23、er,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)215. 216. printf(输入你要查找学号:n);217. scanf(%ld,&search_ID);218. system

24、(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. printf(%9.2f,stui.scorej);233. 234. printf(%8.2f%8.2fn,stui.aver,st

25、ui.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+)250. 251. printf(%8s,成绩);252. printf(%d,i);253. 254. printf(%8s%8sn

26、,均分,总分);255. printf(-n);256. 257. void writefile(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;inum;i+)271. 272. if(fwrite(&stui,size

27、of(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 (fread(&num,sizeof(int),1,fp)!=1)289. 290. num=-1;291. 292. else293.

28、 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);309. scanf(%d,&ch);310. switch(ch)311. 312. case 1:31

29、3. 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:328. printf(输入错误!请重新输入n);329. Sleep(1000);330. syste

30、m(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.sum/COURSE_NUM;345. 346. void delete_stu(STU stu,int i)

31、/删除学生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(5.按科目4排序n);363. printf(6.按科目5排序n);364. printf(7.按均分排序

32、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. break;390. case 5:391. sort_score(stu,3);392.

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服