您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > c++学生选课系统设计报告
C++程序设计课程设计报告课题名称:学生选修课程系统设计组号:第八组指导教师:张帆目录引言………………………………………………………………..一设计目的及内容……………………………………………………二课题总体设计………………………………………………………1.性能需求……………………………………………………………2.功能需求…………………………………………………………….3.功能模块图…………………………………………………………三详细设计…………………………………………………………….1.各模块说明.……………………………………………………….2.各模块功能流程图………………………………………………四测试与调试…………………………………………………………五心得体会…………………………………………………..六附:源代码……………………………………………….引言21世纪以高科技为核心的知识经济占主导地位,国家的综合国力和以国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新,传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄,不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临诸多挑战。课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C++功能之强大,进一步让学生对面向对象的方法以及C++的编程思想有了较好了解和认识。一设计目的及内容:网上选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的选课,一方面浪费大量的人力,物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。随着学校规模的不断扩大,专业,班级,学生的数量急剧增加,有关学生选课的各种信息也成倍增加,而目前许多高校的学生的选课管理仍然停留在复杂的人工操作上,重复工作较多,工作量大,效率低,各种弊端会越来越多的暴露出来,因此利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的工作量。从教师的角度上来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此在网上进行课程发布能大幅度的减少教师的工作量,减少错误发生几率,作为教师,也只要通过自己的电脑来操作即可,不用奔波于教务处和办公室之间。1、课题名称:学生选修课程系统设计2、课程设计详细内容说明:假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。使之能提供一些功能:要求:具体设计要求实现如下功能:1、课程信息录入功能2、课程信息浏览功能3、查询功能:(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)4、学生选修课程5、修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);6、删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生姓名删除选课信息);二课题总体设计:1、性能需求:在现代,高科技的飞跃发展,人们工作习惯的改变,别特是电脑的大量普及,人们生活节奏越来越来快,怎样提高工作效率是人们首先考虑的问题。学生选课是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。显然,靠手工进行管理这种选课方法已经不能适应时代的发展,学校的需求。今天这种传统的管理方法必然会被计算机为基础的信息系统所代替。同时这种传统方式放映出很多问题:第一,当要查询某个同学或某个班级的选课情况极不方便;第二,每次选课时省老师花大量时间统计各班级各学生的选课情况,这样准确率也较难保证;第三,选课的可靠性很低;第四,现在学校虽然已用计算机进行选课管理,但工作并不完善,有很大的局限性。2、功能需求:我们设计的是一个学生选修金额系统,这个系统的功能比较完善。使用主函数中的switch语句实现该结构,进而实现该系统的各项功能。该系统能实现六项功能:1.录入信息、2.查询信息、3.删除课程、4.显示课程、5.保存信息、6.读取信息,设计本次试验所用到的知识点有:类和对象、FOR循环、switch语句、dowhile()语句、构造函数等等。3、功能模块图:学生信息模块三详细设计:1.各模块说明:(1)我们这学生选修课系统的主界面分有两个选项一个是学生使用的学生端一个是老师使用的教师端。课程信息模块选课模块(2)学生端包括学生的选课情况、学生情况和学生选课,学生可在这里进行选课查询各学生选修课情况还可以查看学生的情况。(3)选课系统管理端只有教师可以进入因为需要密码,设计密码是防止学生进入管理端随意修改。管理端包括一些要求里有的如:课程浏览、课程录入、课程删除、课程查询等,还包括一些要求里边没有的功能如:填写成绩、更改学分等。这些功能只有管理员才能进行修改和填写。2各模块功能流程图:(1)主界面流程图:i=1i=2Case1Case2(2)学生端流程图:开始接受数据数据依据输入值执行结束开始i=1i=2Case1Case2(3)管理端流程图:输入数据是否为4开始输入数据是否为123456Y结束n学生选课学生情况选课情况按任意键Y输入数据是否为0YN录入课程删除课程保存数据等否且大于三次否但小于三次四测试与调试:运行:1.学生选课主界面2.选修课系统学生端结束3.系统管理端4.学生选课界面5.查询学生所选课程界面6.删除课程界面7.课程信息录入功能8.按课程查询所选人数遇到的问题和解决办法:这个程序用到了数据结构的内容可是我们还没有学习数据结构当时这件事真是吧我们难住了,没办法只能自己上网还有去图书馆这中间也去问过老师最终还是把主要问题解决了,不过这中间可能有一些问题是我们现在解决不了的。五心得体会:1每当拿到一个小工程,我们都得先仔细分析用户的需求,然后再给程序定位(所花费的人力、物力以及财力),这将花费我们大量的时间,就如本次任务一样,我们首先聚在一起分析,然后得出大致方向,再具体分配任务,无论哪一部分都是我们努力的结果。2通过这次学生选课系统设计,以C++语言为基础的编写,更让我掌握到C++语言中的相关语句的应用。3用VisualC++6.0环境下编写,我觉得,从文件中读入数据十分麻烦,没有数据库中读入数据那么轻松,如果我要用到两个表中的记录,非常麻烦。4整个设计过程过后,我也基本掌握了设计的基本步骤,为我们以后做毕业论文也有很好的帮助。5C++是很好的系统编程语言,但不能以此独立,但用C++语言是做不出好的系统,还是要和其他软件结合,以C++为基础编写的系统,这样做出来的系统也更好,更美观。6这次系统设计有很多不足之处,在这过程中也认识到自己对C++也有很多的没掌握的地方。但是在老师和同学的帮助下,也算是弄出了一个简单的系统,在以后也要更加努力的学习,掌握更好的编程技术。7做程序真的是个很累的活,有时就为了一个小小的错误,可以一两顿饭不吃,但是做出来的那一刻,真心的感觉很开心,很有成就感,虽然其应用性不高,至少这也是我们小组努力的结果。8经过我们多天的团结合作终于把这个学生选课系统做完了,虽然这过程是艰难的但是做完之后感觉挺有成就感的,在这个过程中我们学到了很多光听老师讲学不到的东西。在写这个程序的时候用到了数据结构的内容,如果不是这个程序我觉得我是不会去自学数据结构的内容。参考书目:⑴谭浩强,《C++程序设计》,清华大学出版社,2002.4⑵求是科技,《VisualC++6.0信息管理系统开发》,人民邮电出版社,2005.4⑶陈良银、游洪跃、李旭伟,《C语言程序设计(C99版)》,清华大学出版社,2006.10⑷殷人昆,《数据结构》(用面向对象方法与C++语言描述),清华大学出版社,2007.2编程人员:孙双蕾、白晓兰实验报告设计:牟炼调试人员:孙双蕾讲解人员:白晓兰附录:源代码#includeiostream#includeiomanip#includefstream#includeconio.husingnamespacestd;//定义课程classcourse//某个学生所学的课程中的某一个{public:charcname[20];//课程名称floatgrade;//课程成绩course*Next;//指向下一个课程的指针};//学生类classstudent{public:student(){root=NULL;constintmaxcourse=5;factcourse=0;}voidreadname(charN[]);//读入学生的姓名voidgetname(charN[]);//得到学生的姓名voidwrecourse(charN[],floatscore);//要据课程名写入学生课程的成绩floataverage();//学生课程的平均成绩voidaddcourse(charN[],floatg);//给学生增加一门课intfindcourse(charN[]);//查找是否已有此课程,如果有返回,如果没有返回intretfactcourse(){returnfactcourse;}//得到所学的课程数目course*retroot(){returnroot;}//利用键表将所有的课程保存起来intretmaxcourse(){return5;}//得到最多可学的课程数目voidclrroot()//清零{root=NULL;factcourse=0;}private:charsname[20];//学生的姓名intmaxcourse;//学生最多可以学五门课程intfactcourse;//学生实际所学的课程数目course*root;//课程的根结点指针};voidstudent::readname(charN[])//读入学生的姓名{strcpy(sname,N);}voidstudent::getname(charN[])//得到学生的姓名{strcpy(N,sname);}voidstudent::wrecourse(charN[],floatscore)//要据课程名写入学生课程的成绩{course*p=root;if(p==NULL)return;if(p!=NULL)p=p-Next;while(p){if(strcmp(p-cname,N)==0)p-grade=score;p=p-Next;}}floatstudent::average()//学生课程的平均成绩{floataver=0.0;course*p=root;while(p){aver=aver+p-grade;}aver=aver/factcourse;returnaver;}voidstudent::addcourse(charN[],floatg)//给学生增加一门课{course*s=newcourse;s-Next=NULL;if(root==NULL)root=s;course*p=root;course*newcourse=newcourse;newcourse-Next=p-Next;p-Next=newcourse;strcpy(newcourse-cname,N);newcourse-grade=g;factcourse++;}intstudent::findcou
本文标题:c++学生选课系统设计报告
链接地址:https://www.777doc.com/doc-7251263 .html