宿舍信息管理系统
2016-06-23 15:33
274 查看
随便写的,没有数据结构算法的核心,是函数的拼凑。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<windows.h>
using namespace std;
#define MAX 100
int Total;
int domes[MAX][MAX];
struct edg{ //构造结构体,创建学生信息的结构体数组,其中的信息包含名字,宿舍房号以及学号 。
string name;
int domenumber;
int number;
}student[MAX];
void menu() //主菜单的函数包含3个功能(新建,排序,查询)。
{
cout<<"\t\t *** "<<endl;
cout<<"\t\t ** ** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** 欢迎进入宿舍管理系统 ***"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<"\t\t * 制作人:计算机1503 谢俊宏 *"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<"\t\t * 1. 新建宿舍名单 *"<<endl;
cout<<"\t\t * 2. 排序宿舍信息 *"<<endl;
cout<<"\t\t * 3. 查询宿舍信息 *"<<endl;
cout<<"\t\t * 4. 删除宿舍信息 *"<<endl;
cout<<"\t\t * 0. 退出系统 *"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<endl<<endl;
cout<<"请输入你想要进行操作的代号:";
}
void build() //新建学生信息
{
int i;
string a;
int c,b;
system("cls");
cout<<"请输入要录入的人数:"<<endl; //录入的人数为Total
cin>>Total;
cout<<"请分别输入他们的信息:"<<endl;
for(i=1;i<=Total;i++) //为每个同学输入信息
{
cout<<"输入第"<<i<<"个学生的姓名:" ;
cin>>a;
student[i].name=a;
cout<<"输入第"<<i<<"个学生的学号:" ;
cin>>b;
student[i].number=b;
cout<<"输入第"<<i<<"个学生的宿舍号:" ;
cin>>c;
student[i].domenumber=c;
cout<<endl;
}
return ;
}
int binarynum(int left,int right,int key) // 用递归二分的方法求出学号在结构体数组中的位置
{
if(left>right) return -1;
int mid=(left+right)<<1; //使用位运算<<1 让计算更有效率
if(student[mid].number==key) return mid;
else if(student[mid].number<key) return binarynum(mid+1,right,key);
else return binarynum(left,mid,key);
}
void paixumenu() //排序函数
{
string choice;
int i,m,j;
system("cls");
cout<<"请输入排序的方式(1:按学号排序,2:按房号排序,3:按名字排序):"<<endl; //三个排序方法
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //进行以学号为关键字的排序
{
for(i=1;i<=Total;i++) //用冒泡排序法进行排序
for(j=1;j<Total-i+1; j++)
if(student[j].number>=student[j+1].number)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
if(choice[0]=='2') //以按宿舍号的关键字进行排序
{
for(i=1;i<=Total;i++) //用冒泡排序法进行排序
for(j=1;j<Total-i+1; j++)
if(student[j].domenumber>=student[j+1].domenumber)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
if(choice[0]=='3') //以按学生姓名的关键字进行排序
{
for(i=1;i<=Total;i++)
for(j=1;j<Total-i+1; j++) //用冒泡排序法进行排序
if(strcmp(student[j].name.c_str(),student[j+1].name.c_str())>=0)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
return ;
}
void query() //查询函数
{
string choice;
int m,i,j;
string a,choice1;
string b,c;
system("cls");
cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; //三个关键字进行查找
while(1)
{
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //以 名字为关键字进行查询
{
cout<<"输入你想要查找学生的名字:";
cin>>a;
for(i=1;i<=Total;i++)
{
if(strcmp(student[i].name.c_str(),a.c_str())==0) //使用strcmp及.c_str进行比较
break;
}
if(i!=Total+1)
{
cout<<"目标学生的学号为:"<<student[i].number<<" 宿舍号为"<<student[i].domenumber<<endl;
cout<<"是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
else break;
}
else
{cout<<"你想要查找的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
}
if(choice[0]=='2') //以按照学号的关键字进行查询
{
cout<<"输入你想要查找学生的学号:";
cin>>b;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=b.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)b[j]-48)*k;
k*=10;
}
if(binarynum(1,Total,sss)!=-1)
4000
//使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
{
cout<<"目标学生姓名为:"<<student[binarynum(1,Total,sss)].name
<<"学号为:"<<student[binarynum(1,Total,sss)].number<<" 宿舍号为"<<student[binarynum(1,Total,sss)].domenumber<<endl<<endl;
cout<<"是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
else
{cout<<"你想要查找的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
}
int flag=0;
if(choice[0]=='3') //以按 宿舍号为关键字进行查找
{
cout<<"输入你要查询的宿舍号:";
cin>>c;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=c.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)c[j]-48)*k;
k*=10;
}
for(i=1;i<=Total;i++)
{
if(sss==student[i].domenumber&&flag==1)
{
cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
}
if(sss==student[i].domenumber&&flag==0)
{
flag=1;
cout<<"姓名\t学号\t房号"<<endl;
cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
}
cout<<endl;
cout<<"是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
if(flag==0)
{
cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
else break;
}
}
}
return ;
}
void Delete() //删除函数
{
string choice;
int m,i,j;
string a,choice1;
string b,c;
system("cls");
cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; //三个关键字进行删除
while(1)
{
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //以名字为关键字进行查询 并删除
{
cout<<"输入你想要删除学生的名字:";
cin>>a;
for(i=1;i<=Total;i++)
{
if(strcmp(student[i].name.c_str(),a.c_str())==0) //使用strcmp及.c_str进行比较
break;
}
if(i!=Total+1)
{
for(j=i;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
cout<<"删除成功"<<endl<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
else break;
}
else
{cout<<"你想要删除的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
}
if(choice[0]=='2') //以按照学号的关键字进行删除
{
cout<<"输入你想要删除学生的学号:";
cin>>b;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=b.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)b[j]-48)*k;
k*=10;
}
if(binarynum(1,Total,sss)!=-1) //使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
{
int ii= binarynum(1,Total,sss);
for(j=ii;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
cout<<"删除成功"<<endl<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
else
{cout<<"你想要删除的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
}
int flag=0;
if(choice[0]=='3') //以按 宿舍号为关键字进行删除
{
cout<<"输入你要删除的宿舍号:";
cin>>c;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=c.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)c[j]-48)*k;
k*=10;
}
for(i=1;i<=Total;i++)
{
if(sss==student[i].domenumber&&flag==0)
{
flag=1;
for(j=i;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
}
}
cout<<"删除成功!"<<endl;
cout<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
if(flag==0)
{
cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此删除操作(继续为y,不继续进行操作为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
else break;
}
}
}
return ;
}
int main()
{
menu();
int j,k,n,m;
memset(domes,0,sizeof(domes));
string choice,i;
while(1)
{
while(1)
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'4'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1')
{
build();
cout<<"新建完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='2')
{
paixumenu();
cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='3')
{
query();
cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='4')
{
Delete();
cout<<"删除完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='0') break;
}
cout<<"退出系统"<<endl;
system("pause");
return 0;
}
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<windows.h>
using namespace std;
#define MAX 100
int Total;
int domes[MAX][MAX];
struct edg{ //构造结构体,创建学生信息的结构体数组,其中的信息包含名字,宿舍房号以及学号 。
string name;
int domenumber;
int number;
}student[MAX];
void menu() //主菜单的函数包含3个功能(新建,排序,查询)。
{
cout<<"\t\t *** "<<endl;
cout<<"\t\t ** ** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** *** "<<endl;
cout<<"\t\t *** 欢迎进入宿舍管理系统 ***"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<"\t\t * 制作人:计算机1503 谢俊宏 *"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<"\t\t * 1. 新建宿舍名单 *"<<endl;
cout<<"\t\t * 2. 排序宿舍信息 *"<<endl;
cout<<"\t\t * 3. 查询宿舍信息 *"<<endl;
cout<<"\t\t * 4. 删除宿舍信息 *"<<endl;
cout<<"\t\t * 0. 退出系统 *"<<endl;
cout<<"\t\t **************************************"<<endl;
cout<<endl<<endl;
cout<<"请输入你想要进行操作的代号:";
}
void build() //新建学生信息
{
int i;
string a;
int c,b;
system("cls");
cout<<"请输入要录入的人数:"<<endl; //录入的人数为Total
cin>>Total;
cout<<"请分别输入他们的信息:"<<endl;
for(i=1;i<=Total;i++) //为每个同学输入信息
{
cout<<"输入第"<<i<<"个学生的姓名:" ;
cin>>a;
student[i].name=a;
cout<<"输入第"<<i<<"个学生的学号:" ;
cin>>b;
student[i].number=b;
cout<<"输入第"<<i<<"个学生的宿舍号:" ;
cin>>c;
student[i].domenumber=c;
cout<<endl;
}
return ;
}
int binarynum(int left,int right,int key) // 用递归二分的方法求出学号在结构体数组中的位置
{
if(left>right) return -1;
int mid=(left+right)<<1; //使用位运算<<1 让计算更有效率
if(student[mid].number==key) return mid;
else if(student[mid].number<key) return binarynum(mid+1,right,key);
else return binarynum(left,mid,key);
}
void paixumenu() //排序函数
{
string choice;
int i,m,j;
system("cls");
cout<<"请输入排序的方式(1:按学号排序,2:按房号排序,3:按名字排序):"<<endl; //三个排序方法
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //进行以学号为关键字的排序
{
for(i=1;i<=Total;i++) //用冒泡排序法进行排序
for(j=1;j<Total-i+1; j++)
if(student[j].number>=student[j+1].number)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
if(choice[0]=='2') //以按宿舍号的关键字进行排序
{
for(i=1;i<=Total;i++) //用冒泡排序法进行排序
for(j=1;j<Total-i+1; j++)
if(student[j].domenumber>=student[j+1].domenumber)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
if(choice[0]=='3') //以按学生姓名的关键字进行排序
{
for(i=1;i<=Total;i++)
for(j=1;j<Total-i+1; j++) //用冒泡排序法进行排序
if(strcmp(student[j].name.c_str(),student[j+1].name.c_str())>=0)
{
edg temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
cout<<"姓名\t\t学号\t\t宿舍号"<<endl;
for(i=1;i<=Total;i++)
{
cout<<student[i].name<<"\t\t"<<student[i].number<<"\t\t"<<student[i].domenumber<<endl;
}
cout<<endl;
}
return ;
}
void query() //查询函数
{
string choice;
int m,i,j;
string a,choice1;
string b,c;
system("cls");
cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; //三个关键字进行查找
while(1)
{
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //以 名字为关键字进行查询
{
cout<<"输入你想要查找学生的名字:";
cin>>a;
for(i=1;i<=Total;i++)
{
if(strcmp(student[i].name.c_str(),a.c_str())==0) //使用strcmp及.c_str进行比较
break;
}
if(i!=Total+1)
{
cout<<"目标学生的学号为:"<<student[i].number<<" 宿舍号为"<<student[i].domenumber<<endl;
cout<<"是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
else break;
}
else
{cout<<"你想要查找的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
}
if(choice[0]=='2') //以按照学号的关键字进行查询
{
cout<<"输入你想要查找学生的学号:";
cin>>b;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=b.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)b[j]-48)*k;
k*=10;
}
if(binarynum(1,Total,sss)!=-1)
4000
//使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
{
cout<<"目标学生姓名为:"<<student[binarynum(1,Total,sss)].name
<<"学号为:"<<student[binarynum(1,Total,sss)].number<<" 宿舍号为"<<student[binarynum(1,Total,sss)].domenumber<<endl<<endl;
cout<<"是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
else
{cout<<"你想要查找的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
}
int flag=0;
if(choice[0]=='3') //以按 宿舍号为关键字进行查找
{
cout<<"输入你要查询的宿舍号:";
cin>>c;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=c.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)c[j]-48)*k;
k*=10;
}
for(i=1;i<=Total;i++)
{
if(sss==student[i].domenumber&&flag==1)
{
cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
}
if(sss==student[i].domenumber&&flag==0)
{
flag=1;
cout<<"姓名\t学号\t房号"<<endl;
cout<<student[i].name<<"\t"<<student[i].number<<"\t"<<student[i].domenumber<<endl;
}
cout<<endl;
cout<<"是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl<<endl; continue;}
else break;
}
if(flag==0)
{
cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):"<<endl; continue;}
else break;
}
}
}
return ;
}
void Delete() //删除函数
{
string choice;
int m,i,j;
string a,choice1;
string b,c;
system("cls");
cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; //三个关键字进行删除
while(1)
{
while(1) //对输入的信息进行容错处理,防止出现输入字母的情况
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'3'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1') //以名字为关键字进行查询 并删除
{
cout<<"输入你想要删除学生的名字:";
cin>>a;
for(i=1;i<=Total;i++)
{
if(strcmp(student[i].name.c_str(),a.c_str())==0) //使用strcmp及.c_str进行比较
break;
}
if(i!=Total+1)
{
for(j=i;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
cout<<"删除成功"<<endl<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
else break;
}
else
{cout<<"你想要删除的学生没有记录入系统中,是否继续进行此操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
}
if(choice[0]=='2') //以按照学号的关键字进行删除
{
cout<<"输入你想要删除学生的学号:";
cin>>b;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=b.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)b[j]-48)*k;
k*=10;
}
if(binarynum(1,Total,sss)!=-1) //使用二分的方法来找到位置,若return结果为-1则表示学号没有录入系统中
{
int ii= binarynum(1,Total,sss);
for(j=ii;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
cout<<"删除成功"<<endl<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
else
{cout<<"你想要删除的学号没有记录入系统中,是否继续进行此查询操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
}
}
int flag=0;
if(choice[0]=='3') //以按 宿舍号为关键字进行删除
{
cout<<"输入你要删除的宿舍号:";
cin>>c;
int sss=0,k=1; //对输入的信息进行容错处理,防止出现输入字母的情况
int len=c.size();
for(int j=len-1;j>=0;j--)
{
sss+=((int)c[j]-48)*k;
k*=10;
}
for(i=1;i<=Total;i++)
{
if(sss==student[i].domenumber&&flag==0)
{
flag=1;
for(j=i;j<Total;j++)
{
student[j]=student[j+1];
}
Total--;
}
}
cout<<"删除成功!"<<endl;
cout<<endl;
cout<<"是否继续进行此删除操作(是为y,不是为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl<<endl; continue;}
else break;
if(flag==0)
{
cout<<"你想要查找宿舍没有记录入系统中或者宿舍没有人进行登记,是否继续进行此删除操作(继续为y,不继续进行操作为n):";
cin>>choice1;
if(choice1[0]=='y'){cout<<"请输入删除的方式(1:按名字删除,2:按学号删除,3:按房号删除):"<<endl; continue;}
else break;
}
}
}
return ;
}
int main()
{
menu();
int j,k,n,m;
memset(domes,0,sizeof(domes));
string choice,i;
while(1)
{
while(1)
{
m=0;
cin>>choice;
if(strlen(choice.c_str())>1)
{
m=1;
cout<<"输入错误,请重新输入";
}
if(choice[0]>'4'||choice[0]<'1')
{
cout<<"输入数字没有此选项请重新输入"<<endl;
m=1;
}
if(m==0)
break;
}
if(choice[0]=='1')
{
build();
cout<<"新建完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='2')
{
paixumenu();
cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='3')
{
query();
cout<<"排序完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='4')
{
Delete();
cout<<"删除完毕,是否进行下一步操作(返回菜单为y,退出系统为n):";
cin>>choice;
if(choice[0]=='y')
{
system("cls");
menu();
}
else break;
}
else if(choice[0]=='0') break;
}
cout<<"退出系统"<<endl;
system("pause");
return 0;
}
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用