寮管理検索ソフト
8536 ワード
問題の説明
寮管理者のために寮管理検索ソフトを作成し、プログラム設計要求:
(1)インタラクティブな作業方式を採用する
(2)情報の追加、削除、変更が可能
(3)データファイルを作成し、データファイルをキーワード(氏名、学号、部屋番号)によって並べ替える(選択、快速並べ替え、スタック並べ替えなどのいずれか)
(4)照会:a.名前で照会する;b.学号で照会する;c部屋番号で照会する
(5)任意のクエリー結果を印刷する(連続操作可能)
コード#コード#
寮管理者のために寮管理検索ソフトを作成し、プログラム設計要求:
(1)インタラクティブな作業方式を採用する
(2)情報の追加、削除、変更が可能
(3)データファイルを作成し、データファイルをキーワード(氏名、学号、部屋番号)によって並べ替える(選択、快速並べ替え、スタック並べ替えなどのいずれか)
(4)照会:a.名前で照会する;b.学号で照会する;c部屋番号で照会する
(5)任意のクエリー結果を印刷する(連続操作可能)
コード#コード#
#include
#include
#include
#include
using namespace std;
const int max_size=1000;
const int n=7;
typedef struct
{
char name[20];
char num[20];
char dnum[10];
}StudentType;
typedef struct
{
StudentType x[max_size];
int length;
}StQueue;
void DisPlay(StQueue &st){
printf(" :
");
printf(" \t \t
");
for(int i=1;i<=st.length;i++)
printf("%s\t%s\t%s
",st.x[i].num,st.x[i].name,st.x[i].dnum);
printf("
");
system("pause");
system("cls");
}
void Read(StQueue &st){
FILE *fp;
char na[20],nu[20],dnu[10];
if((fp=fopen("C:\\ww\\xue.txt","r"))==NULL){
printf(" !
");
return;
}
st.length=0;
while(!feof(fp)){
fscanf(fp,"%s%s%s",nu,na,dnu);
st.length++;
strcpy(st.x[st.length].num,nu);
strcpy(st.x[st.length].name,na);
strcpy(st.x[st.length].dnum,dnu);
if(st.length==n){
printf(" !
");
printf(" :%d
",st.length);
DisPlay(st);
break;
}
}
}
void Add(StQueue &st){
printf(" :
");
int k;
scanf("%d",&k);
for(int i=1;i<=k;i++){
printf(" %d :
",i);
printf("[ : 、 、 .]
");
st.length++;
cin>>st.x[st.length].num>>st.x[st.length].name>>st.x[st.length].dnum;
printf(" !
");
}
printf(" %d .
",st.length);
system("pause");
system("cls");
}
void Edit(StQueue &st){
printf(" :
");
int k,flag=1;
scanf("%d",&k);
for(int j=1;j<=k;j++){
printf(" %d :
",j);
char nu[20];
cin>>nu;
for(int i=1;i<=st.length;i++){
if(strcmp(nu,st.x[i].num)==0){
printf(" :
");
printf(" :%s
:%s
:%s
",st.x[i].num,st.x[i].name,st.x[i].dnum);
printf(" :
");
printf("[ : 、 、 .]
");
cin>>st.x[i].num>>st.x[i].name>>st.x[i].dnum;
printf("
");
printf(" !
");
flag=0;
break;
}
}
if(flag==1)
printf(" !
");
}
printf(" %d .
",st.length);
system("pause");
system("cls");
}
void Delete(StQueue &st){
printf(" :
");
int k,flag=1;
scanf("%d",&k);
for(int j=1;j<=k;j++){
printf(" %d :
",j);
char nu[20];
cin>>nu;
for(int i=1;i<=st.length;i++){
if(strcmp(nu,st.x[i].num)==0){
for(int p=i;p<=st.length-1;p++)
st.x[p]=st.x[p+1];
printf(" !
");
st.length--;
flag=0;
break;
}
}
if(flag==1)
printf(" !
");
}
printf(" %d .
",st.length);
system("pause");
system("cls");
}
void Query1(StQueue st){
printf(" :
");
char num[20];
int flag=1;
cin>>num;
for(int i=1;i<=st.length;i++){
if(strcmp(num,st.x[i].num)==0){
printf(" :
");
printf(" :%s
:%s
:%s
",st.x[i].num,st.x[i].name,st.x[i].dnum);
flag=0;
break;
}
}
if(flag==1)
printf(" !
");
}
void Query2(StQueue st){
printf(" :
");
char name[20];
int flag=1;
cin>>name;
for(int i=1;i<=st.length;i++){
if(strcmp(name,st.x[i].name)==0){
printf(" :
");
printf(" :%s
:%s
:%s
",st.x[i].num,st.x[i].name,st.x[i].dnum);
flag=0;
}
}
if(flag==1)
printf(" !
");
}
void Query3(StQueue st){
printf(" :
");
char dnum[20];
int flag=1;
cin>>dnum;
printf(" :
");
for(int i=1;i<=st.length;i++){
if(strcmp(dnum,st.x[i].dnum)==0){
printf(" :%s
:%s
:%s
",st.x[i].num,st.x[i].name,st.x[i].dnum);
flag=0;
}
}
if(flag==1)
printf(" !
");
}
void Query(StQueue st){
printf(" :
");
printf(" 1. .
");
printf(" 2. .
");
printf(" 3. .
");
int a;
scanf("%d",&a);
switch(a){
case 1:Query1(st);break;
case 2:Query2(st);break;
case 3:Query3(st);break;
}
system("pause");
system("cls");
}
void Pai1(StQueue st){
StudentType t;
for(int i=1;i<=st.length;i++){
int k=i;
for(int j=i+1;j<=st.length;j++)
if(strcmp(st.x[j].num,st.x[k].num)<0)
k=j;
if(k!=i){
t=st.x[i];
st.x[i]=st.x[k];
st.x[k]=t;
}
}
DisPlay(st);
}
void Pai2(StQueue st){
StudentType t;
for(int i=1;i<=st.length;i++){
int k=i;
for(int j=i+1;j<=st.length;j++)
if(strcmp(st.x[j].name,st.x[k].name)<0)
k=j;
if(k!=i){
t=st.x[i];
st.x[i]=st.x[k];
st.x[k]=t;
}
}
DisPlay(st);
}
void Pai3(StQueue st){
StudentType t;
for(int i=1;i<=st.length;i++){
int k=i;
for(int j=i+1;j<=st.length;j++)
if(strcmp(st.x[j].dnum,st.x[k].dnum)<0)
k=j;
if(k!=i){
t=st.x[i];
st.x[i]=st.x[k];
st.x[k]=t;
}
}
printf(" :
");
DisPlay(st);
}
void Pai(StQueue &st){
printf(" :
");
printf(" 1. .
");
printf(" 2. .
");
printf(" 3. .
");
int a;
scanf("%d",&a);
switch(a){
case 1:Pai1(st);break;
case 2:Pai2(st);break;
case 3:Pai3(st);break;
}
}
int main()
{
StQueue st;
while(1){
printf("-------- ----------
");
printf(" 1. .
");
printf(" 2. .
");
printf(" 3. .
");
printf(" 4. .
");
printf(" 5. .
");
printf(" 6. .
");
printf(" 7. .
");
printf(" 8. .
");
printf("---------------------------------------
");
printf(" :
");
int a;
scanf("%d",&a);
if(a==8){
printf("-----------
");
printf(" !
");
printf("-----------
");
break;
}
if(a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8){
printf(" , !
");
continue;
}
switch(a){
case 1:Read(st);break;
case 2:DisPlay(st);break;
case 3:Add(st);break;
case 4:Delete(st);break;
case 5:Edit(st);break;
case 6:Pai(st);break;
case 7:Query(st);break;
}
}
return 0;
}
/*
:
201813 Yili 115
201821 Huaxi 128
:
201813
201821
:
201813
201821
201813 Yili 117
201821 Huaxi 138
*/