高级语言程序设计课程设计报告1得分:信电工程学院课程设计报告学生选修课程系统课程:高级语言程序设计班级:12网络2单学号:20120507244姓名:顾建伟指导教师:戴磊2013年7月1日高级程序设计语言课程设计报告2目录1程序目标及功能---------------------------------------------------------------31.1课题背景-----------------------------------------------------------------31.2系统功能---------------------------------------------------------------31.3设计要求---------------------------------------------------------------32程序功能模块组成及流程图------------------------------------------------42.2系统功能模块-----------------------------------------------------------42.3各模块流程图-----------------------------------------------------------53程序主要数据结构及函数列表---------------------------------------------73.1程序中使用的数据结构----------------------------------------------73.2函数列表--------------------------------------------------------------74程序代码及运行结果-------------------------------------------------------8总结与体会------------------------------------------------------------------12高级程序设计语言课程设计报告31程序目标及功能1.1课题背景学习C语言已经有一年了,经过一年的学习,也学到了不少新的C语言核心知识。同时学了一些处理复杂问题的办法,现在运用所学的知识,结合网络资源。自己动手编写了一个学生课程选课系统。1.2系统功能学生选修课程系统可实现课程信息输入、课程信息输出、课程信息查询、学生选课等功能。程序要求提供简单友好易于操作的界面。程序以C语言开发。1.3设计要求1.基本要求(1)假定有n门课程,每门课程有课程编号、课程名称、课程性质(专业选修课、公选课)、总学时、总学分、理论学时、实验学时、开课学期、已选修本课程的学生人数等信息;每门课最多允许60个学生选修。(2)选修信息文件,用来保存每个学生选修课程的信息,每条记录包括:学生的学号、所选修的课程编号和课程名称。(3)系统以菜单方式工作;(4)用函数分别实现动态链表的建立、动态链表输出等功能;(5)界面友好,程序中加入必要的注释;(6)函数功能要划分好(结构化程序设计);函数要求使用指针作形参。(7)学生选修一门课后,要同时更新课程信息和选修信息文件。2.系统结构及模块要求:(1)程序主界面包括程序名称及编程者学号、姓名、班级;同时要求输入功能号码,选择进入功能模块程序。主界面格式及选择项(供参考)如下图1“系统主菜单”:(中文英文均可)(2)各模块功能:A.课程信息录入。建立课程信息链表,由键盘输入课程信息。B.课程信息输出。输出所有课程信息。C.查询课程。按课程编号、课程名称、学分、按课程性质、开课学期等查询(至少实现1种)。D.学生选修课程。输入学生学号和课程编号,形成一条选课信息,保存在“选修信息文件”里。E.查询学生选修的课程。输入学生学号,输出该生已选修的课程编号和课高级程序设计语言课程设计报告4程名称。F.保存课程信息到磁盘文件。建立一个磁盘文件,把所建立的课程表写入文件。2程序功能模块组成及流程图2.2系统功能模块学生选修课程系统录入选课信息浏览选课信息查询选课信息统计选课情况进入选课操作查询学生选课退出选课课程按学分按课程性质退出系统.............编号名称性质总学时按学号查询高级程序设计语言课程设计报告52.3各模块流程图1.录入选课信息2.浏览选课信息123.查询选课信息4.统计选课情况结束继续开始输入写入文件并储存开始输出课程信息返回主菜单退出系统2开始查看学生选课信息判断查询方法结束输入按课程性质按学分开始输出结束高级程序设计语言课程设计报告65.进行选课操作6.查询学生选课7.退出选课系统输入、选课开始判断是否是要选的课程选定、输出结束N开始输入学生学号选定、输出结束开始输出提示信息结束、退出系统高级程序设计语言课程设计报告73程序主要数据结构及函数列表3.1程序中使用的数据结构structcourse{intnum;charname[20];charkind[10];inttime;intttime;intetime;intmark;intterm;};structstudent{charsnum[20];longcnum;charcname[20];};3.2函数列表1.课程信息录入voidinput_xk_info()2.课程信息浏览voidliulan_xk_info()3.课程信息查询voidchaxun_xk_info()4.统计选课情况voidtongji_xk_qk()5.学生选修课程voidinto_xk_cz()6.按学号查询学生选修voidchaxun_stu_xk()7.主菜单高级程序设计语言课程设计报告8voidmain()4程序代码及运行结果主界面高级程序设计语言课程设计报告91.录入选课信息2.浏览选课信息高级程序设计语言课程设计报告103.查询选课信息4.统计选课信息高级程序设计语言课程设计报告115.进行选课操作6.查询学生选课高级程序设计语言课程设计报告127.退出系统高级程序设计语言课程设计报告135总结与体会通过该系统的课程设计分析,掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。对于一个较大的应用程序,我们一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。本系统程序功能仍然不够完善。例如信息表达方式不丰富,比较单一,以后有待改进。6程序源代码#includestdio.h#includestdlib.h#includestring.h#includeconio.hstructcourse{intnum;charname[20];charkind[10];inttime;intttime;高级程序设计语言课程设计报告14intetime;intmark;intterm;};structstudent{charsnum[20];longcnum;charcname[20];};/*课程信息录入*/voidinput_xk_info(){voidmain();FILE*fp;structcoursec;intcount;inti;if((fp=fopen(d:\\course.txt,a+))==NULL){printf(cannotopenfile\n);}printf(\n请输入课程门数:\n);scanf(%d,&count);printf(编号名称性质(专业选修课、公选课)总学时理论学时实验学时总学分开课学期\n);for(i=0;icount;i++){scanf(%d%s%s%d%d%d%d%d,&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);高级程序设计语言课程设计报告15fprintf(fp,%d%s%s%d%d%d%d%d\n,c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}fclose(fp);main();}/*课程信息浏览*/voidliulan_xk_info(){voidmain();FILE*fp;structcoursec;inta;if((fp=fopen(d:\\course.txt,r))==NULL){printf(\nCannotopencourse!\n);}printf(编号名称性质(专业选修课、公选课)总学时理论学时实验学时总学分开课学期\n);for(;!feof(fp);){fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);printf(%5d%12s%9s%9d%9d%11d%11d%11d\n,c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}fclose(fp);printf(\n1-返回主菜单;2-退出选课系统\n);scanf(%d,&a);if(a==1)main();高级程序设计语言课程设计报告16elseexit(0);}/*课程信息查询*/voidchaxun_xk_info(){voidmain();FILE*fp;structcoursec;intscore;charkind[10];inta;intb;printf(1.按学分查询,2.按课程性质查询.\n);printf(请选择查询方式,输入选项数字:);scanf(%d,&b);if(b==1){printf(\n请输入您要查询的学分:\n);scanf(%d,&score);if((fp=fopen(d:\\course.txt,r))==NULL){printf(\nCannotopencourse!\n);}printf(编号名称性质(专业选修课、公选课)总学时理论学时实验学时总学分开课学期\n);for(;!feof(fp);){fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);if(c.mark==score)高级程序设计语言课程设计报告17printf(%5d%12s%9s%9d%9d%11d%11d%11d\n,c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}elseif(b==2){printf(\n请输入您要查询的课程性质:\n);scanf(%s,&kind);if((fp=fopen(d:\\course.txt,r))==NULL){printf(\nCannotopencourse!\n);}printf(编号名称性质(专业选修课、公选课)总学时理论学时实验学时总学分开课学期\n);for(;!feof(fp);){fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);if(strcmp(c.kind,kind)==0)printf(%5d%12s%9s%9d%9d%11d%11d%11d\n,c.num,c.name,c.kind,c.time,c.ttime,