面向对象课程设计(C++)-学生信息管理系统

  • 格式:txt
  • 大小:15.49 KB
  • 文档页数:3

本文由voechuchu贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
大 连 科 技 学 院
面向对象程序设计课程设计
题 目 学生选课信息管理系统
学生姓名
罗楚
08专业班级 软件工程 08-3
指导教师
刘瑞杰
职称
讲师
所在单位
信息科学系软件工程教研室 信息科学系软件工程教研室
教学部主任 学部主任
王丽娟
完成日期 2011 年 9 月 9 日
课程设计报告单
学号 0801030328 姓名
罗楚
专业班级 评分
08软件工程 08-3 备注
考 核 项 目
1 平时工作态度及遵守纪律情况 (10 分) 掌握基本理论、关键知识、基本技能的程度和 阅读参考资料的水平 (10 分) 独立工作能力、综合运用所学知识分析和解决 问题能力及实际工作能力提高的程度 (20 分) 完成课程设计说明书及软件的情况与水平(小 组分工情况、规范性、整洁清楚、叙述完整性、 思路清晰程度、工作量及实际运行情况和创新 性) (60 分)
2
3
4
总评成绩
综 合 评 定: 指导教师签字: 指导教师签字:
(优、良、中、及格、不及格)
2011 年 9 月 9 日
《面向对象程序设计(A)课程设计》任务书
一、课程设计任务及要求: 课程设计任务及要求:
任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完 成从需求分析、系统设计、系统实现,软件测试的全过程。 要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块 的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但 所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。 (2)提交课程设计报告。 (3)指标: 要求完成课程设计报告 3000 字以上(约二十页);完成所设计的题目, 设计题目的语句行数的和在 200 行语句以上。
二、工作量
2 周(10 个工作日)时间
三、计划安排
第 1 个工作日:查找相关资料、书籍,阅读示例文档,选择题目。 第 2 个工作日-第 4 个工作日:设计程序结构、模块图。 第 5 个工作日-第 9 个工作日:完成程序的编码,并且自己调试、测试。穿插进行 课程设计报告的撰写。 第 10 个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报 告,给出学生成绩。
指导教师签字: 2011 年 8 月 29 日
1
目 录
题目:学生选课信息管理系统 …… 2 1 系统需求分析 …… 2 1.1 引言 …… 2 1.2 系统需求分析阶段目标与任务 ……

2 2 概要设计 …… 2 2.1 概要设计阶段总体结构设计 …… 2 2.2 概要设计阶段成果 …… 4 3 详细设计 …… 4 3.1 界面设计 …… 4 3.2 功能模块调用关系 …… 6 4 编码 …… 7 4.1 头文件代码(xk.h) …… 7 5 测试结果及运行效果 …… 8 5.1 创建系统测试数据 …… 8 5.2 系统运行界面 …… 9 参考文献 …… 12 附录 部分代码 …… 13
1
题目: 题目:学生选课信息管理系统
1 系统需求分析
1.1 引言 21 世纪随着计算机技术的不断成熟,带来了信息技术的高速发展。信息 技术的发展极大地推动了整个社会信息化的进程。在日益庞大的信息管理领 域,信息管理自动化直接地改变了传统的文档管理方式,极大地提高了工作 效率和管理水平。 鉴于高等院校在校学生、教职员工、日常事务处理信息数据的繁多,学 校信息管理部门通常感到无法高效的进行管理。就高等院校学生选课这一方 面,由于院校学生人数众多, 专业不同, 学校所安排的教学计划也就因人而异。 这对于管理学生课程的教务老师来说,无疑是一项庞大和复杂的工作。不仅 要考虑学校对某一专业整体的教学计划安排,也要对各专业相关老师的教学 任务进行统一协调,还要考虑某些学生的特别学习情况。为解决学校上述的 学生课程管理难题,提高教务老师的信息管理效率,以及为了方便学生更好、 更便捷的选择自己所选修课程,查看自己的课程和学习信息;让老师的教学 工作更加顺利和对教学信息的及时掌握。本系统特参照一般高等院校对在校 学生课程选修的数据库管理办法,结合实践,设计出学生,教师和管理员三 大功能模块,根据赋予系统权限不同,分别对系统进行相关操作,方便了学 生、教师对课程信息的查看,同时,也大大减少了管理员的信息管理工作量, 提高了系统效率。 1.2 系统需求分析阶段目标与任务 1) 、通过对高等院校管理学生选课的管理模式和步骤流程,设计出系统 的总体结构和各主要功能模块。 2) 、了解面向对象语言的编程风格,以及数据库对数据信息处理的特点, 确定好系统的设计语言和数据库平台。 3) 、及时与学校管理信息老师和课程设计指导老师沟通,进一步熟悉学 生选课信息管理系统的数据流程、数据处理以及操作步骤。提出自己的设计 想法,征求老师意见,改正不合理的地方,为下面的概念设计和详细设计奠 定基础。
2 概要设计
2.1 概要设计阶段总体结构设计
2
1) 、确定系统的总体结构以及子结构: 系统根据用户模式的不同,分为三大主功能模块,分别赋予不同等级的权限 实现不同的系统功能。系统功能层次图如

下:
登录学生信息系统
学生选课系统
学生信息管理
学生信息查询 学生信息修改 学生信息浏览 学生信息删除 学生信息录入 退出学生信息
课程信息管理
课程信息查询 课程信息修改 课程信息浏览 课程信息删除 课程信息录入 退出课程信息


选课信息浏览 选 修 离 课 改 开
退出系统
3
图 2-1 模块功能层次图
2.2 概要设计阶段成果
学生操作界面 ORACLE 系统数据 库
系统登录界面
教师操作界面
管理员操作界 面

图 2-2 系统工作示意图
ODBC
3 详细设计
3.1 界面设计 系统开始运行后自动从当前目录下的 coslist.cos; stulist.stu 文件中读 取信息,并实时显示信息的读取情况。系统使用数字菜单式的界面,根据用户 模式的不同赋予相应等级的系统权限。用户登录系统主界面,输入用户名和密 码,选择登录模式。系统对用户进行安全验证,若通过,则跳转到相应操作界 面;若失败,则提示相应错误信息。系统主界面如下图所示,各功能模块前面 都标注了编码 ,用户只要输入相应的编码就可以选择相应的功能模块,方便了 各层次用户对系统的功能操作。同时界面中也显示了整体的结构图,以便用户 对系统的整个功能结构有着清晰的认识。 在用户选择每一个具体的功能模块后, 系统都会提示用户做出相应的操作,并根据用户的指令反馈相应的信息处理结 果。另外在显示新的菜单时,都会将之前的内容清空,使系统的操作界面简洁, 提高用户使用系统的效率。
4
图 3-1 系统登录主界面图
功能描述: 选 1:进入课程信息界面 选 2:进入学生信息界面 选 3:进入选课功能界面 选 4:退出系统,并保存相关信息到数据库的数据表中。
5
3.2 功能模块调用关系
图 3-1 函数调用模块图
6
4 编码
头文件代码(xk.h) 4.1 头文件代码(xk.h)
#include #include #include #include #include #include using namespace std; class student; //建立一个课程结构 struct course1 { int cnumber;//课程编号 char cname[100];//课程名称 int xinzhi;//课程性质 int floattime;//课程理论学时 int testtime;//课程实验学时 int credit;//课程学分 int term;//课程开课学期 int select;//课程数 }; //建立一个课程类 class course { public: int c;//课程信息记录个数 course1 cou[100]; void cinput();//课程信息录入 void cborrow();//课程信息浏览 void cedit();//课程信息修改 void cdelete();//课程信息删除 void ccx();//课程信息查找 void cshuchu();//课程信息从文件中写到程序 中 void cshuru();//课程信息从程序输出到文件中 }; //建立一个学生结构 struct student1 {

