题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求...第二部分:程序总体设计思路...........第三部分:程序功能划分、图示及流程图.第四部分:程序设计数据、运行结果.....第五部分:程序的优缺点...............第六部分:心得体会...................第七部分:附录(源程序).............第八部分:附录(参考文献)...........第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:MicrosoftVisualC++6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。整个程序的设计思路到此结束。第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:1.登录界面函数;voidlogin()2.学生登录界面据函数:voidstu_login()3.管理员登录界面函数:voidman_login()4.退出界面函数:voidbye_sys()5.课程选择函数:voidc_select()6.课程浏览函数:voidc_view()7.课程查询函数:voidc_search()8.课程增加函数:voidc_add()9.课程删除函数:voidc_delete()10.菜单函数:voidindex()11.主函数部分;main()总体设计:学生选课系统学生登录管理员登录新增课程删除课程课程浏览查询课程c_view函数c_search函数c_add函数c_delete函数学生选课课程查询课程浏览c_select函数c_view函数c_search函数系统功能模块图部分函数流程图:1、课程选择函数:开始输入要选择的课程的编号flag++YN结束courses[j].c_num==nj=0;ji;(i初始化为0)flag==0没有找到对应课程YN选课成功j++2、课程查询函数开始输入要查询的课程的编号flag++YN结束courses[j].c_num==nj=0;ji-1;(i初始化为0)flag==0没有找到对应课程YN打印相应的课程j++3、课程增加函数开始输入要增加的课程的编号printf(“编号已使用过”)YN结束courses[j].c_num==nj=0;ji-1;(i初始化为0)j++frwrite写入课程信息到文件4、课程删除函数开始输入要删除的课程的编号nYN结束courses[j].c_num==nj=0;ji-1;(i初始化为0)j++不存在相应课程k=0;kj;frwrite写入课程信息到文件k++k=j+1;ki-1;k++第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】1、程序开始界面如下:选择某个选项,如进行管理员登录,进行课程的增加进入管理员界面:2、再选择所要进行的操作,如进行课程增加,结果如下:下面可以进行继续增加课程或者退出:3、选择课程浏览,可以分页查看相应的课程信息:第一页:第二页:4、课程查询查找结果:4、管理员课程删除操作:删除后可以进行浏览,观察删除后的结果:可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法:1、学生登陆界面:2、选择学生选课选项:3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。第五部分:程序的优缺点【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。[算法上的优点]主要体现在以下三点:1.程序采用main主函数方式设计,程序的主体的功能大都由该功能完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。[功能上的优点]主要体现在以下两点:1.简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。【程序的缺点】主要表现在以下两点:1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。第六部分:心得体会选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visualC中调试的工具有很大的帮助。总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。第七部分:附录一、参考文献:1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(第三版),清华大学出版社二、源程序#includestdio.h#includestdlib.h#includewindows.h#includestring.hvoidindex();//首页voidlogin();voidbye_sys();//退出界面voidstu_login();//学生登录菜单voidc_select();voidc_view();//课程浏览voidc_add();//增加课程voidc_delete();voidc_searchs();//学生查询函数voidc_searchm();//管理员查询函数voidc_viewm();//管理员浏览函数voidc_views();//学生浏览函数structcourse//定义课程结构体{intc_num;charc_name[20];intc_score;intc_nelepeo;//课程已选人数intc_melepeo;//课程人数上限};structstudent{chars_number[10];chars_password[10];};structmanager{charm_name[10];charm_password[10];};voidindex()//首页{charinput;printf(\n\n\t\t\t*****************************\n);printf(\t\t\t湖南大学学生选课系统\n);printf(\t\t\t*****************************\n\n\n);printf(\t\t\t*****************************\n\n\n);printf(\t\t\t*****************************\n\n\n);printf(\t\t\t*****************************\n\n\n);printf(\t\t\t**********设计者:刘晓斌******\n\n\n);input=getchar();system(cls);}voidlogin()//登陆界面{voidstu_login();voidman_login();voidbye_sys();intinput;do{system(cls);printf(\n\n\n\t1.学生登录\n);printf(\t2.管理员登陆\n);printf(\t3.退出本系统\n);printf(\t请选择服务类别:);scanf(%d,&input);if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面{printf(\n\t输入出错!请重新选择~\n);printf(\n\t按任意键返回选择页面~\n\t);getchar();getchar();system(cls);}if(input==3)//如果输入3退出系统{bye_sys();}}while(input!=1&&input!=2&&input!=3);switch(input){case1:stu_login();break;case2:man_login();break;}}voidbye_sys()//退出界面{exit(0);}voidman_login(){voidc_add();voidc_delete();voidc_view();voidc_searchm();intin;do{system(cls);printf(\n\n\t1.新增课程\n);printf(\t2.删除课程\n);printf(\t3.课程浏览\n);printf(\t4.课程查询\n);printf(\t5.退出\n);printf(\n\n\t请选择服务种类:);scanf(%d,&in);if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5){printf(\n\t没有这项服务\t按任意重新选择);getchar();getchar();}}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5);switch(in){case1:c_add();break;case2:c_delete();break;case3:c_viewm();break;case4:c_search