版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计(论文)题目:学生选修课管理系统设计学生姓名:只学号:20141409班级:吐软所在院咅E:广西科技大学指导教师:2015年6月学生选修课管理系统设计学生选修课管理系统设计摘要C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能
2、力。这次学生选修课系统管理设计时间虽然仅有一个星期,但确实使我受益非浅。通过学生选修课系统管理设计我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对MicrosoftVisualC+6.0的使用技巧。C语言是在国内外广泛使用的一种计算机语言。语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。关键词:学生选修课系统管理;C语言课程设计;计算机技术;模块化程序设计
3、;信息录入;浏览信息;选课;查询STUDENTSELECTIVECOURSESMANAGEMENTSYSTEMDESIGNABSTRACTCIanguagecurriculumdesignandmoderncomputertechnologyinthepracticalapplicationofthecombination,weareatthisstageoflearningtheorycourseontheirownsideoftheabilityofagoodtest,fromthebeginningofthealgorithmtorunafterthebeautifulgraphical
4、interfaceandexcitingavailableprocedures,isaverygoodlearningandtrainingprocess.Weconsolidatetheoriginaltheoryofknowledge,cultivateourflexibleapplicationandintegrationoftheknowledgelearnedandskillsofanalysis,abilitytosolvepracticalproblem.Sothatwerealizethattheirknowledgeandabilityinpracticalapplicati
5、onandplay.Cannotonlystimulateconsciousnessofinnovation,alsocandevelopcreativeability,communicationskillstraining.Thestudentelectivesystemmanagementdesigntimealthoughonlyaweek,butitdoesmakemebenefit.Studentselectivesystemmanagementdesignmyrichexperieneeincomputeroperation,moredeepunderstandingoftheCI
6、anguage,familiarwiththeenvironment,moreincreasedtoMicrosoftVisualC+6usingskills.TheCIanguageiswidelyusedathomeandabroadacomputerIanguage.Languagefeature-rich,expressivecapabilityisstrong,flexibleandconvenientuse,notonlyhastheadvantagesofhigh-levellanguage,butalsohasmanyofthecharacteristicsoflow-leve
7、llanguage,suitableforthepreparationofsystemsoftware.Atthesametime,IthinkCIanguageshouldbetheoperationofcombiningtheoryandcurriculum,constantlywritingtothink,thetwoareinseparable.Usinthepreparationofalargerprocessshoulddivideitintoseveralsmallprocedures,itwouldbemucheasier.Keywords:studentselectivesy
8、stemmanagement;Clanguagecurriculumdesign;computertechnology;modulardesign;information;informationquery;selection;目录1、需求分析12. 1概要设计12. 1模块设计及图示12.2 主函数流程设计23详细设计33. 1程序中的数据类型33. 2函数运行过程详解34、设计和调试分析134. 1调试中遇到的问题134.2算法复杂度分析154.3经验和体会155、用户使用说明16&测试数据和测试结果16参考文献221需求分析假定有N门课程,每门课程有课程编号,课程名称,课程性质,总
9、学分,授课学时,实验上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。要求设计一选修课程系统,使之能提供以下功能:(1)课程信息录入功能(课程信息用文件保存)输入;(2)课程信息浏览功能-输出;(3)查询功能:(多种查询方式:一种、任意两种组合、三种都能满足)-算法;(1)按学分查询(2)按课程性质查询;(3)按课程名称查询;要求:(1)用C语言实现系统,源程序要有适当的注释,使程序容易阅读;(2)函数功能要划分好(结构化程序设计);(3)至少采用文本菜单界面(如果能采用图形菜单界面更好);(4)可以增加新功能模块2概要设计本程序功能模块根据程序设计的需求,综4.0
10、合程序的实用性、智能化得考虑,将程序划分为6个模块分别编写:2.1五个模块分别为:(1)浏览课程信息模块(2)查询课程信息模块(3) 进入系统进行选课模块(4) 选课情况统计模块(5) 录入选课信息模块学生选课系统执行主流程如图所示,先执行主函数学生选课系统执行主流程如图所示,先执行主函数中显示菜单函数,通过循环和按键操作来执行相应的操作。按键的有效键值为05之间的任意数值,其他按键为无效输入。各个按键的执行功能为:“1”浏览已录入的选修课课程信息调用函数,browser。;开始r主函数“2”通过不同的方式查找记录,调用函数search();“3:”进入系统进行选课,调用函数xuan_ke()
11、;“4”查看课程已选情况,调用函数xuanke_information“5”录入选修课信息,调用函数input();“0”退出系统;输入【05中所要操作的1进行相应的操作F项目对应的数3详细设计3.1程序中定义的数据类型3.1、1定义与课程有关的结构体structcourseintnum;/*课程编号*/charname20;/*课程名称*/charkind10;/*课程性质*/inttaltime,ttime,etime,mark,term;/*课程时间,学分,开课信息等*/;定义与学生有关的结构体structstudentintsnum;/*学生学号*/intcnum;/*所选课程编号*/
12、charcname20;/*所选课程名称*/;3.2每个函数的过程详解3.2.1voidf1();函数原型:voidf1();函数源程序:voidf1()/*常用函数2*/printf("n课程编号课程名称课程性质授课学时实验或上机学时总学时学分开课学期:n");函数功能及实现:此函数仅包含输出语句,在课程信息输出之前调用此函数,打印出表头信息3.2.2 voidmenu();函数原型:voidmenu()函数源程序:voidmenu()/*主菜单*/Printf(“n”);printf("欢迎使用学生选课系统!n");printf("*n&q
13、uot;);*1-浏览选课信息2-查询选课信printf("自*丿111、n");printf("*3-进入选课操作4-选课情况统计*n");printf("*5-录入选课信息0-退出选课系统*n");printf("*n");printf("请选择输入选项编号(请写先选择5进行课程信息录入):");函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择的项目进行后续操作3.2.3 voidbrowser。;函数原型:voidbrowser。;函数源程序:/*浏览选课信息*/voidbro
14、wser。FILE*fp;/*定义指向文件的指针*/structcoursec;/*定义课程结构体变量c*/if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)/*直到文件结束*/fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime
15、,&c.mark,&c.term);/*将课程信息写入文件*/printf("%5d%12s%9s%9d%12d%12d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*格式化输出*/fclose(fp);/*关闭文件*/menu();函数功能及实现:此函数先定义指向文件的指针*fp,课程结构体变量c,通过if语句判断文件是否存在,在调用函数f1(),输出表头信息,通过for循环并使用fscanf函数将文件中的课程信息读出并通过printf打印到屏幕上,再通过fcl
16、ose函数关闭文件。3.2.4 voidsearch();函数原型:voidsearch();函数源程序:/*查询选课信息*/voidsearch()FILE*fp;/*定义文件指针变量*/structcoursec;/*定义学生结构体变量c*/intscore;charkind10;charname20;intb;/*输入需要的查询课程信息的方式*/printf("请选择查询方式,输入选项数字:");printf("n1按学分查询nn");printf("n2.按课程性质查询nn");printf("n3.按课程名称查询n
17、n");scanf("%d",&b);for(;b<1|b>3;)printf("输入错误,请重新输入scanf("%d",&b);/*按学分查询*/if(b=1)printf("n请输入您要查询的学分:");scanf("%d",&score);if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for
18、(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(c.mark=score)printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*按课程细致查询*/elseif(b=2
19、)printf("n请输入您要查询的课程性质:");scanf("%s",&kind);if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.tal
20、time,&c.mark,&c.term);if(strcmp(c.kind,kind)=0)printf("%5d%12s%9s%9d%9d%11d%11d%11dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*按课程名称查询*/elseif(b=3)printf("n请输入课程名称:");seanf("%s",&name);if(fp=fopen("course.txt","r")=N
21、ULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(strcmp(,name)=0)printf("%5d%12s%9s%9d%9d%11d%11d%11dn",c.num,,c.
22、kind,c.ttime,c.etime,c.taltime,c.mark,c.term);elseprintf("输入错误!");exit(1);fclose(fp);menu();/*调用menu函数*/函数功能及实现:先定义学生结构体变量s,打印相关可供选择的选项,通过scanf函数读取输入字符,打印表头,再使用if语句进行相关选择。如果数“1,则是按学分查询课程,符合第一个if语句,输入想要查询的学分,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;如选择“2,符合第二个if语句,则按照课程性质查询,输入课程性质,程序通过for
23、循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;如输入“3”符合第二个if语句,则按照课程名称查询,输入要课程名称,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;查询完成后通过fclose函数关闭文件,打印主菜单,返回主函数。3.2.5 voidxuan_ke();函数原型:voidxuan_ke()函数源程序:/*进入选课操作*/voidxuan_ke()structstudents;/*定义学生结构体变量s*/structcoursec;/*定义课程结构体变量c*/FILE*fp;/*定义文件指针变量*/printf(&quo
24、t;n请输入您的学号及您要选择的课程编号(用空格分开):");scanf("%d%d",&s.snum,&um);if(fp=fopen("course.txt","r")=NULL)/*打开选课记录文件"course.txt"*/printf("nCannotopencourse!'n");for(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.
25、kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(um=c.num)break;fclose(fp);/*关闭选课记录文件"course.txt"*/if(fp=fopen("student.txt","a+")=NULL)printf("nCannotopenstudent!n");/*将学生选课信息输入student.txt文件*/fprintf(fp,"%d%d%sn",s.snum,um,c
26、.name);fclose(fp);printf("n恭喜您选课成功!n");menu();函数功能及实现:进入此函数可进行自由选课,首先定义了学生结构体变量s,和课程结构体变量c。选课学生输入自己的学号和要选的课程,通过for循环打开文件并找到所要选择的课程,通过break跳出循环,关闭课程文件“course.txt并将学生选课信息存入文件“student.tx中,”关闭文件。打印菜单信息,返回主函数。3.2.6 voidxuanke_information();函数原型:voidinformation();函数源程序:/*选课情况统计*/voidxuanke_infor
27、mation()inttotal=O;/*人数统计变量*/FILE*fp;structstudents;if(fp=fopen("student.txt","r")=NULL)/*打开选课记录文件"student.txt"*/printf("nCannotopenstudent!n");printf("n学号课程编号课程名称n");for(;!feof(fp);)fscanf(fp,"%d%d%sn",&s.snum,&um,&ame);total+;
28、printf("%22d%17d%18sn",s.snum,um,ame);printf("n选课学生总人数为:%d人",total);fclose(fp);menu();函数功能及实现:此函数为查看选修课被选择的情况。定义了变量total为了统计选课人数,通过if语句判断是否存在文件“student.txt,通过for循环打印出所有已选课学生的学号、选课课程编号和所选课程的名称,通过计数变量total输出已选课的人数信息。然后打印菜单,返回主函数。3.2.7 voidinput()函数原型:voidinput();函数源程序:/*录入选修课课程信息*/
29、voidinput()FILE*fp;structcoursec;intcount;inti;if(fp=fopen("course.txt","a+")=NULL)/*建立文件"course.txt"*/printf("cannotopenfilen");printf("n(录入选课信息)请输入课程门数:");scanf("%d",&count);printf("n(各项目间用空格分开)nn");f1();for(i=0;i<count;i
30、+)scanf("%d%s%s%d%d%d%d%d",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);fprintf(fp,"%d%s%s%d%d%d%d%dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);fclose(fp);printf("n录入数据成功!nn");menu();函数功能及实现:此函数
31、录入课程信息,在查询、浏览、进入选课,查看选课信息等函数之前。定义指向文件的指针变量*fp,课程信息结构体c,通过fopen函数建立文件”course.tx,后输入录入课程的门数,打印表头,通过for循环,用scanf函数从屏幕读取课程信息,并通过fprintf函数将课程信息录入到文件“course.tx中,”最后输出主菜单,返回主程序。3.2.8 voidmain()函数源程序:/*主函数*/voidmain()intn;menu();scanf("%d",&n);/*防止错误,提示重新输入*/for(;n>5|*0;)printf("n输入错误!
32、请重新输入!seanf("%d",&n);while(n>0&&*6)switch(n)case1:browser();break;/浏览选课信息*/case2:search();break;/查询选课信息*/case3:xuan_ke();break;/进入选课操作*/case4:xuanke_information();break;/*选课情况统计*/case5:input();break;/*录入选课信息*/scanf("%d",&n);/*防止错误,提示重新输入*/for(;n>5|*0;)printf
33、("n输入错误!请重新输入!scanf("%d",&n);system("cls");/*调用系统命令cls,清除屏幕*/if(n=0)exit(0);/*退出选课系统*/););进行后续for循环可函数功能及实现:函数先打印出主菜单,用户可通过输入项目编操作,输入数字为05之间的任意数字,代表进入不同的模块,通过有效避免错误选择。如果输入15通过while循环和switch调用相关函数,实现相关功能,调用完后,通过break跳出循环,并选择后续操作。为了界面的更加简洁,调用DOS命令,清屏。如果输入0则执行exit(O)退出程序。4设
34、计和调试分析4.1调试中遇到的问题在用scanf函数给普通变量输入数据时,在变量名前漏写地址运算符&。如:scanf(%d%d,x,y);(2) 在scanf函数调用语句中,企图规定输入实型数据的小数位。如执行以下语句:scanf(%6.2f,&a);(3) 输入数据时的数据形式与要求不符。用scanf函数输入数据时,必须注意要与scanf语句中的对应形式匹配。如:scanf(%d,%d,&x,&y);若按以下形式输入数据:24是不合法。数据2和4之间应当有逗号。输入、输出时的数据类型与所用格式说明符不匹配。例如有以下说明语句:intx=1;chary='
35、;a'则运行时执行语句printf(=y=%dn,x,y);将给出与原意不符的结果:(在TURBOC2.0下运行)(5) 混淆"="和"="。在C语言中,"二"赋值运算符,"="是关系运算符。(6) 在不该出现分号的地方加了分号。例如:if(x>y);printf("xislargerthaRyrT);(7) 对于复合语句,忘记加花括号。例如:i=1;a=0;while(iv=10)a+=i;i+;printf(滋dn,a);(8) 误把数组说明时所定义的元素个数作为最大下标值使用。C语言规
36、定,引用数组元素时下标从0开始,即下标值的下限为0,而下标的上限值是数组定义时元素个数减1。(9) 在switch语句的各分支中未使用break语句。例如:switch(n)case1:browser();case2:search();case3:xuan_ke();case4:xuanke_information();case5:input();4.2算法的时间复杂度分析时间复杂度分析设有n们选修课则算法的时间复杂度依次为:browser。的时间复杂度为:T仁0(n);search(的时间复杂度为:T2=O(3*(2+n)xuan_ke()的时间复杂度为:T3=O(2+2*n)xuanke_
37、information()的时间复杂度为T4=O(1+2*n)input()的时间复杂度为:T5=O(1+2*n)所以时间复杂度为T=O(n)4.3经验和体会(1) 通过这次的课程设计,使我了解了一个简单的学生选课系统的设计过程,并且基本掌握了MicrosoftVisualC+的基本用法,掌握C语言程序设计课程的基本知识及其应用情况,加深对该课程的理解,在这次设计过程中使我对编程和程序的开发建立了浓厚的兴趣。(2) 在设计过程中遇到了很多的问题,但是最后通过自己的努力或者在网上寻找最后都得到了解决,虽然这次的设计是一个很小的程序但是设计这样的程序真的不简单呀,虽然这次的设计时间很短,并且程序也
38、不是很大,但是还是遇到了许多问题,但是我相信在以后的学习中我会更加的努力,并且努力的改正现在的程序,使之程序的功能更加的完善。(3)通过此次编程培养了我们结构化程序设计的思想,加深了对高级语言基本语言要素和控制结构的理解,锻炼我们独立思考制作程序的能力,并且掌握了一些课程设计的相关知识与实践操作能力,为以后的学习提供了锻炼的机会。经过设计和开发,我对于数据的一致性的问题也通过程序进行了有效的解决。从而是我对c语言这门课程有了更好的了解。5用户使用说明(1)根据正确的提示安装软件。(2)Intel486以上系列、AMDK6以上系列等PC台式机和便携式电脑都可运行。(3)打开该程序系统,浏览菜单,
39、根据需要选择功能,进行各项操作。操作如下:点击开始菜单,进入菜单选择。输入:将所需的信息输入。输出:学生信息、课程查询输入:根据不同的需要选择,当信息输入显示出错误时,进入浏览信息,找出错误。当错误不能改正,则退出浏览信息。进入查询信息:则屏幕会出现三个对话框一一按学分,课程性质和课程名称查找,查处相应的所选课程信息(是否选满)。当查询不能显示需要时进入修改程序,把所输入的信息进行修改,使之正确能够正常运行或进入删除信息中,重新输入自己所要的信息。当信息输入正确,进入你所需要的菜单程序中:课程信息:显示课程编号、课程名称、课程性质、授课学时、实验或上机学时、总学时、学分开课学期。学生信息:显示
40、出学生的学号。6测试数据和测试结果(1)进入系统界面(2)录入选修课课程信息:根据提示输入课程信息,先输入课程门数,再输入相关课程信息,每个输入项用空格隔开,如图输入5门课程后的结果:自mr-rm.”!"mrg-1-1-:f选选选®AA-一_135曇>雙A-自巨自文矗妒弓悟鉴地应投睾视isas券程盔離Fl让诔久2n4LH(3)浏览课程信息:在输入课程信息后方可进行课程信息浏览,如图是输入“1”进行课程信息浏览后得到的结果:c=vrijh-FTFfl1棵程扁号12:果;崖名称itei动画证竦投侯课文文人人自自自K课学时丄310««实验或上机学町22a
41、2总学时丄吕12LU1Q1U学分32开课学期:11111欧迎使埔学主选课乎统I箭鋼:0-迟出选课系蜿«箭鋼:0-迟出选课系蜿«傅息mrrnlk*mrrpiii选选选KAA-135诗迄择输入选项编弓靑尢迄择百址盯课程信息录入:*;(4) 按“2”进行课程信息查询(1) 按学分查询首先输入“T按学分查询,再根据提示输入要查询的学分,如图为所有或迎使用学主选课系筑!总学吋学分开锻埠期二101110112一按课程忤用豆间为1学分课程的相关信息:巴*F:XDeibuiRXdgh»exe词仁按代程名称章询请邀择童询方式.输入选项数字,F请输入您要查询的学井二1课程编号谍程名柠
42、诗赛性质援课学吋宾验或上机学时Flaslillj自隸f竽«24 讪舞投资自熬轴琴«2MKMXMXMMMMMM-MN-MM-KMMMXMK(2) 按课程性质查询选择“2”为按课程性质查询,输入“自然科学”并按“Enter”,得到2.按谒程性质亘询请邀择查询万式.谕人噬项数宇:2请输入您要査询旳课呈性质;a然科学诔程编号曝淫名尊awhfc堪4 FlashW5 IK濟粧後白自自授i果学吋实验或上机学日I«3«242烝迎使用学主选诔系谿自齐录入选课信In蛊-姑百询诜i果曙勺*二隸離藝:请选掙谕入选项編号f请左选样石迸亍繹枉信息录小:总半时学分开保学期:ioa11
43、W111011所有性质为“自然科学”的课程,如图为得到的结果:(3) 按课程名称查询输入“3”进行按课程名称查询,输入“大学语文”按“Enter”得到如图的结果:自mr-rm.”!"mrg-1-1-:f选选选®AA-一_135按“3”进入选课系统进行选课选课时输入学号和所要选择的课程编号,并用空格隔开,如图是学号为201153101”的学生选择编号为“T(即大学语文课程)得到的结果:(5)统计选课情况输入“4”可以统计选课情况,如图是统计结果:125选课学生总人数为:6人学号201153101201153102區丄丄531052DLL53107或迎便用字主选课系统Ip
44、76;F:VDebu/d昭hejcc称名文吉礙理迪赏e王時莖喂地动4果学观魚谕直旺靠La勒F匸露霍翳養:0-很岀哉课系誌*自宀n小呼_TlL.rnRtil."33T3TXT*11'!臭入型录_135音进择输入选项编敷请先选抿逬行课程信息录入:6、按“0”退出选课系统参考文献1 美HMDeitel,PJDeitel著,薛万鹏等译C语言程序设计教程北京:机械工业出版社,2000.07谭浩强.C程序设计(第二版).北京:清华大学出版社,1999.122 美KennethA.Reek著,徐波译.C和指针.北京;人民邮电出版社2008.4附录源程序清单#include<stdio
45、.h>/*标准输入输出函数库*/#include<stdlib.h>/*标准函数库*/#include<string.h>/*字符串函数库*/*定义与课程有关的结构体*/structcourseintnum;/*课程编号*/charname20;/*课程名称*/charkind10;/*课程性质*/inttaltime,ttime,etime,mark,term;/*课程时间,学分,开课信息等*/;/*定义与学生有关的结构体*/structstudentintsnum;/*学生学号*/intcnum;/*所选课程编号*/charcname20;/*所选课程名称*/
46、;/*函数原型*/voidf1();voidmenu();voidbrowser();voidsearch();voidxuan_ke();voidxuanke_information();voidinput();/*常用函数1*/voidf1()printf("n课程编号课程名称课程性质授课学时实验或上机学时总学时学分开课学期:n");/*主菜单*/voidmenu()printf("nnn");printf("欢迎使用学生选课系统!n");printf("*n");printf("*1-浏览选课信息2
47、-查询选课信息*n");printf("*3-进入选课操作4-选课情况统计*n");printf("*5-录入选课信息0-退出选课系统*n");printf("*n");printf("请选择输入选项编号(请:先选择5进行课程信息录入):");/*主函数*/voidmain()intn;menu();seanf("%d",&n);/*防止错误,提示重新输入*/for(;n>5|*0;)printf("n输入错误!请重新输入!");scanf("
48、;%d",&n);while(n>0&&*6)switch(n)case1:browser();break;/浏览选课信息*/case2:search();break;/查询选课信息*/case3:xuan_ke();break;/进入选课操作*/case4:xuanke_information();break;/*选课情况统计*/case5:input();break;/*录入选课信息*/scanf("%d",&n);/*防止错误,提示重新输入*/for(;n>5|*0;)printf("n输入错误!请重新输
49、入!");scanf("%d",&n);system("cls");/*调用系统命令cls,清除屏幕*/if(n=0)exit(0);/*退出选课系统*/*浏览选课信息*/voidbrowser。FILE*fp;/*定义指向文件的指针*/structcoursec;/*定义课程结构体变量c*/if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)/*直
50、到文件结束*/fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);/*将课程信息写入文件*/printf("%5d%12s%9s%9d%12d%12d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*格式化输出*/fclose(fp);/*关闭文件*/me
51、nu();/*查询选课信息*/voidsearch()FILE*fp;/*定义文件指针变量*/structcoursec;/*定义学生结构体变量c*/intscore;charkind10;charname20;intb;/*输入需要的查询课程信息的方式*/printf("n1.按学分查询nn");printf("n2.按课程性质查询nn");printf("n3.按课程名称查询nn");printf("请选择查询方式,输入选项数字:");seanf("%d",&b);for(;b<
52、;1|b>3;)printf("输入错误,请重新输入!");seanf("%d",&b);/*按学分查询*/if(b=1)printf("n请输入您要查询的学分:");scanf("%d",&score);if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)fscanf(fp,"%d%s%s%d%
53、d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(c.mark=score)printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*按课程性质查询*/elseif(b=2)printf("n请输入您要查询的课程性质:");sc
54、anf("%s",&kind);if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!n");f1();for(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(strcmp(c.k
55、ind,kind)=0)printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*按课程名称查询*/elseif(b=3)printf("n请输入课程名称:");scanf("%s",&name);if(fp=fopen("course.txt","r")=NULL)printf("nCannotopencourse!'n");f1();for(;!feof(fp);)fscanf(fp,"%d%s%s%d%d%d%d%dn",&c.num,&,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(strcmp(,name)=0)printf("%5d%12s%9s%9d%12d%13d%8d%9dn",c.num,,c.kind,c.ttime,c.etime,c.taltime,c.mark
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脚踏车传动齿轮项目运营指导方案
- 不动产出租服务行业市场调研分析报告
- 硬币点数和分拣机细分市场深度研究报告
- 高校创新创业课堂实施方案
- 医用或治疗用微晶磨皮仪产品供应链分析
- 钢板租赁合同的违约责任约定
- 向新兴和创业公司提供风险投资服务行业营销策略方案
- 锂离子电池壳项目运营指导方案
- 为用户进行无人机驾驶资格的教育考核行业市场调研分析报告
- 养殖场污水处理格栅技术方案
- 入团志愿书(2016版本)(可编辑打印标准A4) (1)
- 与纳米硒第一发明人张劲松博士的对话
- 《 经济数学》课程教学大纲
- 沙盘游戏咨询师试题《高级》
- 蛔虫和环毛蚓比较解剖ppt课件
- 初中数学教师教学情况调查问卷
- (完整word版)拼音练习jqx和ü、üe的相拼
- 新材料界定与分类
- 医疗质量检查分析、总结、反馈5篇
- 高中小说阅读教学策略
- 幼儿园教育和家庭教育的有效结合研究
评论
0/150
提交评论