# 学生信息管理系统
## 一、 简介
学生信息管理系统(SIMS:Student information management system)用于学生信息的管理,要求完成的主要的功能包括学生信息分输入,按学生的不同信息排序整理,根据学号修改学生信息,根据学号删除学生信息,查询学生信息,按照学院等分项统计学生人数等工作。要求使用学习过的 C/C++ 程序设计的知识完成学生信息管理系统的设计与实现。
## 二、 运行环境
学生信息管理系统在 Visual Studio code 平台下开发,操作系统:macOS 10.14.6。
硬件环境:
处理器:Intel(R) Core(TM) i5 CPU @ 1.40GHz
内存:8.00GB
系统类型:64 位操作系统
## 三、 实验课题分析
### 3.1 学生信息管理系统的主要功能
学生信息管理系统(SIMS)主要功能为:学生信息分输入,按学生的不同信息排序整理,根据学号修改学生信息,根据学号删除学生信息,查询学生信息,按照学院等分项统计学生人数等工作。详细的系统功能结构为图 1 所示。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/a8f4a5fb46466253cde706236aeca436.writebug)
图 1 系统结构图
系统各模块的功能具体描述为:
1、输入功能
选择输入学生信息功能,首先选择输入学生人数,在相继输入学生的名字,性别,学号,学院,系,班级,寝室,籍贯,联系电话。
2、排序功能
将文件里的学生信息读入链表中,然后按照学号,学院,宿舍从小到达排序。
3、修改功能
输入学生的学号,可以根据学生的学号来修改其名字,性别,学号,学院,系,班级,寝室,籍贯,联系电话信息。
4、删除功能
输入学生学号,删除此学号学生的信息。
5、查询功能
输入学号、姓名,学院,系,班级,宿舍等分项,查找学生的信息。
输入学院,系,班级,籍贯统计此项下学生的人数。
### 3.2 系统分析及设计
系统涉及对象有两个类:学生类和链表类,学生类包含 9 个私有数据分别为名字,性别,学号,学院,系,班级,寝室,籍贯,联系电话,以及包含一个 next 的指针。以及一些成员函数。
链表类有一个头节点和尾节点,每个节点存放一个学生信息,以及一个指向学生的指针,链表的主要结构如下,通过链表将整个文件中的学生信息串联起来,在执行各个功能时能遍历链表查找信息。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/bcfee6c72be2cd68c9a0df614d08fe7b.writebug)
图 2 链表的结构图
用文本文件进行数据的保存,需要保存的数据主要包括实现所有的文本操作相关的功能。
### 3.3 系统的实现
(1)类的编写
系统工程名为:SIMS。包含了 student 类(所有学生类),list 类(链表类)list 类中包含着两个 student 的指针,first 和 last 分别指向文件中的第一个学生和最后一个学生,在学生类中包含着一个 next 指针,用来指向下一个学生的地址,通过这种方法把学生的信息串联起来,实现相应的功能只需要遍历链表即可。
具体类结构声明如下:
```c#
class student{
private:
string name;//姓名
string sex;//性别
int num;//学号
string xueyuan;//学院
string xi;//系
int cla;//班级
int dor;//寝室
string jiguan;//籍贯
int phone;//联系电话
public:
student *next;
student(string a1,string b1,int c1,string d1,string e1,int f1,int g1,string h1,int i1);
student(student &a);//复制构造函数
~student(); //析构函数
string getname()const;
void setname(string &a);//姓名的得到和修改
string getsex()const;
void setsex(string &a);//性别的得到和修改
int getnum()const;
void setnum(int &a);//学号的得到和修改
string getxueyuan()const;
void setxueyuan(string &a);//学院的得到和修改
string getxi()const;
void setxi(string &a);//系的得到和修改
int getcla()const;
void setcla(int &a);//班级的得到和修改
int getdor()const;
void setdor(int &a);//寝室的得到和修改
string getjiguan()const;
void setjiguan(string &a);//籍贯的得到和修改
int getphone()const;
void setphone(int &a);//联系电话的得到和修改
void display();//显示学生信息
void displaytofile1();
void displaytofile2();//将学生信息同步到文件中
};
# endif
```
(2)链表的使用
系统实现采用文件的输入输出流对文本数据进行读取与写入,但是由于学生信息是一个数据的集合,于是对数据的存储组织使用了单向链表。
因为学生信息管理系统在输入,排序、修改、删除、查询的时候都需要处理大量的数据,所以使用链表十分必要。将链表把所有学生串联起来,具体的结构声明如下:
```c#
class list{
student *first,*last;
int listsize;
public:
list():first(0),last(0),listsize(0){}
void add(student &a);//将一个学生类加入链表
void sortbynum();//根据学号排序
void sortbyxueyuan();//根据学院排序
void sortbydor();//根据寝室排序
void changebynum1(int num,int choose,int change);//根据学号修改信息int型
void changebynum2(int num,int choose,string change);//根据学号修改信息string型
void deletebynum(int num);//根据学号删除信息
void findbynum1(int num);//根据学号查询学生信息
void findbynum2(int num,int k);
void findbyxueyuan(string xueyuan);//根据学院查询学生信息
void findbyxueyuan2(string xueyuan,int k);
void findbyname(string xingming);根据姓名查询学生信息
void findbyxi(string xi);//根据系查询学生信息
void findbybanji(int banji);根据班级查询学生信息
void findbysushe(int sushe);//根据宿舍查询学生信息
void findbysushe2(int sushe,int k);
void statisticbyxueyuan(string xueyuan1);//统计学院人数
void statisticbyxi(string xi1);//统计系人数
void statisticbybanji(int cla1);//统计班级人数
void statisticbyjiguan(string jiguan1);//统计籍贯人数
void listdisplay();//链表打印
void listtofile();//链表打印到文件
};
```
在运用时,令当前学生的 next 结点指向新的学生结点,即结点的指针 next 保存新的学生结点的地址(如下图 3 所示),以此类推,所有学生信息就通过链表的形式串联起来了。
![](https://www.writebug.com/myres/static/uploads/2021/10/26/df60a0b9a87cb99d3255b20822cc67d0.writebug)
```
图3 学生链表的建立
```
学生信息管理系统的信息的管理就具体表现为链表的操作。学生信息的查找、修改、添加和删除与链表的查找、修改、添加、删除对应。
学生信息的输入:
在学生信息的输入,首先会出现输入几个学生,然后输入各个学生的信息见图 4:
![](https://www.writebug.com/myres/static/uploads/2021/10/26/e76255007757d158207512617055b288.writebug)
```
图4 学生信息输入界面
```
```c#
cin>>a>>b>>c>>d>>e>>f>>g>>h>>i;
student stu(a,b,c,d,e,f,g,h,i);
m.add(stu);
```
以上代码将新输入的学生加入到链表的结尾
```c
ofstream outfile;
outfile.open("学生信息.txt",ios::app);
outfile<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<" "<<h<<" "<<i<<endl;
outfile.close();
```
通过以上代码把新输入的学生加入到文本文件里的末尾。
排序功能
排序共分成三部分为按学号,学院,宿舍排序界面为
![](https://www.writebug.com/myres/static/uploads/2021/10/26/539341f91d15cf74b4b69bebe8555fcf.writebug)
通过 m.sortbynum();实现功能,具体代码为:
```c
void list::sortbynum()//排序
{
int a[1000];
student *stu=first;
for(int i=0;i<listsize;i++)
{
a[i]=stu->getnum();
stu=stu->next;
}
sort(a,a+listsize);
for(int i=0;i<listsize;i++)
{
findbynum2(a[i],i);
}
}
```
首先定义一个数组来装学生的学号,运用库函数 sort 进行从小到大排序,然后在遍历链�
没有合适的资源?快使用搜索试试~ 我知道了~
学生信息管理系统学生信息的增删改查.zip
共13个文件
cpp:4个
h:2个
md:1个
3 下载量 185 浏览量
2023-01-21
14:55:39
上传
评论
收藏 535KB ZIP 举报
温馨提示
学生信息管理系统(SIMS:Student information management system)用于学生信息的管理,要求完成的主要的功能包括学生信息分输入,按学生的不同信息排序整理,根据学号修改学生信息,根据学号删除学生信息,查询学生信息,按照学院等分项统计学生人数等工作。要求使用学习过的 C/C++ 程序设计的知识完成学生信息管理系统的设计与实现。 二、 运行环境 学生信息管理系统在 Visual Studio code 平台下开发,操作系统:macOS 10.14.6。 硬件环境: 处理器:Intel(R) Core(TM) i5 CPU @ 1.40GHz 内存:8.00GB 系统类型:64 位操作系统
资源推荐
资源详情
资源评论
收起资源包目录
学生信息管理系统学生信息的增删改查.zip (13个子文件)
stuinfo
LICENSE 1KB
README.md 19KB
大一下cpp课设
.vscode
settings.json 88B
201906062230+计智1901+张宇健
list.h 1KB
1.cpp 171B
学生信息.txt 376B
C++程序设计课程设计-课程设计报告.doc 619KB
1 50KB
学生信息管理系统 133KB
学生信息管理系统.cpp 11KB
list.cpp 6KB
student.h 1KB
student.cpp 2KB
共 13 条
- 1
资源评论
计算机毕设论文
- 粉丝: 1w+
- 资源: 394
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 1055892_1_Level! 但它是一首歌 (重置版) B大调高难度还原_首调简谱.pdf
- 1075516_1_Level!重置版(改编自Qlimtzsinxdz)_首调简谱.pdf
- Nginx安装.docx
- 网络路由技术:华为设备上配置直连路由
- 【java毕业设计】交通事故档案管理系统源码(ssm+mysql+说明文档+LW).zip
- 【java毕业设计】健康管理系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】见福便利店信息管理系统源码(ssm+mysql+说明文档+LW).zip
- 信息打点技术在APP与小程序中的应用探索及实例演示
- 大学生职业生涯规划策划书.pdf
- 【java毕业设计】机房预约系统源码(ssm+mysql+说明文档+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功