1、 课课 程程 设设 计计 教教 学学 院院 计算机学院 课程名称课程名称 面向对象程序设计课程设计 题题 目目 学生选课系统 专专 业业 软件工程 班班 级级 12 软件工程 姓姓 名名 同组人员同组人员 指导教师指导教师 2013 年 12 月 15 日 (完成时间) 1 目目 录录 一 概述 . 2 1.课程设计的目的 . 2 2.课程设计的要求 . 2 3. 课程设计题目 . 2 二 总体方案设计 . 3 1. 总体设计 3 2.主要功能 3 3.我的工作 4 三 详细设计 5 四 程序的调试与运行结果说明 9 五 课程设计总结 10 参考文献. 11 2 一一 概述概述 1.课程设计的
2、目的 1理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2培养综合运用所学知识独立完成课题的能力。 3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论, 全方位考虑问题等科学技术人员应具有的素质。 4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中 找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 2.课程设计的要求 通过课程设计的实践训练,进一步掌握 C+编写软件的方法和技术,提高 软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。 1. 学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象 的系统分析与设计,编 码和测试方面
3、的知识; 2. 熟悉自动化的软件开发工具 VC+6.0,并将其运用于软件开发的全过程; 3. 进一步加强和提高软件工程文档的编写能力; 4. 培养协作能力和团队精神 ; 5. 要求利用面向对象的方法以及 C+的编程思想来完成系统的设计; 6. 要求在设计的过程中,建立清晰的类层次; 7. 在系统的设计中,至少要用到面向对象的一种机制。 3.课程设计题目 学生选课系统 3 二二 总体方案设计总体方案设计 1.总体设计 2.主要功能 该系统的主要功能是做一个学生端选课系统,整体比较简单。系统中只有一种 用户那就是学生,学生的信息事先已存在文件中,初始密码是他的学号。课程 信息也在事先存在文件中,当
4、要选课时从文件读出信息。选课后修改信息存入 文件。基本完成学生选课功能,其中文件模拟数据库。 4 3.我的工作 我的工作主要是定义 Student 类 和它的成员函数已经和它输入输出相关的运算 符重载。首先我在定义 student 类时 把 section类定义为友元类以方便整个程序 的运行和类间的调用。同时就将学生入口菜单函数也设为友元函数方便调用学 生的信息,比如密码。之后是两个输出输入流运算符重载函数设为友元类。类 中公有部分包括析构和构造函数,检查密码在正误和学号有无的俩个 bool类型 函数。私有数据成员包括学生的基本信息和学分信息,选课信息。运算符重载 中用到了课外的查阅的容器,结
5、合课内所学知识对文件操作。 5 三三 详细设计详细设计 主菜单流程图: 6 1.界面设计 界面图示 菜单选择: 1.开始选课 2.修改密码 3.取消已选课程 4.查看已选课程 5.退出系统,并保存相关记录到文件里 2.开始选课 选课图示 7 菜单选择: 进入选课后弹出所有课程信息包括名称,任课老师,人数,时间等。输入相应数 字选择相应课程。 3.修改密码 修改密码图示 当菜单选择为 2 时进入修改 密码, 输入原密码确认后输入新密码修改成功, 若原密码错误 则修改失败。 4.取消已选课程 取消课程图示 当选择菜单 3 弹出已选课程列表菜单,继续选择相应取消课程则可取消已选修课程。若选 修失败,
6、则弹出提示。 8 5.查看已选课程 查看已选课程图书 选择菜单 4 可查看已选课程然后弹出已选课程。 9 四四 程序的调试与运行结果说明程序的调试与运行结果说明 程序中出现的问题: 1从文件读入记录到程序里,但一条记录有不同字段,分别要录入不同的变量 里,最后用 SWITCH 分别进行输出判断。 2程序结束时,要把记录重新读入到文件里,我想我用的类创建的,程序结束 时,自动调用析构函数,没具体弄清析构函数其它用法,就把读出到文件的操 作放在析构函数里面,导致文件里的数据在退出程序时被清空。后经过老师反 复给我调试,终于清楚问题所在。我就把读入文件的操作单独放在一个函数里, 退出再调用。 3在主函数调用菜单,我先用的 VOID 类型,后来调用时发现不行,我要输入 的操作不能执行,就改成 CHAR 返回类型,判断其选择的什么。 4再执行删除信息操作时,我的思路受到阻碍,不知道怎么删除记录,如果让 删除的记录都清为零,但那条记录依然存在,只不过是全为零,所以后来我想 到让后面的记录一条条覆盖前面的记录,也算是删除