您好,欢迎访问三七文档
程序设计报告专业:班级:学号:姓名:指导教师:成绩:计算机工程学院2014年6月程序设计报告-1-目录一、题目:名称、内容......................................2二、解题的基本思路.........................................2三、设计方案功能模块框图...........................................3程序流程图等...........................................3四、算法设计算法描述...............................................9实现方法...............................................9详细流程图.............................................10五、程序调试调试过程与步骤.........................................15发现的问题............................................16解决的办法............................................17六、测试运行程序..............................................17输入测试数据..........................................18判断是否达到预期目的..................................19注:1.测试数据要有典型意义2.要注意临界值的选取3.注意测试数据的广泛性和普适性七、总结收获与体会............................................20有实际内容,忌空洞无物忌千篇一律,400字左右。八、附录:源代码(含注释)...................................21程序设计报告-2-一、题目名称、内容(学生选课管理系统设计)(第32组)假定有n门课程,每门课程的信息包括:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,实现以下功能:1.课程信息录入(课程信息用文件保存,并可在电脑中直接查找并打开该文件)2.课程信息浏览3.课程信息查询(1)按学分查询(2)按课程性质查询4.学生选修课程学生输入学号和姓名后可进行选课。5.统计学生选课情况二、解题的基本思路C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,同时,还可以开发创造能力、培养沟通能力。这次学生选修课系统管理设计时间虽然仅有一个星期,但确实使我受益非浅。通过学生选修课系统管理设计我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对MicrosoftVisualC++6.0的使用技巧。C语言是在国内外广泛使用的一种计算机语言。语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。我们在编写一个较大的程序时应该把它分开成几个小程程序设计报告-3-序来看,这样会容易得多。比如说,这次的选课系统,将系统分为录入、浏览、查询、选课、统计、退出系统六个阶段。通过主函数调用各个函数,层次清晰,一眼明了,同时。为了满足多种查询的方式,将查询函数分为两个部分,按照学分查询和按照课程性质查询,这样可以避免错误。最后,我觉得我所编出的程序的最大的优点就是输入错误后,有个重新输入的步骤,这样避免有人误选数字,而导致程序结束。同时,在程序中用printf输出如“欢迎进入”、“谢谢使用”等的敬语,更具有人性化,亲人美观的界面可以让选课者赏心悦目。同时,程序中的换行等,都可以保持界面不至于太过拥挤,大方简约。三、设计方案,功能模块框图与程序流程图等(1)设计方案:通过主函数调用各个函数实现其功能,并逐步进行优化(2)本系统的功能模块如图所示录入课程信息查询课程信息进入选课操作统计选课情况浏览课程信息将课程信息输入文件中浏览文件中的课程信息按照学分查询课程信息按照课程性质查询课程输入学号姓名进行选课从选课文件中统计信息主函数开始程序设计报告-4-(3)主要功能模块:1.主函数:构造voidmain(),实现调用各个功能模块:学生选课系统执行主流程如图所示,先执行主函数中显示菜单函数,通过循环和按键操作来执行相应的操作。按键的有效键值为0~5之间的任意数值,其他按键为无效输入,会提示“输入错误,请重新输入”,同时,再次用scanf创造再次输入的机会。各个按键的执行功能为:“1”:录入选修课课程信,调用函数luru();“2”:浏览录入的课程信息,调用函数liulan();“3”:查询课程信息,调用函数chaxun();“4”:进入选课操作,调用函数chaxun();“5”:统计选课信息,调用函数tongji();“0”:退出系统;intmain(){intn;intmenu();intf1();intluru();intliulan();intchaxun();intxuanke();inttongji();printf(\n*********************************************);printf(\n\n**********欢迎进入学生选课系统!**********);menu();printf(\n);printf(*******************theend*********************\n);printf(\n*********************************************);printf(\n\n请先选择1进行课程信息录入:);scanf(%d,&n);for(;n5||n0;){printf(\n输入错误!请重新输入!\n);scanf(%d,&n);}while(n0&&n6){switch(n){case1:luru();break;case2:liulan();break;case3:chaxun();break;case4:xuanke();break;case5:tongji();break;}scanf(%d,&n);for(;n5||n0;){printf(\n\n);程序设计报告-5-printf(\n输入错误!请重新输入!\n);scanf(%d,&n);}system(cls);}if(n==0){printf(\n\n\n\n\n\n\n);printf(**********谢谢使用!**********\n);printf(\n\n\n\n\n);}exit(0);return0;}2.定义menu函数,f1函数方便调用函数函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择的项目进行后续操作。intmenu(){intn;printf(\n\n\n\n);printf(1.录入课程信息\n\n);printf(2.浏览课程信息\n\n);printf(3.查询课程信息\n\n);printf(4.进入选课操作\n\n);printf(5.统计选课情况\n\n);printf(0.退出选课系统\n\n);return0;}3.定义课程、选课结构体变量structcourse{intnum;charname[20];charkind[20];intttime,mark,term;}c;structstudent{intsnum;intcnum;charcnam[20];charsnam[20];}s[500];4.定义录入函数,课程信息函数功能及实现:此函数录入课程信息,在查询、浏览、进入选课,查看选课信息等函数之前。定义指向文件的指针变量*fp,课程信息结构体c通过fopen函数建立文件”course.txt”,后输入录入课程的门数,打印表头,通过for循环,程序设计报告-6-用scanf函数从屏幕读取课程信息,并通过fprintf函数将课程信息录入到文件“course.txt”中,最后输出主菜单,返回主程序。intluru(){FILE*fp;structcoursec;intcount;inti;if((fp=fopen(D://course.txt,w))==NULL){printf(cannotopenfile\n);exit(0);}printf(\n请输入选择的课程门数:);scanf(%d,&count);printf(\n\n\n);f1();for(i=0;icount;i++){scanf(%d%s%s%d%d%d,&c.num,c.name,c.kind,&c.ttime,&c.mark,&c.term);fprintf(fp,%d\t%s\t%s\t%d\t%d\t%d\t,c.num,c.name,c.kind,c.ttime,c.mark,c.term);}fclose(fp);printf(\n录入成功!\n\n);menu();return0;}5.定义浏览函数,浏览录入的课程信息函数功能及实现:此函数先定义指向文件的指针*fp,课程结构体变量c,通过if语句判断文件是否存在,在调用函数f1(),输出表头信息,通过for循环并使用fscanf函数将文件中的课程信息读出并通过printf打印到屏幕上,再通过fclose函数关闭文件。intliulan()//浏览函数{inti=0;FILE*fp;structcoursec;if((fp=fopen(D://course.txt,r))==NULL){printf(\ncannotopencourse!\n);exit(0);}f1();while(!feof(fp)&&icount){fscanf(fp,%d%s%s%d%d%d,&c.num,c.name,c.kind,&c.ttime,&c.mark,&c.term);printf(%7d%11s%10s%9d%9d%8d\n,c.num,c.name,c.kind,c.ttime,c.mark,c.term);i++;}fclose(fp);menu();return0;}6.定义查询函数,按照学分和课程性质查询函数功能及实现:先定义学生结构体变量s,打印相关可供选择的选项,通过程序设计报告-7-scanf函数读取输入字符,打印表头,再使用if语句进行相关选择。如果数“1”,则是按学分查询课程,符合第一个if语句,输入想要查询的学分,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;如选择“2”,符合第二个if语句,则按照课程性质查询,输入课程性质,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;如输入“3”,符合第二个if语句,则按照课程名称查询,输入要课程名称,程序通过for循环从文件中读取课程信息,并通过printf函数输出满足要求的课程信息;查询完成后通过fclose函数关闭文件,打印主菜单,返回主函数。intchaxun(){FILE*fp;structcoursec;intscore;intb,i=0;charkind[20];printf
本文标题:选课系统报告
链接地址:https://www.777doc.com/doc-5292797 .html