int snumber;//学号 char sname[8];//姓名 int sxinbie;//性别 7 }; char menu();//主菜单 char coursemenu();//课程信息菜单 char studentmenu();//学生信息菜单 char selectmenu();//选课菜单 }; //选课类 class selectcourse:public student,public course { public: void selsum(student& m,course& n);//计算选 修的学分的总和 void selcourse(student& m,course& n);//学 生选课 void delecourse(student& m,course& n);//学 生退选 void selborrow(student& m,course& n);//学 生选课浏览 中 void sshuchu();//学生信息从程序中输出到文 件中 }; //建立一个学生类 class student { public: int s;//学生信息记录个数 student1 stu[100]; void sborrow();//学生信息的浏览 void sedit();//学生信息修改 void sdelete();//学生信息删除 void scx();//学生信息查询 void sinput();//学生信息输出 void sshuru();//学生信息从文件中输入到程序 char sborn[11];//出生年月 char stelephone[11];//电话 int sage;//年龄 int sele[20];//选课情况 int x;//学生选了多少课 int sum;//学生选课的总学分
5 测试结果及运行效果 测试结果及运行效果
创建数据库, 建立好相应的数据表, 插入系统用户、 学生、 课程等数据信息, 进行系统测试与调试。 5.1 创建系统测试数据
表 1-1 用户表
登录名(LOGINNAME) 0801030328 030287 03021000 03021001
学号 姓 名 性 别
密码(PASSWORD) oocclocu Lrj30287 luochuoo 4cnnlocu
表 2-1 学生信息表
模式(MODE) 学生 教师 管理员 管理员
政 治 面 貌 民 族 备注
出 生 系 年月 别
班级
寝 室 籍 号 贯
0801030328 罗 楚

2-8 月
软 件 程
08010303 50830 湖 南 衡 阳
共 青 团 员
汉 族
在校
-1989 工
3-1 课程表
课程名(CNAME) 离散数学 Oracle 数据库应用 C++面向对象程序设计
课程号(CNO) 030104 030112 030111
表 4-1 学生选课表
学分(CREDIT) 3 3 4
学号(SNO) 课

名 教 工 号 成 (TNO) 030290 null 84 91
绩 绩 null 3.4 4.1
点 标 null 主修 主修

(CNAME) 0801030328 C++程序设计 应用 0801020119 工程力学
(SCORE) (SCOREPOINT) (MARK)
0801030328 数据库原理及 030276 030121
8
5.2 系统运行界面
图 5-1 课程信息界面图
功能描述: 选 1:进入课程信息浏览,先查看是否有该课程记录,如果查询到,跳转 到课程信息显示界面。没有则提示所查询课程不存在,返回到课 程信息主界面。 选 2:跳转到课程信息录入界面,输入要录入课程的课程编号、课程名 称、学分,确认插入。若成功,系统返回插入成功提示,若失败, 提示相应错误。 选 3:进入课程信息修改界面,可根据课程编号,查看该课程的相关信 息,点击修改按钮,可对该课程进行

修改操作。修改成功,系统 对数据库中该课程信息进行自动更新。 选 4:进入课程信息删除界面,录入要删除的课程编号,看是否在表中 有这条记录,无则提示课程不存在,有则显示记录的相关信息,提 示用户是否确实要删除此记录,确认则进行删除。 选 5:进入课程信息查询界面,用户可以选择查看自己所选修的任何课 程信息和选修状态,点击课程下面的教师链接, 还可以查看该课程 教师的一些基本信息。 选 6: 退出课程信息界面,返回系统登录界面。
9
图 5-2 学生信息界面图
功能描述: 选 1:进入学生信息查询界面,学生可查看自己的学籍信息,系统管理员 可根据学生专业、学生所选某一门课程的课程名称、学号查看某 一专业全部学生信息和某个学生的相关信息。 选 2:进入学生信息录入界面,输入学生编号,姓名、专业等相关信息, 进行录入操作,若成功,系统返回插入成功提示,并自动更新数 据库中学生表的学生信息。 选 3:进入学生信息修改界面,录入学生编号,对学生的相关信息进行 修改。 选 4:进入学生信息删除界面,录入要删除的学生编号,看是否在表中 有相应记录,有则显示记录的相关信息,并提示是否确实要删除该 记录,确认则进行删除。 选 6: 退出学生信息界面,返回系统登录界面。
10
图 5-3 学生选课功能界面图
功能描述: 选 1:进入选课信息查询界面,根据课程号或者课程名称查询所要选修课程 的相关信息,点击选课按钮,跳转到选课功能界面。 选 2:进入学生选课功能菜单,勾选所选课程进行选课,确认进行提交,等待 管理员审核,若通过,返回选课成功。可返回继续查看该课程的相关 信息。 选 4: 退出选课界面,返回系统登录界面。
11
参考文献
[1] 张俊.王庆春.面向对象程序设计(C++).武汉:武汉大学出版社.2009 [2] 谭浩强.语言程序设计.北京:清华大学出版社.2004 [3] 李普曼.C++ Primer 中文版(第 4 版).北京:人民邮电出版社.2008 [4] 钱雪忠.黄建华.数据库原理及应用第二版.北京:北京邮电大学出版社.2005
12
部分代码 附录 部分代码 1.学生选课信息代码(selectcourse.app) 1.学生选课信息代码(selectcourse.app) 学生选课信息代码
#include"xk.h" //计算学分总和 void selectcourse::selsum(student& m,course& n) { for(int i=0;i

