计算机与信息工程系《高级语言程序设计》课程设计报告《高级语言程序设计》课程设计报告题目:学生选修课程管理系统专业:班级:姓名:指导教师:成绩:计算机与信息工程系2014年6月20日2013-2014第二学期计算机与信息工程系《高级语言程序设计》课程设计报告目录1设计目的和要求........................................................................................................11.1需求分析..........................................................................................................11.2设计要求.........................................................................................................12概要设计....................................................................................................................12.1模块划分.........................................................................................................12.2主函数的流程设计:.....................................................................................23详细设计....................................................................................................................43.1程序中定义的数据类型.................................................................................43.2函数的设计详解..............................................................................................44设计和调试分析......................................................................................................154.1调试中遇到的问题........................................................................................154.2算法的时间复杂度分析...............................................................................165用户使用说明........................................................................................................176测试数据和测试结果..............................................................................................187总结...........................................................................................................................23参考文献......................................................................................................................23源程序..........................................................................................................................24课程信息输出课程信息输出课程信息录入功能模块计算机与信息工程系《高级语言程序设计》课程设计报告11设计目的和要求1.1需求分析假定有N门课程,每门课程有课程编号,课程名称,课程性质,总学分,授课学时,实验上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。要求设计一选修课程系统,使之能提供以下功能:(1)课程信息录入功能(课程信息用文件保存)---------输入;(2)课程信息浏览功能------输出;(3)查询功能:(多种查询方式:一种、任意两种组合、三种都能满足)算法;(1)按学分查询;(2)按课程性质查询;(3)按课程名称查询;1.2设计要求(1)用C语言实现系统,源程序要有适当的注释,使程序容易阅读;(2)函数功能要划分好(结构化程序设计);(3)至少采用文本菜单界面(如果能采用图形菜单界面更好);(4)可以增加新功能模块2概要设计本程序功能模块根据程序设计的需求,综合程序的实用性、智能化得考虑,将程序划分为5个模块分别编写。2.1模块划分系统有五个模块,分别为:(1)浏览课程信息模块(2)查询课程信息模块(3)进入系统进行选课模块(4)选课情况统计模块(5)录入选课信息模块计算机与信息工程系《高级语言程序设计》课程设计报告22.2流程设计:学生选课系统执行主流程如图所示,先执行主函数,显示菜单函数,通过循环和按键操作来执行相应的操作。按键的有效键值为0~5之间的任意数值,其他按键为无效输入。各个按键的执行功能为:“1”:浏览已录入的选修课课程信息调用函数,browser();“2”:通过不同的方式查找记录,调用函数search();“3”:进入系统进行选课,调用函数xuan_ke();“4”:查看课程已选情况,调用函数xuanke_information();“5”:录入选修课信息,调用函数input();“0”:退出系统;将备选课程信息录入录入选课信息已选信息学生选课并记录按学分查询按课程性质查询按课程名称查询查询课程信息进入选课输出选课情况选课情况统计学生选修课程管理系统输出文件全部信息浏览课程信息计算机与信息工程系《高级语言程序设计》课程设计报告3开始主函数是否继续进行相应的操作结束输入【0~5】中所要操作的项目对应的数字计算机与信息工程系《高级语言程序设计》课程设计报告43详细设计3.1程序中定义的数据类型3.1.1定义与课程有关的结构体structcourse{intnum;/*课程编号*/charname[20];/*课程名称*/charkind[10];/*课程性质*/inttaltime,ttime,etime,mark,term;/*课程时间,学分,开课信息等*/};3.1.2定义与学生有关的结构体structstudent{intsnum;/*学生学号*/intcnum;/*所选课程编号*/charcname[20];/*所选课程名称*/};3.2函数的设计详解1.函数原型:voidf1();函数源程序:voidf1()/*常用函数2*/{printf(\n课程编号课程名称课程性质授课学时实验或上机学时总学时学分开课学期:\n);}函数功能及实现:此函数仅包含输出语句,在课程信息输出之前调用此函数,打印出表头信息2.函数原型:voidmenu()函数源程序:计算机与信息工程系《高级语言程序设计》课程设计报告5voidmenu()/*主菜单*/{Printf(“\n\n\n”);printf(欢迎使用学生选课系统!\n);printf(**************************************\n);printf(*1-浏览选课信息2-查询选课信息*\n);printf(*3-进入选课操作4-选课情况统计*\n);printf(*5-录入选课信息0-退出选课系统*\n);printf(**************************************\n);printf(请选择输入选项编号(请先选择5进行课程信息录入):);}函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择的项目进行后续操作。3.函数原型:voidbrowser();函数源程序:/*浏览选课信息*/voidbrowser(){FILE*fp;/*定义指向文件的指针*/structcoursec;/*定义课程结构体变量c*/if((fp=fopen(course.txt,r))==NULL){计算机与信息工程系《高级语言程序设计》课程设计报告6printf(\nCannotopencourse!\n);}f1();for(;!feof(fp);)/*直到文件结束*/{fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);/*将课程信息写入文件*/printf(%5d%12s%9s%9d%12d%12d%8d%9d\n,c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);/*格式化输出*/}fclose(fp);/*关闭文件*/menu();}4.函数原型:voidsearch();函数源程序:/*查询选课信息*/voidsearch(){FILE*fp;/*定义文件指针变量*/structcoursec;/*定义学生结构体变量c*/intscore;charkind[10];charname[20];intb;/*输入需要的查询课程信息的方式*/printf(\n1.按学分查询\n\n);printf(\n2.按课程性质查询\n\n);printf(\n3.按课程名称查询\n\n);printf(请选择查询方式,输入选项数字:);计算机与信息工程系《高级语言程序设计》课程设计报告7scanf(%d,&b);for(;b1||b3;){printf(输入错误,请重新输入!);scanf(%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%d%d%d%d\n,&c.num,&c.name,&c.kind,&c.ttime,&c.etime,&c.taltime,&c.mark,&c.term);if(c.mark==score)printf(%5d%12s%9s%9d%12d%13d%8d%9d\n,c.num,c.name,c.kind,c.ttime,c.etime,c.taltime,c.mark,c.term);}}/*按课程细致查询*/elseif(b==2){printf(\n请输入您要查询的课程性质:);scanf(%s,&kind);计算机与信息工程系《高级语言程