> # ♻️ 资源
> **大小:** 1.49MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010900**](https://www.yuque.com/sxbn/ks/100010900)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87484813**](https://download.csdn.net/download/s1t16/87484813)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 学校开课查询系统
## 一、 大型实验的内容
学校开课查询系统用于进行学校开课信息的查询以及学生的选课操作,要求完成的主要的功能包括学生管理、课程管理、管理人员管理。
1、设计菜单实现功能选择;
2、能够对课程信息进行输入、修改、删除操作;
3、按给定的条件(编号、名称、任课教师、开课院系等)查询课程信息;
4、能对开课信息按学分、开课学院排序整理;
5、以文件形式保存相关信息,可以读取默认文件中的信息进行查询等操作。
我在此之上添加了学生的退选课操作
## 二、 运行环境
学校开课查询系统在 codeblocks17.12 平台下开发,操作系统:Windows 10。
硬件环境:(备注:可以查看“计算机”属性)
处理器:Intel(R) Core(TM) i7-2557M CPU @ 1.70GHz 1.70GHz
内存:4.00GB
系统类型:64 位操作系统
## 三、 实验课题分析(主要的模块功能、流程图)
### 3.1 学校开课查询的主要功能
学校开课查询主要功能为:学生管理、课程管理、管理人员管理,可以完成查询开课信息,对开课信息进行排序,学生,管理人员登陆,修改学生,课程信息,学生退,选课等操作
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716857005901-4d122afc-04cd-41d6-bbf1-f664372d1d65.png#averageHue=%23f6f6f6&from=url&id=VDvao&originHeight=378&originWidth=552&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
系统各模块的功能具体描述为:
1、 查询开课信息模块
这部分可以对开课信息进行查询与排序之后输出的操作,但无法对课程进行修改
2、 读者模块
读者必须先进行登录,登录失败之后,无法进行操作,登录成功之后可以查询课程信息,并按编号进行选课,如果已经选了,可以进行退选,并且可以展示个人信息,修改密码
3、 管理员模块
必须先登录,登录失败则退回上一层
登录成功
管理员模块可以对课程信息进行修改,删除,添加操作,也可以对学生信息进行修改添加,删除操作
### 3.2 系统分析及设计
系统涉及对象有两个基本类:课程类和学生类主要涉及操作如下所示
表1 人员类涉及的操作
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716857005965-d5acbb81-0bb1-4f92-93c7-258f37010d90.png#averageHue=%23e7e7e7&from=url&id=iQ1bC&originHeight=334&originWidth=628&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
可以采用面向对象的方式实现图书管理系统,根据不同的使用权限,使用对象分为学生、管理员与一般访客。系统的主要的类结构如图 2 所示。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716857006076-6ca20ec6-ed16-4fb7-a4f1-5c82ebe3dc64.png#averageHue=%23ebebeb&from=url&id=vYC9o&originHeight=121&originWidth=649&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
图 2 系统主要类结构图
分别设计学生类、管理员类,学生链表类,课程链表类,管理员类
用文本文件进行数据的保存,需要保存的数据主要包括图书数据、用户数据(包括读者、、管理员),实现所有的文本操作相关的功能。
### 3.3 系统的实现
(1)类的编写
系统工程名为:学生开课管理系统。包含了 student 类,course 类,manager 类三个基本类以及相对应的链表类 stulist 类(学生链表类)及 courlist(课程链表类)。而这些人用户都有相应的用户编号和密码,运用时将三个基本类中的用户名和用户密码分别与编号和密码(password)对应。
具体类结构声明如下:
student类:
```
# ifndef STUDENT_H
# define STUDENT_H
# include<string>
using namespace std;
class student
{
public:
student(string,string,int,int,string,int,int * );
student(string,string,int,int,string);
virtua~student();
void display();//展示个人信息
void add(int temp);//将课程编号编入subject末尾
student(const student &stu1);
student *next;
string getid();//得到学号
string getname();
int getage();
int getey();
string getpassword();
int getcounting();
void changepassword();//修改密码
void choosecourse(int no);//选课或取消已选的课
int existcourse(int no);
void cover(int no);//从no后开始一个一个往前移
int *subject;//存放学生所选课程的学生编号
void setdata(string id,string na,int a,int ey,string pa);
protected:
string studentid;//学号
string name;
int age;
int enrollyear;//入学年份
string password;//密码
int counting;//已选课科目数量
};
# endif // STUDENT_H
```
course类
```
class course
{
public:
course *next;//
course(int,string,string,double,string,string,int ,int );
virtua~course();
void display();
void shift(string nm,string tnm,double s,string na,string fa);
course & operator =(course &c);
int getnumber();
string getname();
string getteacher();
double getscore();
string getnature();
string getfaculty();
int getcur();
int getmaxp();
protected:
int number;//课程编号
string name;
string teachername;//任课教师
double score;//学分
string nature;//课程性质
string faculty;//开课院系
int currentperson;//已选该课的人数
int maxperson;//该科可选的最大人数
};…….//罗列所有类的声明
```
manager 类:
```
class manager
{
public:
manager(string ,string);
virtua~manager();
boologin();
void shiftpass();
protected:
string account;
string password;
};
```
(2)链表的使用
系统实现采用文件的输入输出流对文本数据进行读取与写入,但是由于学生信息、课程信息、都是一个数据的集合,于是对数据的存储组织使用了单向链表。
因为图书管理系统在登录、查找、修改、添加的时候都需要处理大量的数据,所以使用链表十分必要。以课程信息为例,在 course 的基础上定义一个对应的 courlistt 类来管理 kecheng 数据,具体的结构声明如下:
```
class courlist
{
public:
courlist();
virtua~courlist();
void add(course &cou);//向末尾插入
course *findnumber(int no);//按编号查找
void findname(string n);//按名字查找
void findfaculty(string f);//按院系查找
void findteacher(string t);//按教师名字查找
void ultimatefind();//集合所有查找
void show();//展示所有课程信息
void write();//写入文件
void sortscore();//按学分排序
void sortfaculty();//按开课学院排序
void ultimatesort(
神仙别闹
- 粉丝: 4238
- 资源: 7516
最新资源
- 【岗位说明】人事劳资岗位职责.doc
- 【岗位说明】人事经理岗位职责.doc
- 【岗位说明】市场部校园助理职责.doc
- 【岗位说明】人事专员岗位职责.doc
- 【岗位说明】设备部长岗位职责.doc
- 【岗位说明】生管部主管岗位说明书.doc
- 【岗位说明】市场人员岗位职责.doc
- 【岗位说明】项目经理.doc
- 【岗位说明】薪酬分析师职位说明书.doc
- 【岗位说明】职能部门工作职责.doc
- 【岗位说明】职能部门主要职责.doc
- 【岗位说明】职务分析样本销售业务类.doc
- 【岗位说明】综合管理部工作职责.doc
- 【岗位说明】资本经营部经理职位说明书.doc
- 【岗位说明】综合部岗位职责.doc
- 【岗位说明】总裁职位说明书.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页