⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zl.c

📁 题目:宿舍管理查询软件 问题描述:为宿舍管理人员编写一个宿舍管理查询软件
💻 C
字号:
// dormitory.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct dormitory
{
char name[20];
char dorm[5];
string student;
//char student[13];
};

bool empty()
{
ifstream fin("dormitory.txt"); 
string s; 
/*if(!fin) 
{ 
cout<<"Error: can't open the file !"<<endl; 
return; 
} */
bool judge=0;
fin>>s; 
if(s.length()==0) 
   judge=1;
return judge;
//cout<<"Error:no contents in this file !"<<endl;
}
void addDormitory(int &);
void delDormitory(int &);
void lookOver(int );
void editDormitory(int );
void compositor(int );
int _tmain(int argc, _TCHAR* argv[])
{
int c;
static int num = 0;
ifstream infile("dormitory.txt",ios::in);
char ch;
dormitory *p= new dormitory;
while(infile.get(ch))
{
   infile>>p->name>>p->student>>p->dorm;
   num++;
}
while(1)
{
   cout<<"1.增加 2.删除 3.修改 4.查询 5排序"<<endl;
   cout<<"请输入要执行的操作:";
   cin>>c;
   switch (c)
   {
    case 1:addDormitory(num);break;
    case 2:delDormitory(num);break;
    case 3:editDormitory(num);break;
    case 4:lookOver(num);break;
    case 5:compositor(num);break;
    default :cout<<"CHOOSE ERROR!"<<endl;break;
   }
}
return 0;
}
void addDormitory(int &num1)
{

dormitory d;
ofstream outfile("dormitory.txt",ios::out|ios::app);
if(! outfile)
{
   cerr<<"open error"<<endl;
   exit(1);
}
if(num1!=0)
outfile<<endl;
cout<<"请输入姓名:";
cin>>d.name;
outfile<<d.name<<" ";
cout<<"请输入学号:";
cin>>d.student;
outfile<<d.student<<"   ";
cout<<"请输入房间号:";
cin>>d.dorm;
outfile<<d.dorm;
num1++;
outfile.close();
}
void delDormitory(int &num2)
{
if(empty())
   cout<<"no contents in this file !"<<endl;
else 
{ 
   while(1)
   {   
    string s;
    //char s[12];
    dormitory *store = new dormitory[num2];
    cout<<"请输入要删除的学生学号:";
    cin>>s;
    fstream iofile("dormitory.txt",ios::in|ios::out);
    if(! iofile)
    {
     cerr<<"open error"<<endl;
     exit(1);
    }
    bool found=0;
    int temp; 
    for(int i=0;i<num2;i++)
    {
     iofile>>store[i].name>>store[i].student>>store[i].dorm;
     if(s==store[i].student) {found=1;temp=i;}
    }
    if(found==0)
    {cout<<"您输入的学生不存在!"<<endl;
    cout<<"要继续删除吗?(Y/N)"<<endl;
    char d;
    cin>>d;
    if(d=='Y')continue;
    else break;
    }
    else 
    {
     fstream iofile("dormitory.txt",ios::out|ios::trunc);
     for(int a=0;a<temp;a++)
     {   
      if(a!=0)
       iofile<<endl;
      iofile<<store[a].name<<" "<<store[a].student<<" "<<store[a].dorm;
     }
     for(int b=temp+1;b<num2;b++)
     {   
      if(b!=1)
       iofile<<endl;
      iofile<<store[b].name<<" "<<store[b].student<<" "<<store[b].dorm;
     }
     iofile.close();
     num2--;
     cout<<"删除成功!"<<endl;
     break;
    }
   }
}
}
void editDormitory(int num3)
{
if(empty())
   cout<<"no contents in this file !"<<endl;
else 
{ 
   while(1)
   {   
    string s;
    //char s[12];
    dormitory *store = new dormitory[num3];
    cout<<"请输入要修改的学生学号:";
    cin>>s;
    fstream iofile("dormitory.txt",ios::in|ios::out);
    if(! iofile)
    {
     cerr<<"open error"<<endl;
     exit(1);
    }
    bool found=0;
    int temp; 
    for(int i=0;i<num3;i++)
    {
     iofile>>store[i].name>>store[i].student>>store[i].dorm;
     if(s==store[i].student) {found=1;temp=i;}
    }
    if(found==0)
    {
     cout<<"您输入的学生不存在!"<<endl;
     cout<<"要继续修改吗?(Y/N)"<<endl;
     char d;
     cin>>d;
     if(d=='Y')continue;
     else break;
    }
    else 
    {
     fstream iofile("dormitory.txt",ios::out|ios::trunc);
     cout<<"请输入新的学生信息:"<<endl;
     cout<<"姓名:";
     cin>>store[temp].name;
     cout<<"学号:";
     cin>>store[temp].student;
     cout<<"宿舍号:";
     cin>>store[temp].dorm;
     for(int a=0;a<num3;a++)
     {   
      if(a!=0)
       iofile<<endl;
      iofile<<store[a].name<<" "<<store[a].student<<" "<<store[a].dorm;
     }
     iofile.close();
     cout<<"修改成功!"<<endl;
     break;
    }
   }
}
}
void lookOver(int num4)
{

if(empty())
   cout<<"no contents in this file !"<<endl;
else 
{   string st;

while(1)
{   bool ch=0;
cout<<"输入查询方式:1.全部 2.按姓名 3.按学号 4.按宿舍号";
ifstream infile("dormitory.txt",ios::in);
dormitory *store = new dormitory[num4];
int c;
cin>>c;
for(int i=0;i<num4;i++)
{
   infile>>store[i].name>>store[i].student>>store[i].dorm;
}
switch(c)
{
case 1:
   for(int i=0;i<num4;i++)
    cout<<"姓名:"<<store[i].name<<endl<<"学号:"<<store[i].student<<endl<<"宿舍号:"<<store[i].dorm<<endl;
   break;
case 2:
   cout<<"请输入学生姓名:"<<endl;
   cin>>st;
   int v;
   ch=0;
   for(v=0;v<num4;v++)
   {if(store[v].name==st)
   {
    ch=1;
    cout<<"姓名:"<<store[v].name<<endl<<"学号:"<<store[v].student<<endl<<"宿舍号:"<<store[v].dorm<<endl;
   }
   }
   if(ch==0)cout<<"您输入的学生不存在!"<<endl;
   break;
case 3:
   ch=0;
   cout<<"请输入学生学号:"<<endl;
   cin>>st;
   int a;
   for(a=0;a<num4;a++)
   {
    if(store[a].student==st)    
    {cout<<"姓名:"<<store[a].name<<endl<<"学号:"<<store[a].student<<endl<<"宿舍号:"<<store[a].dorm<<endl;
    ch=1;
    }
   }
   if(ch==0){cout<<"您输入的学生不存在!"<<endl;ch=0;}
   break;
case 4:
   cout<<"请输入学生宿舍号:"<<endl;
   cin>>st;
   ch=0;
   int b;
   for(b=0;b<num4;b++)
   {
    if(store[b].dorm==st)
    {
     cout<<"姓名:"<<store[b].name<<endl<<"学号:"<<store[b].student<<endl<<"宿舍号:"<<store[b].dorm<<endl;
     ch=1;
    }
   }
   if(ch==0)
    cout<<"您输入的学生不存在!"<<endl;
   break;
}
cout<<"要继续查询吗?(Y/N)"<<endl;
char d;
cin>>d;
if(d=='Y')continue;
else break;

}
}
}
void Sort_compositor(int head,int tail,string *S,int *K)
{
int Tail;
Tail=tail;
string store;
int istore;
store=S[head];
istore=K[head];
tail--;
while(head<tail)
{
   while(1)
   {
    if(S[tail]<store)
    {
     S[head]=S[tail];
     K[head]=K[tail];
     head++;
     break;
    }
    else if(head==tail)break;
      else tail--;
   }
   while(1)
   {
    if(S[head]>store)
    {
     S[tail]=S[head];
     K[tail]=K[head];
     tail--;
     break;
    }
    else if(head==tail)break;
    else head++;
   }
}
S[head]=store;
K[head]=istore;
if(head-1>0)
{
   Sort_compositor(0,head-1,S,K);
}
if(head+1<Tail)
{
   Sort_compositor(head+1,Tail,S,K);
}
}
void compositor(int num5)
{
int choose;
fstream iofile("dormitory.txt",ios::in|ios::out);
if(! iofile)
{
cerr<<"open error"<<endl;
exit(1);
}
dormitory *store = new dormitory[num5];
for(int com=0;com<num5;com++)
iofile>>store[com].name>>store[com].student>>store[com].dorm;
//char *T = new char[num5];
string *T=new string[num5];
int *L=new int[num5];
cout<<"1.姓名 2.学号 3.宿舍号";
cin>>choose;
switch(choose)
{
   case 1:
    for(int i=0;i<num5;i++)
    {T[i]=store[i].name;L[i]=i;}
    break;
   case 2:
    for(int i=0;i<num5;i++)
    {T[i]=store[i].student;L[i]=i;}
    break;
   case 3:
    for(int i=0;i<num5;i++)
    {T[i]=store[i].dorm;L[i]=i;}
    break;
}
Sort_compositor(0,num5,T,L);
for(int i=0;i<num5;i++)
{
   int t=L[i];
   cout<<store[t].name<<" "<<store[t].student<<" "<<store[t].dorm<<endl;
   if(t==0)iofile<<endl;
   iofile<<store[t].name<<" "<<store[t].student<<" "<<store[t].dorm<<endl;
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -