钦州学院C语言课程设计报告学生选修课管理系统院系物理与材料科学学院专业自动化学生班级2008级1班姓名李美月学号0805404134指导教师单位钦州学院指导教师姓名陶卫平指导教师职称讲师2011年6月学生选修课管理系统自动化专业2008级李美月指导教师陶卫平摘要:当今时代是飞速发展的信息时代,在各行个业中离不开信息处理,这正是计算机被广泛应用于信息系统环境。计算机的最到好处的利用它能够进行信息管理,使计算机进行信息控制,不仅提高了工作效率,而且大大提高了其安全性。尤其对复查的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。基于这个问题,有必要建立一个学生选修课系统,使学生选课信息管理工作规范化、系统化、程序化、避免学生选课管理随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。【关键词】管理员管理;课程查询;学生选课;系统框图;程序;C++设计目的:(1根据C语言课程设计来设计一个实用的系统即学生选课系统。(2设计该系统能够实现选课信息管理工作规范化、系统化、程序化、避免选课管理随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。(3通过实践,更进一步掌握C语言课程设计理论知识,做到从理论到实践。设计技术指标与要求:由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写,尽量要求做到:(1设计界面要求尽量美观简洁;(2管理员能够对课程信息和用户的管理,以及学生对课程信息的查看和选课。(3用户能够根据提示,输入操作项,调用系统提供的管理功能。(4完成学生选课管理的开发。目录前言(31系统设计概述(31.1程序功能(32系统设计思想(43系统详细设计说明(43.1设计的具体实现(43.2总体流程图(83.3总体说明(83.4操作系统的处理流程图(93.5程序运行结果截图(104结果分析忽然设计会(124.1优缺点(124.2实习总结(12参考文献(13前言:现代社会是信息社会化社会,信息无处不在。在生产领域、流通领域、各个部门每天都和信息打交道,如何处理此信息成为一个重要课题。学生在学期开学选课是教学活动中的一个重要环节,该环节如果能够管理好,它不仅加快学生选课速度,也提高了整个活动的效率。大学生一般都有上千名学生都要选课,因而产生了大量的课程信息。面对复查的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。1系统设计概述随着飞速发展及应用水平的不断提高,高校教学管理网络化已成为一种趋势。如何利用互联网这一先进的信息传播手段为研究教学科研服务,已成为目前有待研究和解决的一项重要课题。为此结合实际设计一个能够添加、管理、修改及查询等各个功能的系统。1.1程序功能学生选修课程系统是为了方便学生能够在网上选择学习课程的一个系统。主要用于管理者能够对课程信息和用户的管理,以及学生对课程信息的查看和选课。为了保存存储信息,系统利用文件将课程信息和用户信息都存储在文件中。系统也为用户提供了简单的人机界面,使用户能够根据提示,输入操作项,调用系统提供的管理功能。主要功能描述如下:(1课程信息的录入此部分是管理者输入课程的相关信息。为学生选课提供基础。(2课程信息的管理课程的管理主要包括课程信息的增加和课程信息的删除。(3学生信息的录入输入此系统的操作人员的信息。保障该系统的实用性。(4学生信息的管理学生的管理也是包括对学生信息的增加和删除,完成对系统的更新操作。(5学生选课选择选课后进入此部分的子程序,子程序包括学生选课,查询可以选择的课程,退课以及查询已经选择的课程。(6信息查看及其存储此部分包括四大部分输出课程信息,输出学生信息,存储课程信息到文件,存储学生信息到文件。查看课程信息能够方便学生浏览课程信息,查看学生信息是方便学生信息及选课情况。文件存储都能很好的保存信息。(7退出此部分的功能是退出系统。2系统设计思想由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。在编写本程序的过程中,首先借指导材料,确定了目标程序运行的次序与界面,即本程序首先运行【用户系统】菜单界面,其次程序运行【用户插入课程信息】及【用户浏览课程】菜单界面,最后程序运行【统计选课信息】及【选课】界面。如果用户选择【插入用户信息】选项则程序进入出入用户课程信息界面。需要一次输入课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期等信息;如果用户选择【浏览课程】选项则程序进入【浏览课程】界面,将会显示所选课程的信息;如果用户选择【查询】选项则会显示按学分查询的选课信息;一次用户还可以查看某门课程的所选情况。其次,根据目标程序运行的次序与界面,确定设计顺利,设计界面(包括各部分菜单与用户提示信息。再次是按照程序运行的各界面下的菜单功能编写各功能模块,并调试程序各功能模块,使各模块能够稳定高效准确地完成对应功能。最后是程序的总体调试及功能完善,此部分从学生选课的角度出发,考虑了更加人性化、更加合理、更加高效准确、更加智能化的设计。3系统详细设计说明3.1设计的具体实现(1主要函数structcourse//课程信息结构体intnelepeo;//课程已选人数intMelepeo;//课程人数上限structstudent//学生信息结构体voidkeyboardc(//录入课程子函数voidinputc(//录入课程主函数voidinputc(//录入课程主函数voidmanagementc(//课程管理主函数voidkeyboards(//录入学生信息子函数voidinputs(//录入学生信息主函数voiddels(intnum2//学生信息管理子函数(删除学生信息voidmanagements(//学生信息管理主函数voidelect(structstudent*s//选课voidcheak(//学生选课子函数(查询可选课程voidback(structstudent*p//退课voidhcheak(//学生选课子函数(查询已选课程voidelective(//学生选课主函数voidelective(//学生选课主函数voidlists(//输出学生信息voidintoc(//存储课程信息voidinto(//存储信息voidstore(//信息主函数(2部分详细函数和说明voidinputc(//录入课程主函数{inti;printf(\t\t\t录入课程信息\n;printf(\n1.从键盘录入\n;printf(2.返回主菜单\n;printf(请选择(1,2:\n;scanf(%d,&i;switch(i{case(1:keyboardc(;break;case(2:break;}}voidinsertc(structcourse*incourse//课程管理子函数(增加课程{structcourse*p0,*p1,*p2;p1=head1;p0=incourse;if(head1==NULL{head1=p0;p0-next=NULL;}else{while((p0-num1p1-num1&&(p1-next!=NULL{p2=p1;p1=p1-next;}if(p0-num1=p1-num1{if(head1==p1head1=p0;elsep2-next=p0;p0-next=p1;}else{p1-next=p0;p0-next=NULL;}}N1=N1+1;}voiddelc(intnum1//课程管理子函数(删除课程{structcourse*p1,*p2;if(head1==NULL{printf(\n没有课程,无法删除!\n;gotoend;}p1=head1;while(num1!=p1-num1&&p1-next!=NULL{p2=p1;p1=p1-next;}if(num1==p1-num1{if(p1==head1head1=p1-next;elsep2-next=p1-next;printf(已删除该编号课程!\n;N1=N1-1;}elseprintf(无该编号的课程!\n;end:;}voidmanagementc(//课程管理主函数{structcourse*incourse;inti,num1;printf(\t\t\t课程管理\n;printf(1.新增课程\n;printf(2.删除课程\n;printf(3.返回主菜单\n;printf(请选择(1~3:\n;scanf(%d,&i;switch(i{case(1:{incourse=(structcourse*malloc(sizeof(structcourse;printf(课程编号\t课程名称\t学分\t课程人数上限\t课程性质\t总学时\t实验学时\t开课学期\n;scanf(%d%s%d%d,&incourse-num1,incourse-name1,&incourse-score,&incourse-Melepeo,&incourse-type,&incourse-time,&incourse-pratime,&incourse-team;incourse-nelepeo=0;insertc(incourse;break;}case(2:{printf(请输入要删除课程的编号:\n;scanf(%d,&num1;delc(num1;break;}case(3:break;}}注:课程信息的录入此部分是管理者输入课程的相关信息。为学生选课提供基础。系统调用keyboardc(函数完成对课程信息的录入。3.2总体流程图3.3总体说明系统启动后,首先加载课程文件信息和用户文件信息。然后进入操作主菜单界面,该界面允许用户输入1~7之间的数值来选择要进行的操作,其他字符无效,系统会给出错误提示信息。若用户输入1,则调用keyboardc(函数,进行课程信息录入的操作。若输入2,则调用managementc(函数,进入子函数(在该子函数中,选1,即是增加课程信息操作;若选2,即是删除课程信息操作。输入3,调用keyboards(函数,进行学生课程信息录入的操作。输入4,调用management(函数,并进入子函数(在该子函数中,选1,即是增加学生信息操作;若选2,即是删除学生信息操作。输入5,调用elective(函数,进入子函数(在该子函数中,选1,即调用checkc(函数查询可选课程,调用elect(s函数来进行选课;若选2,调用hcheck(函数查询已选课程情况,并有调用back(函数来进行退课。若选6,调用store(函数,进入子系统(在该子系统中,选1,listc(函数课程信息的输出;选2,lists(函数将学生信息输出;选3,储存信息。包括1、intoc(函数将课程信息保存到文件;2、intos(函数将学生信息存储到文件中。选择7,退出操作系统。3.4操作系统的处理流程图如下:3.5程序运行结果截图(1主菜单界面截图:(2)系统窗口代码:intmain(//主函数{inti;start:printf(\n\t\t\t欢迎使用学生选课系统!\n;printf(菜单:\n;printf(1.录入课程信息\n;printf(2.课程管理\n;printf(3.录入学生信息\n;printf(4.学生信息管理\n;printf(5.学生选课\n;printf(6.系统信息查看及存储\n;printf(7.退出系统\n;printf(\n请输入菜单选项(1~7:\n;scanf(%d,&i;10if(i1||i7{printf(输入错误,请重输:\n;gotostart;}switch(