567597宋亚鑫学生选课管理系统.docx
内蒙古科技高校课程设计任务书课程名称CiS=课程设计设计时目学生选修课程管理系统指导老师康艇时间2016.1.52016.1.9一、教学要求1 .巩固和加深学生时C语言课程的暴本学问的理解和驾驭2 .驾驭C诺吉编程和程序两试的基本技能3 .利用Cim吉诳行基本的软件设计1.驾驭书写程序设计说明文档的实力5.提高运用C谙有耨决实际问遂的实力二、设计资料及参数旬个学生在老师供应的课程设计题目中随意选择一题,独立完成,趣日选定后不行更横。学生选修课程管理系统设计假定有nfj课程,集门课程有课程编号,课程名称,课程性质,总学时,授课学时,试验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课.试设计一选修课程系统,使之能供应以下功能:课程信息录入功能(课程信息用文件保存)一一输入:课程信息阅读功能一一输出查询功能:(至少一种查询方式)一一算法按学分杳询按课程名称育询÷学生选修课程(Ur选项)三、设计要求及成果1 .分析课程设计翘目的功能需求(可选用数祖或链衣实现,可多人(最多3人)协作完成一个题目)2 .写出具体设计说明(至少包括功能实现分析和模块流程图)3 .编写程序代码,网试程序使其能正确运行代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)1.设计完成的软件要便于操作和运用5.设计完成后提交课程设计报告(请严格依据模板IS行排版)四、进度支配第一天选择课程设计遨目,分析深四的要求其次天编程第三天弟程及调试第四天写课程谀计报告第6天提交课程设计报告(打印稿及电子稿)五'评分标准1 .依据平常上机考勤、表现和进度,老师将每天点名和检查2 .依据课程设计完成状况,必需有Ur运行的软件.3-依据课程设计报告的质信.如有雷同,则全部番同的全部人均判为不及格.六、建议叁考资料1 .C语言程序设计,谭浩强,清华。校出版社2 .C语言程序设计课程班计及刘振安,机械工业出版社内蒙古科技高校课程设计任务书错误!未定义书筌.第章需求分析错误!未定义书签.1.1 引言错误!未定义书筌.1.2 任务概述错误!未定义书签.1.3 数据描述错误!未定义书签.1.4 功能需求错误!未定义书签.1.5 性能需求错误!未定义书筌.1.6 运行需求错误!未定义书筌.1.7 任务支配错误!未定义书筌.其次章概要设计错误!未定义书签.2.1 总体设计错误!未定义书筌.2.2 数据类型设计(或数据结构设计)错误!未定义书签.2.3 接口设计函数声明错误!未定义书签.2.4 运行界面设计错误!未定义书筌.第三章具体设计错误!未定义书筌.1.1 输入模块设计错误!未定义书签.1.2 输出模块设计错误!未定义书筌。1.3 查找模块设计错误!未定义书签.1.4 排序模块设计错误!未定义书签.3. 5保存及读取模块设计错误!未定义书筌.第四章测试分析错误!未定义书筌.3.1 测试程序执行状况错误!未定义书签.4. 2出现的问题和解决的方法错误!未定义书签.第五章用户手册(可选)错误!未定义书签.4.1 运用说明错误!未定义书筌.4.2 运行说明错误!未定义书签.第六章课程设计总结错误!未定义书筌.附录:程序代码错误!未定义书签。参考文献错误!未定义书筌.致谢错误!未定义书签.第一章需求分析1.1 引言“选课”是现在高校行政管理工作中一项很重要的课题。而且是每个学期都必需要面对的问题。选课工作做不好,学生不知道自己将要学习的课程,老师也不知道自己将要讲授的课程,教务处的排课支配,教室支配等。其他调度工作也无从做起。因此,如何解决高校教务管理中的选课工作便成了如今各大高校面临的很实际的问题.随着科学技术的不顿提高,计算机科目日渐成熟,其强大的功能已为人们深刻相识,它已进入人类社会的各个领域并发挥着越来越重要的作用。应用计算机对高校教务信息工作进行协助,具有人工管理所无法比拟的优点.例如:检索快速,查找便利,牢靠性强,存储量大,保密性能好等.这些优点能够极大的提高教务工作的质量和效率,也是高校教务工作科学化,规范化,信息化管理的重要条件。因此,开发在线选课系统很有必要.本系统的目标在于:(D通过学生选修系统的实现,使学校对学生选修课信息的管理规范;(2)学生更加便利地查询自己的相关选课信息。1.2 任务概述假定有n门课程,每门型程有课程编号,课程名称,课程性质,总学时,授课学时,试验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课.试设计一选修课程系统,使之能供应以下功能:(I)课程信息录入功能(课程信息用文件保存)一一输入,课程信息阅读功能一一幅出(2)查询功能:(至少一种查询方式)一一算法按学分查询按课程名称杳询(3)学生选修课程(可选项)1.3 数据描述系统数据类型有:整型int,字符型Char,结构体struct;1.4 功能需求依据佶息管理系统的业务流程,要求以及所要实现的目标,我们可以拟出以下需求目标:建立学生信息的管理和雉护.实现计算机自动化管理体制.(2)建立学生选课管理机制,在计算机的支持下快速的完成学生选修课的查询和修改.(3)建立课程设量管理,在计算机的支持下实现课程的添加,删除,修改.(4)实现系统的多权双设量管理,保证系统平安性.1.5 性能需求系统的运行对于环境的要求是,1 .硬件环境目前,我们所开发的系统主要是应用在中小规模的学校内部,因此,一般配置的计算机硬件就可以满意系统需求.考虑到学校规模的扩大和硬件价格的降低,为本系统配量在较优秀的服务器硬件,可以充分发挥本系统性能.处理器:IntelPentium43.06GX或更高内存:256M(举荐)硬盘空间;4OGB显卡:SVGA显示适配器2 .软件环境操作系统,Windows2000/XP开发软件:MicrosoftVisualStudio.NET2005数据库1MicrosoftSQ1.Server200516运行需求用户界面屏幕格式:(1)要求有菜单及工具栏以便利操作(2)各数据信息可干鹿在屏幕上修改(3)个数据统计结果可在屏幕上显示(4)进行系统分析后的结果在另一窗口中显示第二章概要设计2.1总体设计2.2 数据类型设计(或数据结构设计)structstudentCharname60;char11)7;intscore;;2.3 接口设计函数名函数格式函数功能voidfhvoid返回主界面voidxgvoid修改已保存信息voidbjgvoid输出不及格人数voidpxvoid排列依次voidtjvoid统计选课内容voiddlvoidM除课程voidchazhao()void查找学生intaainInt课程管理主函数voidxhczvoid按学号查找voidXmCZovoid按姓名查找voidzz0void开发者信息voidselect0void查看学生voidaddvoid增加学生选课数voidbcavoid保存课程信息2.4 运行界面学生选课系统CAUswVyxI230sktop0xeMMKKKMMHMHHMHMH人学生学小娃堂和成陵Il怪及竽QKd的潭收e关予作者H保在致蛹>!«dlSft方学鱼遇。源潭程青,所有学1.透色充灌泛我找学生送修的金崔鼾除学空选修的津卷京国班计(总成粒和T均分)IHN2夕*3姐不及格人教J注蜂联上杼总*的依字I第三章具体设计3.1输入模块设计结束3.2输出模块设计3.3查找模块设计第四章测试分析4.1测试程序执行状况主菜单CUserssyx123Desktop0.exe学生选修课管理系统冷加学生场依律课"西看所有学生造£直潭程青技学生选修的藻程出除学生选修的课程成模统计(总成城和平均分),YI1确出不及格人双城入学生学弓.姓名和JMl修改学生地修的那彦关于作者像存或如退出东竦谓选当以上标!8代的数学:1.录入课程信息2.课程管理C:Userssyx123Desktop0.exe3.学生选课CUserssy×123Deiktop0.exe>Entrf0f.4.课程删除C:Userssyx123Desktop0.exe±RffiO*Entr请看人要聆滁的谡出的名字I戏学副除成功;第五章课程设计总结经过C语言课程设计,我们在老师的指导下共同努力,顺当完成该课程设计,感觉自己收获不少1学会了对简洁系统进行分析,刚拿到题目时,感觉特别育目,没有思路,无法下手.但我们多方搜集资料,力求现对学生选修课程管理系统有个初步相识,进而去理解学生选修课程管理系统的工作原理,最终产生自己的设计方案.当全部打算工作定后,我们顺当设计了学生选修课程系统。这次课程设计虽然花了我不少时间,但正是这些时间,让我见识了C语言的重要性。这个学生选课系统都是在自己学问范围内完成的,所以界面清蒸简洁,可能不是很好看,但肯定好用!从这里我也得到了一个体会,做一个程序,或者开发一个软件,应当着重从他的后台制作入手,不能作出一个中看不中用的程序或软件。信任这次的课程设计为我以后接并从事计算机工作打了一个小小的开头。很感玛这次的课程设计,它使我更加深刻的体会到独看专业书的重要性,只有驾驭了肯定量的专业学问才能得心应手的解决诸多问题;另外,做任何事都要有你耐性,不要一遇到问题困难就退缩,人生道路是曲折的,但正因为困难我们才交得坚毅。今后的路还很长,面对困难,让我们用行动去俘虏他吧I源代码,123456789Minclude<stdio.h>Minclude<stdlib.h>include<strig.h>structstudentcharame(60);charlD71;Intscore;);10. intdq(structstudentst(J);11. voidxiashi();12. voidbc(structstudentst();13. VOidadd();14. voidselect();15. voidzz();16. voidchazhao);17. void×hcz();18. voidXmCZ();19. voiddel();20. voidxmsc();21. voidxhsc();22. voidtj();23. voidp×();25. voidxg();26. void×hxg();27. voidXmxg0;28. voidbca();29. VOidfh();30. structstudentst(300);31. intNumber=O;32. ntmal()33. 34. intChoose=O;35. FI1.E*fp三NU1.1.;36. charyesorno;37. if(fp=fopenC,Ctudet.dat',z''rb,)=NU1.l)38. (39. printf(-ntt=>W:文件不存在,是否要创建一个?(yn)n,(9二)40. scanf(,'%c*,r8tesor11o);41. if(yesomo=yyesorno三='Y')42. (43. fp=fopen(,'C:/student.datMr*,wb*);44. fclose(f);45. )46. else47. exlt(O);48. )49. else50. 51. Number=dq(st);S2.S4.55.57.空格60.62.65.67.68.70.71.72.73.74.75.76.77.78.79.80.81.system("cls");while(true)xianshi();prntf(1'ttttSCanfOSe);system(',cls");switch(choose)case0:exit(O);break;case1:add。;break;case2:SeIeCtO;请选择以上标咫前的数字:九个fh();杳在学生成果break;Caie3:ChaZhao();break;caie4:del();fh();break;case5:tj();break;case6:px();break;82. case7:bjg();83. fh();84. break;85. case8:×g();86. fh();87. break;88. case9:zz();89. fh();90. break;91. case10rbca();92. fh();保存93. break:94. default:95. break;96. 97. fflush(stdn);98. getchar;99. system("cls");100. 101. 102. voidbca()103. 104. printf('11");105. prlntf(*n*);PrjnH("ttttv*Ma*n*a*'n*a'*w*tf*v*MaWVMMaWvVvMaaV'107. printf("tttt=程序在运行时己自动保存.*n");108. printf("tttf*w109. 111. 112. printf('11");113. printf(11");114. Printf("tttt*v*m*vw*<*v*m*ww*m*b*>wn")*115. printf(',tttt=>按Enter键返回主菜单n',>116. Printfr117. 118. void×g()119. (120. intway=0;121. printf(lt谛选择修改瓷找方式d);122. printf(tt1按学分查找惚改r11;123. printf("tt2按课程学分f找改V11;124. printf(11tt3退出请按O*Enterf11;125. scanf(td-wa);126. switch(way)127. 128. case1:×m×g();129. break;130. case2:xhxg();131. break;132. default:printf(tttt输入有误,结束!r);133. break;134. 135. 136. voidxmxg()137. (138. FI1.Etfp=NU1.1.;139. charname(601;140. inti=0;141. intChangeIndex=O;142. intinde×=0;143. printf("tt请输入要修改的课程学分,144. scanf(t%s',name);145. for(i=0;i<Number;i*+)146. 147. if(strcmp(name,st(i.name)148. (149. changelndex=i;保存要掇改的人的下标150. )151. break;152. 153. printf("ttW三tt学分tt学时r);154. printf(',tt%stt%stt%dnnM,$t(changelndex).namer$t(changelndex)JD/st(changelndex.sre);155. Printfrtt请重新输入该课程信息n)156. printf("tt课程:157. scanfC,st(changelnde×.ame);158. Printfrtt学分:”);159. scanf(*'%s,'zst(cha11gelndex.ID);160. Printf(“VV学时:161. scanf(,%d,ast(changelndex.score);162. fp=fope(',C7student.dawb,);163. for(i=0;l<Number;i*+)164. (165. fwrite(&st(i,s»zeof(structstudet)rlzfp);166. )167. fclose(fp);168. 170. (171. FI1.E4fp=NU1.1.;172. charid(60);173. inti三0;174. intChangelndex=O;175. intindex=0;176. PmtTtt请输入要修改的课程的学分:">;177. scanf(n%s,id);178. for(i三0J<Number3*÷)179. 180. if(strcmp(idlst(i).D)181. (182. changelndex=;保存要修的人的下标183. )184. break;185. 186. printf("ttiJR三tt学分Z学时rf);187. printf("tt%stt%stt%dnnn*.st(changelndex).namerst(changelndex).IDzst(charelndex).score);188. Prirnf(Nt清由新输入该课程信息An)189. printf(tt课程:”);190. scanfC¾s,st(changelnde×l.ame);191. Printfrtt学分:”);192. scanf(%s,st(changelndex.ID);193. PrintTtt学时:”);194. scanf(n%dl*,8st(changelndex.score);195. fpsfopen(MC:/studentdat*r"wbH);196. for(i=0;i<Number;i*+)198.fwrite(&st(i,sizeof(structStUdent),Up);199. 200. fclose(fp);201. Prinm"tttt=>修改胜利n-);202. 203. void出不及格人数204. 205. inti=0;206. printf("tt以下是不及格的课程207. printf("tt课程tt学分tt学时n");208. for(i=0;i<Number;i*+)209. (210. if(stbscore<60)211. (212. printf(ttstt%stt%dn"zsti).ame,stiJ.IDti.score);213. 214. 215. 216. voidPXo排序217. (218. structstudenttemp;219. intWantNUmber=O;220. inti=0;221. intj=O;222. for(i=0;i<Number-l;i4f)223. 224. forG=ij<Numberlj+)225. (226. f(stjj.sre>stj÷l.sre)228. temp三st(j;229. stj=stU÷lJ;230. st+l=temp;231. )232. 233. 234. printf("tt你想输出前几名的成果:235. sca11f(n%d"wantNUmber);236. if(wantNUmber>Number)237. (238. WantNUmber=Number;239. )240. pritf(tt课程tt学分tt学时241. for(i=0;i<wantNUmber;i+)242. 243. printf("tt%stt%stt%dn"zstil.name,stlJDt(score);244. )245. )246. voidtj()统计247. (248. inti=0;249. doubleSUm=O.0;250. for(i=0;i<Number;i+*)251. 252. sum*三st(i.score;253. 254. printf(',tt全班总分为:%fn"rsum);255. Printf("tt平均分为:%11,5umNumber);256.258. (259. int=0;260. printf(',tt1按课程名称删除);261. printf("tt2按课程学分删除n。;262. printf("tt3退出请按O÷Enternw);263. scanf(t%d-n);264. switch(n)265. 266. case1:xmsc();267. break;268. case2:xhsc();269. break;270. 271. 272. voidXmSCo按姓名删除273. (274. FI1.E*fp=NU1.1.;275. charname(60;276. inti=0;277. intj=O;278. Printfrtt请输入要捌除的课程的名字;,279. SCanf(H%s”,name);280. for(i=0;i<Number;i+*)281. 282. if(StrCmPmame,sUi).name)=0)我如筐找到就删除283. (284. for(j=i;j<Number-l;j*+)285. (286. Stj=Stj+l;288. Number-;289. )290. )将炳余数据写入文件重新一号的方式打开文件把以附的数据擦除了291. fp=fopen("Cstudent.dat","wb");292. for(i=0;i<Number;l+)293. (294. fwrite(8<sti,Sizeoffstructstudent),l,fp);295. 296. fclose(fp);297. pritf("tt删除胜利An");298. 299. voidXhSC0按学号刷除300. 301. FI1.E"p=NU1.1.;302. charid60;303. iti=0;304. intj三0;305. Prinm"tt请输入要删除的课程所占的学分;");306. scanf("%s",id);307. for(i=0;i<Number;i+*)308. 309. if(strcmp(id,stli.D)=0假如查找到就删除310. (311. for(j=i;j<Number-l;i+)312. (313. stj=stj+l;314. Number-;315. )316. 将剩余数据写入文件由新一写的方式打开文件把以前的数据擦除了317. fp=fopen("Cstudent.dat",''wb");319.320.fwrite(&$t(i,$izeof$tructstudent),lp);321.)322.fclose(fp);323.pri11tf("tt酬除胜利;n-);318.for(i三OJ<Numberji*÷)324.325.voidChaZhaO找学生326.(327.intn=0;328.prinrf("tt1按课程名称查找n);329.printf("tt2按课程学分杳找n-);330.printf("tt3退出请按(HEntern);331.scanf(n%dn,a11);switch()332.333.case1:×mcz();334.break;335.case2:xhcz();336.break;337.default:prntf("tt输入有误,结束ln”);338.break;339.340.341.voidXhCZ()按学号查找342.(343.charid(7;344.inti=0;345.printf("tt请输入要变找课程所占的学分门;346.SCanfet”,id);347. system("cls");348. printf("tt课程tt学分tt学时n");349. for(i=O;i<Number;i+)350. 351. If(StremP(IdsHIMo)=O)352. (353.printf("tt%stt%stt%d",st(i.name,st(i.ID,sti.sre);354. 355. )356.357.voidXmCZ()按姓Z杳找358.(359. Charname;360. inti=0;361. printf("tt请输入要查找的课程名称:");362.scanf("%s",name);363. system("cls");364. printf("tt课程tt学分tt学时n”);365. for(i=0;i<Number;t*+)366. (367. if(strcmp(name,stl.name)=O)368. (369.printf("tt%stt%stt%dn",st(i.name,sti.ID,sti.SMre);370. 371. )373.voidzz()374.(375.printf("tttnnt1)376.printf("tttAAAA内蒙古科技高校信息工程学院AA"j.377.printf(,'tttAAA15软件工程1班AAAAAAAAAnn");378.printf(,'ttt宋亚瑟Ar,J.379.printf("ttt380.381. voidSeIeCu)杳看学生382. 383. inti=0;384. printf("tt以下是全部学生所选择的课程、学分及其学时n");385. printf("tt课程tt学分tt学时n");386. for(i=0;i<Number;i+*)387. 388. printf("tt%stt%stt%dn,*,st(i.name,st(i).ID,sti.score);389. 390. 391. voidadd”增加学生392. 393.intnumberTemp=0;394. inti=0;395. structstudenttemp;临时保存信息396. Printf("tt请输入要增加课程的数目:);397. scanfC&d*,&numberTemp);398. for(i=0;i<numberTemp;l+)399. (400. Printfftt输入第d个课程伯息n",iT;401. Printfrtt课程:"»;402.scanf("%s",te11pname);403.Primfrtt学分:");404.scanf("%s",temp.lD);405.Printfrtt学时:”);406.$canf("%d",&temp.$core);407. St(NlJmber卜temp;将刚,添加的写入到数组408. bc(&temp);将刚添加的写入到文件409. 410. Printf("tt添加胜利n");411.412. voidbc(strctstudent*st)413. (414. FI1.E*fp=NU1.1.;415.fp=fopen("Cstudent.dat","ab+");416. fwrite(st,sizeof(structstudent),l,fp);417. fcose(fp);418.419. intdq(structstudentst)420. (421. FI1.E"fp=NU1.1.;422. Inti=0;424. while(fread(8st(i)rsizeof(structstudent),lrfp)425. i÷÷426. fclose(fp);427. returni;428.429.voidXianShi()432. PrWvVvx*aWn").433. printf("ttf*11");(前12后8)434. printf("ttt,435. p11ntf("ttf*三w三*.n);(前13后7中4)436. printf("ttf*,11");(前15后S中4)437. printf("ttf44*"“*n");(前16后10中4)438. printf("ttt4(前17后7)439. printf("ttf*三(前17后7)440. Printfrttta11");(前17后12>441. printf("ttt学生选修课管理系统IU增加学生选修课谀程|2查看全部学生选脩课课程fi找学生选修的课程(4) 制除学生选修的课程成果(5) 统计(总成果和平均分)(6输出前N名学生成果Pl输出不及格人数*,11');(前16后1S)442.Printfrttt修改学生选修的课程*n");(前16后10)443.printf("ttf*n");(9关于作者444.Prlntfrttf“.110保存数据11");445.printf("ttf10退出系统.*n");446. printf(ttt*三*三*n'')447. Printfrttf*>t*n").448. Prlntf("ttt-11>>449. Prlntfrn");450. printf('11");451. printf('11");452.