📄 宿舍管理查询软件.cpp
字号:
#include <iostream>
#include <string>
using namespace std;
#define MAXSIZE 100 //设记录不超过20个
typedef struct //定义每个记录(数据元素)的结构
{
int num; // 学号
string name;//姓名
int room;//房间号
}RecordType;
typedef struct //定义顺序表的结构
{
RecordType r[ MAXSIZE +1 ]; //存储顺序表的向量
int length ; //顺序表的长度
}SqList;
void ciadan(SqList &ST);
void CreatList(SqList &ST)//创建学生的相关信息
{
cout<<"输入学生个数"<<endl;
cin>>ST.length;
for(int i=0;i<ST.length;i++)
{
cout<<"输入第"<<i+1<<"学生的信息"<<endl<<endl;
cout<<"学号"<<endl;
cin>>ST.r[i].num;
cout<<"姓名"<<endl;
cin>>ST.r[i].name;
cout<<"房间号"<<endl;
cin>>ST.r[i].room;
}
cout<<"输入完毕"<<endl;
}
void printf(SqList &ST) //打印
{
cout<<" 学生的信息如下"<<endl<<endl;
cout<<"姓名 学号 房间号 "<<endl;
for(int i=0;i<ST.length;i++)
{
cout<<ST.r[i].name<<" "<<ST.r[i].num<<" "<<ST.r[i].room<<endl;
}
}
void Add(SqList &ST) //增加信息
{
int n;
cout<<"输入要插入的几个人信息:"<<endl;
cin>>n;
for(int i=ST.length;i<ST.length+n;i++)
{
cout<<"输入第"<<i+1<<"学生的信息"<<endl<<endl;
cout<<"学号"<<endl;
cin>>ST.r[i].num;
cout<<"姓名"<<endl;
cin>>ST.r[i].name;
cout<<"房间号"<<endl;
cin>>ST.r[i].room;
}
ST.length=ST.length+n;
printf(ST);
}
void Delete(SqList &ST)//删除信息
{
int n;
cout<<"输入要删除的学号"<<endl;
cin>>n;
for(int i=0;i<ST.length;i++) /*数据库记录前移,完成'删除'操作*/
{
if(n==ST.r[i].num)
{
for(int j=i;j<=ST.length;j++)
{
ST.r[j].num = ST.r[j+1].num;
ST.r[j].name=ST.r[j+1].name;
ST.r[j].room=ST.r[j+1].room;
}
}
}
ST.length--;
cout<<"删除完毕"<<endl;
printf(ST);
}
void change(SqList &ST)//修改信息
{
int n;
int m;
cout<<"输入要修改的学号"<<endl;
cin>>n;
cout<<"修改修改房间号为:"<<'\t';
cin>>m;
cout<<endl;
for(int i=0;i<ST.length;i++)
{
if(n==ST.r[i].num)
{
ST.r[i].room=m;
}
}
cout<<endl;
printf(ST);
}
void sort(SqList &ST) // 排序
{
l1: cout<<"(1)按学号排序"<<endl;
cout<<"(2)按房间号排序"<<endl;
cout<<"(3)按姓名号排序"<<endl;
cout<<"(4)退出本模块"<<endl;
cout<<"请输入要进入的模块"<<endl;
int m;
cin>>m;
if(m==1) //按学号排序,用插入排序。
{
cout<<"按学号排序"<<endl;
RecordType LI; //定义存储学号向量
for(int i=1;i<ST.length;i++)
for(int j=i;j>=1;j--)
if(ST.r[j].num<ST.r[j-1].num)
{
LI=ST.r[j];
ST.r[j]=ST.r[j-1];
ST.r[j-1]=LI;
}
printf(ST);
cout<<"排序完毕"<<endl;
goto l1;
}
if(m==2) //按房间号排序,用选择排序
{
cout<<"按学号排序"<<endl;
RecordType LI;
for(int i=0; i<ST.length;i++)
for (int j=i+1;j<ST.length;j++)
{
if(ST.r[i].room>ST.r[j].room)
{
LI=ST.r[j];
ST.r[j]=ST.r[i];
ST.r[i]=LI;
}
}
printf(ST);
cout<<"排序完毕"<<endl;
goto l1;
}
if(m==3) //按姓名号排序,用选择排序
{
cout<<"按房号排序"<<endl;
RecordType LI;
for(int i=0; i<ST.length;i++)
for (int j=i+1;j<ST.length;j++)
{
if(ST.r[i].name>ST.r[j].name)
{
LI=ST.r[j];
ST.r[j]=ST.r[i];
ST.r[i]=LI;
}
}
printf(ST);
cout<<"排序完毕"<<endl;
goto l1;
}
if(m==4)
{
ciadan(ST);
}
}
void Search(SqList &ST) //查询信息
{
l1: cout<<"(1)根据学号查找"<<endl;
cout<<"(2)根据姓名查找"<<endl;
cout<<"(3)根据房间号查找"<<endl;
cout<<"(4)退出本模块"<<endl;
int m;
cin>>m;
if(m==1)
{
int n;
int low,high,mid;
cout<<"输入要查找的学号"<<endl;
cin>>n;
/* for(int i=0;i<ST.length;i++)
{
if(n==ST.r[i].num)
{
cout<<"查找的信息为:"<<endl;
cout<<ST.r[i].name<<'\t'<<ST.r[i].num<<'\t'<<ST.r[i].room<<endl;// 找到待查元素
break;
}
}*/
low=0;high=ST.length-1; // 置区间初值
while (low<=high)
{
mid=(low+high)/2;
if(n==ST.r[mid].num)
{
cout<<"查找的信息为:"<<endl;
cout<<ST.r[mid].num<<'\t'<<ST.r[mid].name<<'\t'<<ST.r[mid].room<<endl;// 找到待查元素
goto l1;
}
else if(n<ST.r[mid].room )
high=mid-1; // 继续在前半区间进行查找
else
low=mid+1; // 继续在后半区间进行查找
}
goto l1;
}
if(m==2)
{
string name;
cout<<"输入要查找的姓名"<<endl;
cin>>name;
int low,high,mid;
low=1;high=ST.length; // 置区间初值
while (low<=high)
{
mid=(low+high)/2;
if(name==ST.r[mid].name) // EQ ( (key, ST.elem[mid].key ))
{
cout<<"查找的信息为:"<<endl;
cout<<ST.r[mid].num<<'\t'<<ST.r[mid].name<<'\t'<<ST.r[mid].room;// 找到待查元素
break;
}
else if(m<ST.r[mid].room )
high=mid-1; // 继续在前半区间进行查找
else
low=mid+1; // 继续在后半区间进行查找
}
goto l1;
}
if(m==3)
{
int m;
int low,high,mid;
cout<<"输入要查找的房间号"<<endl;
cin>>m;
low=1;high=ST.length; // 置区间初值
while (low<=high)
{
mid=(low+high)/2;
if(m==ST.r[mid].room) // EQ ( (key, ST.elem[mid].key ))
{
cout<<ST.r[mid].num<<'\t'<<ST.r[mid].name<<'\t'<<ST.r[mid].room;// 找到待查元素
break;
}
else if(m<ST.r[mid].room )
high=mid-1; // 继续在前半区间进行查找
else
low=mid+1; // 继续在后半区间进行查找
}
goto l1;
}
if(m==4)
{
ciadan(ST);
}
}
void ciadan(SqList &ST)
{
l2: cout<<" (1)输入信息"<<endl;
cout<<" (2)增加信息"<<endl;
cout<<" (3)删除信息"<<endl;
cout<<" (4)修改信息"<<endl;
cout<<" (5)排序信息"<<endl;
cout<<" (6)查找信息"<<endl;
cout<<" (7)退出系统"<<endl;
int a;
cin>>a;
if(a==1)
{CreatList(ST);printf(ST);goto l2;}
if(a==2)
{Add(ST);goto l2;}
if(a==3)
{Delete(ST);goto l2;}
if(a==4)
{change(ST);goto l2;}
if(a==5)
{sort(ST);goto l2;}
if(a==6)
{Search(ST);goto l2;}
if(a=7)
{exit(0);}
}
void main()
{
SqList ST;
cout<<"###################欢迎使用宿舍管理查询软件######################"<<endl<<endl;
cout<<endl;
ciadan(ST);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -