Mockingjay
学生选修课程系统设计
假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计该选修课程系统。
设计一个抽象类表示课程,包括课程最基本的属性和行为
在课程抽象类的基础上派生出选修课程类
设计一个学生类,表示某一个学生的选修课程的情况
用主程序模拟多个学生的选课过程
要求有文件支持选课内容的永久保存;使之能提供以下功能:
其中, 查询方式可按学分查询、按课程性质查询5、学生选修课程(可选项)。
Microsoft Visual C++ 6.0
Windows操作系统
Course_ZR类
主要功能是作为基类为子类的功能实现提供模板。
Course_ZR |
---|
course_num、 course_name、 course_nature、 all_hours、 teach_hours、 practice_hours、 credit、 term |
virtual void data_show()=0、 virtual void search_credit(float n)=0、 virtual void search_nature()=0、 virtual void search_hours(int h)=0;(纯虚函数) get_course_num()函数、 get_course_name()函数、 get_course_nature()函数、 get_all_hours()函数、 get_teach_hours()函数、 get_practice_hours()函数、 get_credit()函数、get_term()函数、get_day()函数 |
Public_course_ZR类
主要功能为作为公共课信息储存和传递的接口。
Public_course_ZR |
---|
course_num、 course_name、 course_nature、 all_hours、 teach_hours、practice_hours、 credit、 term、teacher |
virtual void search_credit(float n); virtual void search_nature(); virtual void search_hours(int h); friend ostream & operator<<(ostream &,Public_course_ZR &); friend istream & operator>>(istream &,Public_course_ZR &); data_show()函数、 get_teacher()函数 |
Required_course_ZR
主要功能为作为必修课信息储存和传递的接口。
Required_course_ZR |
---|
course_num、 course_name、 course_nature、 all_hours、 teach_hours、practice_hours、 credit、 term、teacher |
virtual void search_credit(float n); virtual void search_nature(); virtual void search_hours(int h); friend ostream & operator<<(ostream &,Required_course_ZR &); friend istream & operator>>(istream &,Required_course_ZR &); data_show()函数、 get_teacher()函数 |
ElctiveCourse_HWN类
主要功能为作为选修课信息储存和传递的接口。
ElctiveCourse_HWN |
---|
course_num、 course_name、 course_nature、 all_hours、 teach_hours、practice_hours、 credit、 term、teacher |
void search_credit(float n);//纯虚函数的实现 void search_nature(); void search_hours(int h); friend ostream & operator<<(ostream &,ElctiveCourse_HWN &); friend istream & operator>>(istream &,ElctiveCourse_HWN &); data_show ()函数、get_teacher()函数 |
Student_HWN类
主要功能为作为学生选课信息储存和传递的接口。
Student_HWN |
---|
num、 Class、 name、 personal_num、personal_password |
void delete_Publiccourse(int)、//退选相关函数 void delete_Requiredcourse(int)、 void delete_Elctivecourse(int)、 friend ostream & operator<<(ostream &,Student_HWN &)、 friend istream & operator>>(istream &,Student_HWN &)、 get_num()函数、get_Class()函数、get_name()函数、 get_personal_num()函数、 get_personal_password()函数 |
类名 | 父类 | 提供的服务 | 需要的服务 |
---|---|---|---|
Course_ZR | 无 | 作为父类为子类的实现提供模板 | 无 |
Student_HWN | 无 | 作为存储学生对课程信 息的操作的存储 | 读取学生信息存储文档 |
Public_course_ZR | Course_ZR | 作为获取文档中有关公共课信息的媒介 | 读取公共课课程信息操作 |
Required_course_ZR | Course_ZR | 作为获取文档中有关必修课信息的媒介 | 读取必修课课程信息操作 |
ElctiveCourse_HWN | Course_ZR | 作为获取文档中有关选修课信息的媒介 | 读取选修课课程信息操作 |
属性介绍
int course_num; //表示课程的编号,用于体现课程信息
string course_name; //表示课程的名称,用于体现课程信息
string course_nature; //表示课程的性质(看是公共课,必修课,还是选修课),用于体现课程信息
int all_hours; //表示课程的总学时,用于体现课程信息
int teach_hours; //表示课程的授课学时,用于体现课程信息
int practice_hours; //表示课程的实践学时,用于体现课程信息
float credit; //表示课程的学分,用于体现课程信息
string term; //表示课程开设在哪个学期,用于体现课程信息
string day; //表示课程开设在星期几,用于体现课程信息
接口
virtual void data_show()=0;
virtual void search_credit(float n)=0;
virtual void search_nature()=0;
virtual void search_hours(int h)=0;
int get_course_num(){return course_num;}
string get_course_name(){return course_name;}
string get_course_nature(){return course_nature;}
int get_all_hours(){return all_hours;}
int get_teach_hours(){return teach_hours;}
int get_practice_hours(){return practice_hours;}
float get_credit(){return credit;}
string get_term(){return term;}
string get_day(){return day;}
属性介绍
int course_num; //表示公共课的编号,用于体现课程信息
string course_name; //表示公共课的名称,用于体现课程信息
string course_nature; //表示公共课,用于体现课程信息
int all_hours; //表示公共课的总学时,用于体现课程信息
int teach_hours; //表示公共课的授课学时,用于体现课程信息
int practice_hours; //表示公共课的实践学时,用于体现课程信息
float credit; //表示公共课的学分,用于体现课程信息
string term; //表示公共课开设在哪个学期,用于体现课程信息
string day; //表示公共课开设在星期几,用于体现课程信息
string teacher; //表示课程的老师是谁,用于学生选课时候得知该门 课程的授课老师的信息
接口
void data_show()
virtual void search_credit(float n);
virtual void search_nature();
virtual void search_hours(int h);
string get_teacher(){return teacher;}
ostream & operator<<(ostream &output,Public_course_ZR &a)
istream & operator>>(istream &input,Public_course_ZR &a)
属性介绍
int course_num; //表示必修课的编号,用于体现课程信息
string course_name; //表示必修课的名称,用于体现课程信息
string course_nature; //表示必修课,用于体现课程信息
int all_hours; //表示必修课的总学时,用于体现课程信息
int teach_hours; //表示必修课的授课学时,用于体现课程信息
int practice_hours; //表示必修课的实践学时,用于体现课程信息
float credit; //表示必修课的学分,用于体现课程信息
string term; //表示必修课开设在哪个学期,用于体现课程信息
string day; //表示必修课开设在星期几,用于体现课程信息
string teacher; //表示课程的老师是谁,用于学生选课时候得知该门课程的授课老师的信息
接口
void data_show()
virtual void search_credit(float n);
virtual void search_nature();
virtual void search_hours(int h);
string get_teacher(){return teacher;}
ostream & operator<<(ostream &output,Required_course_ZR &a)
istream & operator>>(istream &input,Required_course_ZR &a)
属性介绍
int course_num; //表示选修课的编号,用于体现课程信息
string course_name; //表示选修课的名称,用于体现课程信息
string course_nature; //表示选修课,用于体现课程信息
int all_hours; //表示选修课的总学时,用于体现课程信息
int teach_hours; //表示选修课的授课学时,用于体现课程信息
int practice_hours; //表示选修课的实践学时,用于体现课程信息
float credit; //表示必修课的学分,用于体现课程信息
string term; //表示选修课开设在哪个学期,用于体现课程信息
string day; //表示选修课开设在星期几,用于体现课程信息
string teacher; //表示课程的老师是谁,用于学生选课时候得知该门课程的授课老师的信息
接口
void data_show()
virtual void search_credit(float n);
virtual void search_nature();
virtual void search_hours(int h);
string get_teacher(){return teacher;}
ostream & operator<<(ostream & output,ElctiveCourse_HWN &EC )
istream & operator>>(istream &input,ElctiveCourse_HWN &a)
属性介绍
Public_course_ZR Pu[5]; //表示一个公共课对象数组,用于存储学生的对公共课的相关操作(选课,查看或者退课)
Required_course_ZR Re[5]; //表示一个必修课对象数组,用于存储学生对必修课的相关操作选课,查看或者退课)
ElctiveCourse_HWN El[5]; //表示一个选修课对象数组,用于存储学生的对公共课的相关操作(选课,查看或者退课)
int num; //表示该学生的学号,用于表现学生的信息
string Class; //表示该学生的班级,用于表现学生的信息
string name; //表示该学生的名字,用于表现学生的信息
int personal_num; //表示学生的个人学号,用于登录时候与输入的学号进行比对
int personal_password; //表示学生的密码,用于登录时候与输入的密码进行比对
接口
void Student_HWN::delete_Publiccourse(int a)
void Student_HWN::delete_Requiredcourse(int a)
void Student_HWN::delete_Elctivecourse(int a)
int get_num(){return num;}
string get_Class(){return Class;}
string get_name(){return name;}
int get_personal_num(){return personal_num;}
int get_personal_password(){return personal_password;}
ostream & operator<<(ostream &output,Student_HWN &a)
istream & operator>>(istream &input,Student_HWN &a)
测试学号:160708283
测试密码:123456
进入大学英语界面后进行浏览
在进行退选时候,应该再次让用户考虑一下是否真的进行退选,然后再进行退选。
当输入编号不存在的情况时,并没有很好的解决问题
选择的课程编号不存在:
最后没出现“没有该门课程,请重新选择”的语句报错,而是直接加了第一门课程编号。
输入编号为 201751
这次作为第二次的课程设计学习,收获还是很大的,很明显感觉到自己在写代码方面的进步,无论是写起来更加顺手了还是在思考上逻辑更加通畅了,这些进步都是能够鼓励我更加认真去完成项目的动力。这次的活动也算是让我有点感受到了“熟能生巧”的含义。但是这次的突破并不是很明显,在程序的内容上有些进步但是外观以及操作上还是没有什么提高。也许是和熟悉的伙伴合作的原因,这次做起项目来需要磨合的也少,所以工作效率比较高,项目进展也算比较顺利的,没有遇到什么很大的问题。很有意义的一次活动,也提升了我们彼此之间的默契。
keyboard_arrow_left上一篇 : 基于Jsp和SQL Server 2008实现的工资管理信息系统 基于python实现的udp可靠文件传输 : 下一篇keyboard_arrow_right