如下: \n"<num; for(int i=0;i=20) { cout<<"\t\t***所选课程已经超过 了分,不能再选。"<num1; for(int ww=0;ww=20) { cout<<"\t\t***所选课程已 经超过了分,不能再选。"<cout<<"\t\t***输入课程号有 误,请重新输入"<>bol; if(bol=='N' || bol=='n') break; } } } } if(p==0) cout<<"\t\t***输入的学号不存在 "<>bol; if(bol=='N' || bol=='n') break; } } cout<<"\t\t按任意键返回……"<0) { cout<>num; //学生退选 } } cout<cout<cout<<"\t\t按任意键返回……"<void selectcourse::delecourse(student& m,course& n) { system("cls"); cout<for(int i=0;icout<<"学号\t"<<"课程名(编 号)"<m.stu[i].sum-=n.cou[o].credit; } } } if(q==0) cout<<"\t\t***你没有选 择这门课程!"<>bol; if(bol=='N' || bol=='n') break; } } } if(v==1) cout<<"\t\t***该学生没有选课! "<>bol; if(bol=='N' || bol=='n') break; } cout<<"\t\t按任意键返回……"<cout<>num1; for(int y=0;y16
2.主函数

代码(main.app) 主函数代码(main.app)
#include"xk.h" int main() { course a; student b; selectcourse c; b.sshuru();a.cshuru(); c.selsum(b,a); char n,i,j,k; while(1) { p:n=menu(); if(n=='1') { while(1) { i=coursemenu(); switch(i) { case '1':a.cborrow();break; case '2':a.cinput();break; case '3':a.cedit();break; case '4':a.cdelete();break; case '5':x();break; case '6':goto p;break; } } } if(n=='2') { while(1) { j=studentmenu(); switch(j) { } return 0; } } } if(n=='4') { b.sshuchu();a.cshuchu(); break; } } } if(n=='3') { while(1) { k=selectmenu(); switch(k) { case '1':c.selborrow(b,a);break; case '2':c.selcourse(b,a);break; case '3':c.delecourse(b,a);break; case '4':goto p;break; } } case '1':b.sborrow();break; case '2':b.sinput();break; case '3':b.sedit();break; case '4':b.sdelete();break; case '5':b.scx();break; case '6':goto p;break;
17
课程设计总结: 课程设计总结:
学习 C++课程是在大二下学期,现在已经过去快两年了,学校安排大四上学期做面 向对象语言程序设计。 知识已经有些遗忘了, 拿起书本看了两天, 复习一下所学的知识, 开始在脑海中酝酿要做一个什么样的系统。经过一周的努力,算是完成了任务吧。这学 期在复习考取研究生,所以没多少时间太顾及专业学习这一块,基本上都是晚上回来敲 一些代码,所以有些不足之处,也遇到了不少问题。例如:在测试连接数据库时,对课 程信息的更新总是失败。我对程序执行过程进行了细致分析,没有发现任何逻辑上的问 题,于是我在所有的地方都添加断点,多次调试后,发现 Course 类的构造函数和析构 函数被多次调用,而且每次调用 cosList 对象时,都会建立 Course 类的临时对象。后 来我弄明白了在对 cosList 的对象进行操作时,没有使用引用方式,所以任何操作都不 会对其产生实质作用。当我把菜单函数中对 cosLsit 类和 stuList 类对象的调用方式都 改成引用后,问题迎刃而解。在完成课程设计的过程中,这种问题还有很多,加上时间 紧迫, 中途难免有些灰心丧气, 但是最后还是坚持了下来。 这次的课程设计经历告诉我, 做一件事情,只要自己不选择放弃,就一定能得到自己所要的。
指导教师评语: 指导教师评语:
签名:
2011 年 9 月 14 日
18

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。