寮管理検索ソフト

8536 ワード

問題の説明
寮管理者のために寮管理検索ソフトを作成し、プログラム設計要求:
(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 */