ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:250.64KB ,
资源ID:14867471      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14867471.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c课程设计学生选修课选课系统.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

c课程设计学生选修课选课系统.docx

1、c课程设计学生选修课选课系统学生选修课选课系统须眉原作1 前言随着计算机的普及,各高校均采用计算机进行学生选课。学生选修课系统主要包含选修课管理系统及学生选课系统两部分。学生选修课系统一般需要有管理员管理选修课课程,然后学生对经过管理员操作后的选修课进行选课。选修课管理系统由管理员登录,对当前所有选修课课程进行管理操作。学生选课系统则是由学生登录,学生可以查看由管理员整理好的所有选修课,并从显示出的选修课中选择自己要选择的课程。管理员管理选修课实质是对后台选修课库中的选修课信息进行操作,可以在库中添加课程或删除课程。学生选课的实质即是先打印出后台选修课库中所有选修课信息以供选择,选择课程即是对

2、后台学生信息库里的学生信息进行修改。2 需求分析2.1 编写目的 (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题; (4)通过编写此系统,实现选修课系统的基本功能。2.2 需求概述 (1)系统中包括两个登陆身份(管理员与学生),并对应不同的功能; (2)对于管理员,此系统具有添加、删除、查看选修课等功能; (3)对于学生,此系统具有选课、查询等功能2.3 需求说明 此系统可以实现学生选课,管理员管理课程的基本功能2.4 开发环境 使用Visual C+6.0编程软件3 总

3、体设计3.1功能模块图(1)学生学生身份有两个功能,分别是选课与查看个人信息。如图3.1所示。 图 3.1 学生功能模块图(2)管理员管理员可以对选修课课程进行管理。如下图所示。管理员查看选修课删除选修课添加选修课图 3.2 管理员功能模块图3.2 流程图 进入系统后可以选择以学生身份或者管理员身份登录。学生登录需要输入个人的学号及姓名,成功登录后可以选课或查询个人信息。管理员的登录需要输入密码,成功登录后则可以对当前所有的选修课进行管理操作,可添加新选修课或删除已有的选修课。详细操作流程如下图所示。选择身份或退出学生管理员开始结束选课个人信息查看选修课删除选修课添加选修课显示全部按类型选课按

4、学分选课显示全部按类型查询按学分查询输入学号及姓名输入密码图 3.3 流程图3.3 类的设计图(1)Course类 Course类即选修课课程类。数据成员分别是:课程编号、课程名称、课程类型、开课时间、授课学时、实验学时、总学时以及学分。成员函 数则包含所有数据成员的get函数,用以获取数据成员的值,set函数用来修改课程,print函数则是打印课程的信息。如下图所示。Courseid: char *name: char *nature: char *date: char *shours: intahours: intzhours: intscore: doublescore: doubleg

5、etId(): char *getName(): char*getNature(): char*getDate(): char*getAhours(): intgetShours(): intgetZhours(): intgetScore(): doubleset(char *a, char *b, char *c, char *d, int e, int f, double g): voidprint(): void图 3.4 Course类(2)Student类 Student类即学生类。其中包含了学生的学号、学生姓名、所选的两门 课程及两门选修课课程的总学分。setId和setName

6、是用来修改相关成员的值,getName获取学生的姓名,print函数用来打印学生的相关信息,个selectCourse则是用来选课。如下图所示。Studentid: char *name: char *c1: Coursec2: Coursezscore: dounblesetId(char * a1): voidsetName(char* a1): voidgetName(): char*selectCourse_1(Course cc): voidselectCourse_2(Course cc): voidprint(): voidprint(): void图3.5 Student类4

7、各功能模块设计4.1整体设计对于学生和选修课,我们分别定义了相应的类Student和类Course,其间的关系就是学生类中有两个选修课类对象成员。而对于管理员我们并没有单独去定义类,因为管理员只是对选修课进行操作,程序中并不需要访问管理员的信息。为了方便对选修课进行管理及多位学生的登录,我们定义了一个选修课数组和学生数组。4.2主要的功能函数设计(1)选课函数 void selectCourse(Student s110, Course c1M, int s_num1) 对当前学生对象进行操作,覆盖其选修课对象成员c1或c2, 即学生的选课。(2)两种输出所需选修课函数按学分输出选修课函数 v

8、oid selectScore(Course c1M)按类型输出选修课void selectNature(Course c1M)对传递进来的选修课数组进行扫描,输出符合要求的选修课。(3)选修课排序函数 void xu(Course c1M)使用冒泡排序法对选修课数组进行编号从小到大的排序。(4)主菜单函数 void menu(Course c16, Student s110)所有菜单循环都在其中,调用其他函数来实现具体功能。5 系统调试1.系统主界面进入系统主界面后可以选择登录身份或退出程序。如图5.1所示。图5.1 系统主界面2.选修课管理系统图5.1选择登录身份为管理员,默认密码123,

9、输入-1可返回图5.1界面。密码输入正确后可进入管理员登录系统。如图5.2所示。图5.2 选修课管理系统3.按学分查看选修课图5.2选择查看选修课,可以查看当前所有的选修课课程的相关信息。可以选择不同的输出方式:按学分查询、按类型查询、显示全部。选择按学分查询,在选择0.5,可打印当前所有课程中学分为0.5的课程信息。如图5.3所示。图5.3 按学分查看选修课4.查询全部选修课查看选修课功能中可以选择显示全部,即罗列出当前所有的选修课课程信息。如图5.4所示。图5.4 查询全部选修课5.管理员添加选修课图5.2选择添加选修课,可以添加一门新的选修课,然后按要求输入课程信息。如图5.5所示。图5

10、.5 管理员添加选修课6.添加后的选修课信息添加选修课后选择返回上一层,再选择显示全部选修课可以看到已新增的选修课已添加成功。如图5.6所示。图5.6 添加后的选修课7.管理员删除选修课图5.2选择删除选修课。输入要删除的选修课的编号,即可删除相应的选修课。如图5.7所示。图5.7 管理员删除选修课8.删除后的选修课信息删除选修课后选择返回上一层,再选择显示全部选修课可以看到已删除的选修课已删除成功。如图5.8所示。图5.8 删除后的选修课信息9.学生选课系统图5.1选择学生,然后输入学生的姓名及学号就能进入学生选课系统。如图5.9所示。图5.9 学生选课系统10.学生选课以学生身份登录成功后

11、,可以选择选课或是查询个人信息。选择选课可以选择按学分选课、按课程类型选课或显示全部课程再进行选课。选择按学分选课,再选艺术类,再输入课程编号即可选择相应课程。如图5.10所示。图5.10 学生选课11.学生信息选择查看个人信息程序即打印出当前学生的相关信息。如图5.11 所示。图5.11 学生信息12.退出图5.1选择退出即退出程序。如图5.12所示。图5.12 退出程序6 总结与体会6.1 总结本程序实现了学生选课及管理员对课程的操作功能,而学生的选课及管理员对课程的管理,都可以按学分或类型来进行操作。管理员登录的默认密码是123,管理员可以添加新的选修课课程,也可以删除原有的选修课。经过

12、此次的课程设计,我们受益颇丰,尤其是对在编写过程中遇到的难题的处理方法,学会了很多程序设计的技巧。6.2 编写程序中遇到的问题及解决办法(1)在无法与后台交互的情况下如何实现用户登录?因为只需要管理员有对选修课操作的能力,因此不需储存管理员的信息,只需在其登录前询问密码即可。而学生的登录,在其登录时分配一个对象空间,储存在其登录时获取的学号及姓名即可,即每一个学生的登录相当于注册过程。(2)如何在不退出程序的情况下,能够让多位学生进行选课?定义学生类对象数组,每一位学生选完课后,再分配一个新的学生类对象空间。(3)如何实现对学生对象中课程对象成员的覆盖? 一开始我们为了方便起见是考虑学生类课程

13、对象定义为引用,这样只需 引用已有的选修课课程即可,但这样的话,在对学生对象初始化时引用的初 始化就成了问题,因此只能放弃。最终是选择了使用set和get方法对对象成 员的成员一个个覆盖。参考文献1 黄维通.Visual C+面向对象与可视化程序设计(第2版).北京:清华大学出版社,2007.2 张乃孝,陈光,孙猛.算法与数据结构C语言描述(第三版),2011.3 谭浩强.C程序语言设计(第三版)M.北京:清华大学出版社,2007.4 杨永斌.数据结构理论与实践M.天津:科学技术出版社,2011.5 罗建军.C+程序射机枪教程(第2版).北京:高等教育出版社,2004.6 郑振杰.C+程序设计

14、. 北京:人民邮电出版社,2005.7 刘觉夫,王更生等.c+程序设计.北京:邮电大学出版社,2011.8 邵伟忠.C常用算法程序集.天津:人民出版社,2009.9 徐世亮.C+大学教程.北京:人民邮电出版社,2010.10 吴华恩.C+程序设计.北京:机械工业出版社,2008.11 邵伟忠.C常用算法程序集.天津:人民出版社,2009.附录 源程序#include #include #define M 10class Course /选修课课程类private: char * id; char * name; char * nature; char * date; int shours; i

15、nt ahours; int zhours; double score;public: Course() id = unknown; name = unknown; nature = unknown; zhours = 0; shours = 0; ahours = 0; date = unknown; score = 0; Course(char *a, char *b, char *c, char *d, int e, int f, double g) id = a; name = b; nature = c; date = d; shours = e; ahours = f; score

16、 = g; zhours = e + f; void set(char *a, char *b, char *c, char *d, int e, int f, double g) id = a; name = b; nature = c; date = d; shours = e; ahours = f; score = g; zhours = e + f; char * getDate() return date; int getZhours() return zhours; int getShours() eturn shours; int getAhours() return ahou

17、rs;double getScore() return score; char * getNature() return nature; char * getId() eturn id; char * getName() return name; void print() cout 编号: id t; cout 名称: name t; cout 类型: nature t; cout 上课时间: date endl; cout 总学时: zhours h t; cout 授课学时: shours h t; cout 实验学时: ahours h t; cout 学分: score endl; ;

18、class Student /学生类private: /学生选的课程是对象的成员 char * id; char * name; Course c1; Course c2; double zscore;public: Student() id = unknown; name = unknown; zscore = 0; void setId(char * a1) d = a1; void setName(char * a1) name = a1; char * getName() return name; void print() cout n学号: id endl; cout 姓名: nam

19、e endl; cout 您已选的选修课:n1.; c1.print(); cout 2.; c2.print(); cout 选修课总学分: c1.getScore() + c2.getScore() n endl; void selectCourse_1(Course cc) /修改对象的课程成员 c1.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore(); void selectCourse_2(Course cc) c2.set(cc.get

20、Id(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore(); ;void selectCourse(Student s110, Course c1M, int s_num1) /选课 char id210, select1; int i, j, k; for(j=0; j2; j+) cout k; cout idj; for(i=0; iM & c1i.getScore() !=0; i+) /扫描所有选修课,如果当前选修课为空则跳出循环 if(strcmp(idj, c1

21、i.getId()=0) if(1 = k) s1s_num1.selectCourse_1(c1i); break; if(2 = k) s1s_num1.selectCourse_2(c1i); break; if(0 = j) cout select1; if(n = select1) break; cout n选课成功! endl;void selectScore(Course c1M) /按学分查询选修课 int select, num, i; cout n请输入选修课的学分:; cout n 1. 0.5n 2. 1.0 endl; cout select; num = 1; if

22、(1 = select) for(i=0; iM & c1i.getScore() !=0; i+) if(0.5 = c1i.getScore() cout num .; c1i.print(); cout endl; num+; else if(2 = select) for(i=0; iM & c1i.getScore() !=0; i+) if(1.0 = c1i.getScore() cout num .; c1i.print(); cout endl; num+; else cout 对不起,您的输入有误,请重新输入!nn; void selectNature(Course c1M

23、) /按类型查询选修课 int select, num, i; char n110=艺术类, n210 =学术类; cout 请输入选修课的学分:; cout n 1. 艺术类n 2. 学术类 endl; cout select; num = 1; if(1 = select) for(i=0; iM & c1i.getScore() !=0; i+) if(strcmp(n1, c1i.getNature() = 0) cout num .; c1i.print(); cout endl; num+; else if(2 = select) for(i=0; iM & c1i.getScor

24、e() !=0; i+) if(strcmp(n2, c1i.getNature() = 0) cout num .; c1i.print(); cout endl; num+; else cout 对不起,您的输入有误,请重新输入!nn; void xu(Course c1M) /当前所有选修课进行排序(编号从小到大) int i,j,k=0,num=0; Course cc; for(j=0; jM & c1j.getScore() !=0; j+) for(i=num; i 0) k+; cc.set(c1i.getId(),c1i.getName(),c1i.getNature(),c

25、1i.getDate(),c1i.getShours(),c1i.getAhours(),c1i.getScore(); c1i.set(c1i+1.getId(),c1i+1.getName(),c1i+1.getNature(),c1i+1.getDate(),c1i+1.getShours(),c1i+1.getAhours(),c1i+1.getScore(); c1i+1.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore(); else k

26、 = 2; if(1 = k) num = i; k = 0; void menu(Course c16, Student s110) /菜单 int flag0, flag1, flag2, flag3, flag4, password=0 ; int select, s_num=0, i, j, num, newNum; char id1010; char select1; char id110; char name110; char da20; char na10; int sh; int ah; double sc; flag0 = 1; while(flag0) cout n= endl; cout | 菜 单 | endl; cout = endl; cout | 1.管理员 | endl; cout | 2.学生 |

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2