當前位置:首頁 » 編程語言 » c語言做宿舍系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言做宿舍系統

發布時間: 2022-04-29 03:58:02

1. 用c語言編寫學生宿舍管理系統

我說樓主啊
你也太小氣了吧
剛才我本來想把一個還符合你的要求的程序發上來
但仔細一看
你連懸賞分都沒有
那發個屁啊
難怪你發了這么多天
根本就沒有人來看一下

2. C語言宿舍管理系統程序

#include<stdio.h>
#include<string.h>
typedefstructDometoryMember{
charsno[16];
charname[32];
charphone[16];
charaddress[20];
}DB;

//創建一張宿舍成員信息表
intcreateList(DBa[]){
FILE*r=fopen("input.txt","r");
inti=0;
while(fscanf(r,"%s%s%s%s",a[i].sno,a[i].name,a[i].phone,a[i].address)!=EOF){
i++;
}
returni;
}
//根據學號查找某個學生,顯示其基本信息
intlookup(DBa[],intn,charsno[]){
inti=0;
while(strcmp(a[i].sno,sno)!=0&&i<n){
i++;
}
if(i==n){
printf("沒有此人 ");
return-1;
}
else{
printf("%s %s %s %s ",a[i].sno,a[i].name,a[i].phone,a[i].address);
returni;
}
}
//根據學號刪除某個學生
intdel(DBa[],intn,charsno[]){
inti;
printf("刪除學號為%s的學生: ",sno);
i=lookup(a,n,sno);

if(i!=-1){
intj;
for(j=i+1;j<n;j++){
a[j-1]=a[j];
}
returnn-1;
}
else{
return-1;
}
}
intmain(){
DBa[16];
intn=createList(a);
printf("總共%d個學生 ",n);
charsno[20];
scanf("%s",sno);
inti=lookup(a,n,sno);
n=del(a,n,sno);
printf("刪除之後還剩%d個學生 ",n);
getchar();
getchar();
return0;

}

3. 求一個C語言的學生宿舍管理信息系統。簡單點的,不用太長

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<process.h>
#include<conio.h>

struct Inf //宿舍信息
{
char I_class[20]; //班級信息
char I_num[20]; //學號
char I_name[20]; //姓名
char I_room[20]; //宿舍號
char I_score[20]; //評分

}A[100];
int N; //宿舍信息數量

void tool() //信息處理函數
{char a[20],s;
int b,i=0,j=1;
system("cls"); //選擇要處理信息分類
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 提取信息 \n\n");
printf(" 1.按班 級\n");
printf(" 2.按學 號\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍號\n");
printf(" 5.按評 分\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='1'&s<='5')break;
}
b=s-48;
switch(b)
{case 1:printf("請輸入(班 級):");scanf("%s",a);break;
case 2:printf("請輸入(學 號):");scanf("%s",a);break;
case 3:printf("請輸入(姓 名):");scanf("%s",a);break;
case 4:printf("請輸入(宿舍號):");scanf("%s",a);break;
case 5:printf("請輸入(評 分):");scanf("%s",a);break;
}
while(i<N) //提取檢索到得第一個位置的要處理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 級:%s",A[i].I_class);
printf("\n學 號:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍號:%s",A[i].I_room);
printf("\n評 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n [1修改] [2刪除] [3返回] ");
while(1)
{s=getch();if(s>='1'&&s<='3')break;}
if(s=='1') //修改操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n請輸入班 級:");scanf("%s",A[i].I_class);getchar();
printf("請輸入學 號:");scanf("%s",A[i].I_num);getchar();
printf("請輸入姓 名:");scanf("%s",A[i].I_name);getchar();
printf("請輸入宿舍號:");scanf("%s",A[i].I_room);getchar();
printf("請輸入評 分:");scanf("%s",A[i].I_score);getchar();
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("修改完成,按任意鍵返回......");
getch();
}
if(s=='2') //刪除操作
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n\n\n\n刪除完畢,按任意鍵返回......");
getch();
for(j=i;j<N;j++)
A[j]=A[j+1];
N--;
}
}
else
{printf("無此信息記錄,按任意鍵返回......");getch();}

}

void input() //添加信息函數
{char a;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n請輸入班 級:");scanf("%s",A[N].I_class);getchar();
printf("請輸入學 號:");scanf("%s",A[N].I_num);getchar();
printf("請輸入姓 名:");scanf("%s",A[N].I_name);getchar();
printf("請輸入宿舍號:");scanf("%s",A[N].I_room);getchar();
printf("請輸入評 分:");scanf("%s",A[N].I_score);getchar();N++;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
printf("\n輸入完成,是否繼續輸入[y\\n]");
while(1)
{a=getch();if(a=='n'||a=='y')break;}
if(a=='y')input();
}

void output() //顯示信息函數
{int i;
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
for(i=0;i<N;i++)
{
printf("\n班 級:%s",A[i].I_class);
printf("\n學 號:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍號:%s",A[i].I_room);
printf("\n評 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
}
printf("\n按任意鍵返回......");
getch();
}

void admin() //教師界面
{char a;
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" @教師界面[信息數量%d]@\n\n\n",N);
printf(" 1.添加信息 \n");
printf(" 2.處理信息 \n");
printf(" 3.顯示信息 \n\n");
printf(" 0.退 出 \n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{a=getch();if(a>='0'&&a<='3')break;}
if(a=='0')break;
switch(a-48)
{case 1:input();break;
case 2:tool();break;
case 3:output();break;
}
}
}

void guest()
{char a[20],s;
int b,i,j=1;
while(1)
{i=0;
system("cls"); //選擇要處理信息分類
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf(" 學生查詢界面 \n\n");
printf(" 1.按班 級\n");
printf(" 2.按學 號\n");
printf(" 3.按姓 名\n");
printf(" 4.按宿舍號\n");
printf(" 5.按評 分\n\n");
printf(" 0.退 出\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&s<='5')break;
}
b=s-48;
if(b==0)break;
switch(b)
{case 1:printf("請輸入(班 級):");scanf("%s",a);break;
case 2:printf("請輸入(學 號):");scanf("%s",a);break;
case 3:printf("請輸入(姓 名):");scanf("%s",a);break;
case 4:printf("請輸入(宿舍號):");scanf("%s",a);break;
case 5:printf("請輸入(評 分):");scanf("%s",a);break;
}
while(i<N) //提取檢索到得第一個位置的要處理信息
{switch(b)
{case 1:j=strcmp(a,A[i].I_class);break;
case 2:j=strcmp(a,A[i].I_num);break;
case 3:j=strcmp(a,A[i].I_name);break;
case 4:j=strcmp(a,A[i].I_room);break;
case 5:j=strcmp(a,A[i].I_score);break;
}
if(j==0)break;i++;
}
if(j==0)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n班 級:%s",A[i].I_class);
printf("\n學 號:%s",A[i].I_num);
printf("\n姓 名:%s",A[i].I_name);
printf("\n宿舍號:%s",A[i].I_room);
printf("\n評 分:%s",A[i].I_score);
printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n按任意鍵返回......");
getch();
}
else
{printf("\n要查詢的信息不存在!");
printf("\n按任意鍵返回......");
getch();
}

}
}

int user() //用戶登錄菜單(返回1為教師,返回2為學生)
{char s;
int i;
FILE *fp;
char pw[5];
char pwi[5];
while(1)
{
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n");
printf(" 宿舍管理系統 \n\n\n");
printf(" --1.教師登陸-- \n");
printf(" --2.學生登陸-- \n");
printf(" --3.修改密碼-- \n\n\n");
printf(" --0.退 出-- \n\n\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
while(1)
{s=getch();
if(s>='0'&&s<='3')break;
}
s-=48;
if(s==0){system("cls");printf("\n\n\n\n\n @謝謝使用@");getch();exit(0);}
if(s==2)return 2; //進入學生界面點
if(s==1||s==3)
{if((fp=fopen("key.dat","r"))==NULL)
{system("cls");printf("\n\n\n 文件讀取錯誤!程序終止!");getch();exit(0);}
fread(pw,5,1,fp);
pw[4]=0;
fclose(fp);
system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("請輸入4位管理員密碼:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if(strcmp(pwi,pw))
{printf("\n密碼錯誤!按任意鍵返回......");getch();}
else
if(s==3) //密碼修改執行處
{system("cls");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n");
printf("請輸入4位新密碼:");
for(i=0;i<4;i++)
{pwi[i]=getch();putchar('*');
}
pwi[4]=0;
if((fp=fopen("key.dat","w"))==NULL)
{system("cls");printf("\n\n\n 文件寫入錯誤!程序終止!");getch();exit(0);}
fwrite(pwi,5,1,fp);
fclose(fp);
printf("\n密碼修改成功,按任意鍵返回......");
getch();
}
else return 1; //進入教師界面點
}
}
}

void main() //主函數
{FILE *fp;
if((fp=fopen("ss.dat","r"))==NULL) //讀取文件中的數據
{system("cls");printf("\n\n\n 文件讀取錯誤!程序終止!");getch();exit(0);}
fread(&N,sizeof(int),1,fp);
fread(A,sizeof(struct Inf),100,fp);
fclose(fp);
if(user()==1)admin(); //調用用戶操作函數
else guest();
if((fp=fopen("ss.dat","w"))==NULL) //存儲數據到文件
{system("cls");printf("\n\n\n 文件寫入錯誤!程序終止!");getch();exit(0);}
fwrite(&N,sizeof(int),1,fp);
fwrite(A,sizeof(struct Inf),100,fp);
fclose(fp);
system("cls");
printf("\n\n\n\n\n @謝謝使用@");
getch();
}

4. 用c語言編寫一個學生宿舍管理系統

C語言
寫個struct包含學生信息的變數
寫個小菜單函數,按1為查詢,2為添加,3為刪除
添加寫個函數,按照struct變數的順序輸入學生信息,用一個struct數組保存多個學生的信息
查詢寫個函數,先輸入查詢的內容,如學號,然後從struct數組逐個尋找
刪除寫個函數,先輸入刪除學生的學號,然後套用查找這個函數,將找到的學生struct刪除

5. C語言解決宿舍管理系統

額額 這個比較復雜啊
寫的話 耗費時間啊
收費哦 搞不搞

6. 用c語言編寫一個宿舍管理系統(答完後給50—100分)

C語言
寫個struct包含學生信息的變數
寫個小菜單函數,按1為查詢,2為添加,3為刪除
添加寫個函數,按照struct變數的順序輸入學生信息,用一個struct數組保存多個學生的信息
查詢寫個函數,先輸入查詢的內容,如學號,然後從struct數組逐個尋找
刪除寫個函數,先輸入刪除學生的學號,然後套用查找這個函數,將找到的學生struct刪除

這個估計也沒有人給你寫,這個實際和學生成績管理系統一樣的,我給你說個思路吧,還是自己看看書寫吧,不是很難的。
首先你要建立一個結構體,來表示學生宿舍的基本信息,
typedef struct
{
int num_1;
int num_2;
float s;
int have_num;
int lea_num;
}Dom;
typedef struct DNode
{
Dom dom;
DNode *next;
}DNode;
然後,你要用鏈表實現,在main函數裡面用switch語句來轉向你要實現的功能,然後各個函數就要你自己寫了,實際就是鏈表的插入刪除的一些基本操作,加加油吧

7. 用C語言編寫學生宿舍管理系統

c語言學生宿舍管理 我幫你寫

8. 數據結構,C語言編寫宿舍管理系統

。。。。。。。。。。。。。。。。。。。。正在寫

/*學生宿舍信息管理系統*/
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct commdity)
struct student
{
char name[15];/*學生姓名*/
int sex;/*學生性別*/
};
struct commdity
{
int num;/*宿舍號碼*/
int number;/*容納人數---並沒有賦予實際作用*/
int money;/*住宿費用*/
struct student Student[8];/*最多能住個8人上限*/
};
struct commdity comm[50];
void menu()/*菜單*/
{
printf("\t\t\t\t住宿管理系統:\n\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t1.錄入宿舍的信息\n");
printf("\t\t\t\t2.錄入學生的信息\n");
printf("\t\t\t\t3.刪除學生信息\n");
printf("\t\t\t\t4.查找學生信息\n");
printf("\t\t\t\t請選擇:(0-7):");
}
void in()/*對宿舍信息的錄入*/
{
int i,m=0;
char ch[2];
FILE *fp;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("沒有任何記錄");
}
else
{
system("cls");
printf("存在記錄");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
printf("是否輸入(y\n)");
scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("宿舍編號");
scanf("%d",&comm[m].num);
for(i=0;i<m;i++)
{
if(comm[i].num==comm[m].num)
{
printf("該宿舍已經存在,按任意鍵繼續");
getch();
fclose(fp);
return;
}
}
printf("請輸入宿舍容納人數");
scanf("%d",&comm[m].number);
printf("請輸入住宿費用");
scanf("%d",&comm[m].money);
if(fwrite(&comm[m],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
else
{
printf("已經保存 \n");
m++;
}
printf("是否繼續");
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
void studentInput()/*分配學生到指定宿舍*/
{
FILE *fp;
int i,j,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
printf("一共有%d條記錄",m);
fclose(fp);
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件\n");
return;
}
printf("請輸入學生的宿舍編號\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(snum==comm[i].num)
{
printf("存在該宿舍!\n");
for(j=0;j<8;j++)
{
if(comm[i].Student[j].sex==NULL)
{
printf("請輸入學生的名稱\n");
scanf("%s",&comm[i].Student[j].name);
printf("請輸入學生的性別(1-男,2-女)\n");
scanf("%d",&comm[i].Student[j].sex);
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
break;
}
}
fclose(fp);
return;
}
}
fclose(fp);
printf("沒有找到");
return;
}
void search()/*對學生信息查找*/
{
int i,m=0;
FILE *fp;
int s;
char ch[2];
int num=0;
printf("請輸入編號\n");
scanf("%d",&num);
if((fp=fopen("data","ab+"))==NULL)
{
printf("文件不能打開!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
if(m==0)
{
printf("沒有任何記錄存在");
return;
}
printf("一共有%d記錄\n",m);
for(i=0;i<m;i++)
{
if(num==comm[i].num)
{
printf("存在該記錄 是否顯示\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("%d宿舍: 住宿人數%d\n",comm[i].num,comm[i].number);
for(s=0;s<8;s++)
{
if(comm[i].Student[s].sex!=NULL)
{
printf("\n學生:%s 性別:%d\n",comm[i].Student[s].name,comm[i].Student[s].sex);
}
}
}
return;
}
}
printf("沒有找到");
}
void deleStudent()/*刪除住宿的學生信息*/
{
FILE *fp;
int snum,s,i,j,m=0;
char ch[2];
char name[20];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打開文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("沒有記錄\n");
return;
}
printf("請輸入宿舍編號\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(comm[i].num==snum)
{
printf("已經找到該宿舍!\n");
printf("請輸入該學生的名稱!\n");
scanf("%s",&name);
for(s=0;s<8;s++)
{
if(strcmp(comm[i].Student[s].name,name)==0)
{
printf("已將查詢到該學生 (是否刪除y\n)\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
for(j=s;j<8;j++)
{
comm[i].Student[j]=comm[i].Student[j+1];
}
printf("刪除成功!\n");
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打開文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
}
fclose(fp);
return;
}
}
}
}
printf("沒有找到\n");
return;
}
int main()
{
int n;
menu();
scanf("%d",&n);
while(n!=0)
{
switch(n)
{
case 1:
{
in();
break;
}
case 2:
{
studentInput();
break;
}
case 3:
{
deleStudent();
break;
}
case 4:
{
search();
break;
}
default:
{
break;
}
}
menu();
scanf("%d",&n);
}
system("pause");
}
/*程序結束*/
/*保證語法上沒有任何錯誤 有很多程序段重復,你可以自己改改,還有那個容納人數我直接固定了8個 不過問題不大*/

9. 用C語言做 學生宿舍管理系統

孩子 很清楚這是老師給你的作業題 ,,知識是被網路不出來的,,強烈建議看到此題的同仁不給出答案,,,,孩子 你自己試著寫,,那不會,隨時問 我們會解答 但你這是直接問作業 那老師還讓你寫幹嘛???給你思路 那個合法才能進入,,只需要用個判斷句就行,先輸入密碼 正確 則繼續執行 錯誤 輸出提示信息,,當然 這里你可以加一點花招 連續輸入3次 直接退出程序或者等待1分鍾才行,,哈哈 這個你可以寫完不給老師說密碼,然後老師輸入,,哈哈 其他的的代碼就是鏈表的知識了 課本上也都有的,,,,,好好學習啊 中國需要腳踏實地的程序員,,不要投機取巧,,

10. 用C語言編寫宿舍管理查詢系統

以前給別人寫的,完全原創,已經在VC上編譯運行通過:

#include <conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>

typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int roomID; /*房號*/
}Student;
Student stu[80]; /*結構體數組變數*/

int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t************宿舍管理查詢系統************\n"); /*菜單選擇*/
printf("\t\t | 1. 輸入信息 |\n");
printf("\t\t | 2. 顯示所有信息 |\n");
printf("\t\t | 3. 排序 |\n");
printf("\t\t | 4. 查詢信息 |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t****************************************\n");
printf("\t\t\t請輸入處理種類(0-4):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'4');
return(c-'0'); /*返回選擇*/
}

int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{
printf("\t\t\t學號:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\t姓名:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\t房號:");
scanf("\t\t\t%d",&stud[n+i].roomID);
gets(x); /*清除多餘的輸入*/
printf("\t\t\t還需要繼續輸入嗎?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}

void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\t學號\t\t姓名\t\t房號\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].roomID);
if(i>1&&i%10==0) /*每十個暫停*/
{
printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}

void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].roomID;
q=&stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}

void Sort_by_name(Student stud[],int n) /*按姓名排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].name,stud[j+1].name)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].roomID;
q=&stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}

void Sort_by_room(Student stud[],int n) /*按房號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(stud[j].roomID>stud[j+1].roomID)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].roomID;
q=&stud[j].roomID;
s=*p;
*p=*q;
*q=s;
}
Display(stu,n);
}

void Query_a_record_by_name(Student stud[],int n) /*查找並顯示一個記錄*/
{
char s[20];
int i=0;
printf("\t\t\t請輸入姓名:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\t沒有找到相關信息!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*輸出該學生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}

void Query_a_record_by_num(Student stud[],int n) /*查找並顯示一個記錄*/
{
char s[20];
int i=0;
printf("\t\t\t請輸入學號:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].num,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\t沒有找到相關信息!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*輸出該學生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}

void Query_a_record_by_room(Student stud[],int n) /*查找並顯示一個記錄*/
{
int s;;
int i=0;
printf("\t\t\t請輸入房號:"); /*互動式輸入*/
scanf("\t\t\t%d",&s);
while(stud[i].roomID==s) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\t沒有找到相關信息!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].name);/*輸出該學生信息*/
printf("\t\t\this(her) number:%s\n",stud[i].num);
printf("\t\t\this(her) roomID:%d\n",stud[i].roomID);
}

void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/

if((fp=fopen("stu.txt","w"))==NULL) /*打開文件*/
{
printf("\t\t\t文件打開失敗!!\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].roomID);
i++;
}
fclose(fp); /*關閉文件*/
printf("文件保存完畢!\n"); /*返回成功信息*/
}

void main() /*主函數*/
{
int n=0,i;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\t輸入相關情報\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;

case 2:
printf("\t\t\宿舍狀況一覽\n"); /*顯示所有記錄*/
Display(stu,n);
break;

case 3:
printf("\t\t\t請輸入按什麼進行排序(1.姓名、2.學號、3.房號)\n\t\t\t");
scanf("%d",&i);
while(i)
{
if(i<1||i>3)
{
printf("錯誤輸入!!\n");
printf("\t\t\t請輸入按什麼進行排序(1.姓名、2.學號、3.房號)\n\t\t\t");
continue;
}

switch(i)
{
case 1:
Sort_by_name(stu,n);
break;
case 2:
Sort_by_num(stu,n);
break;
case 3:
Sort_by_room(stu,n);
break;
}
break;
}
printf("\t\t\t排序完畢!\n");
printf("\t\t\t");
WritetoText(stu,n);
system("pause");
break;

case 4:
printf("\t\t\t請輸入按什麼進行查詢(1.姓名、2.學號、3.房號)\n\t\t\t");
scanf("%d",&i);
while(i)
{
if(i<1||i>3)
{
printf("錯誤輸入!!\n");
printf("\t\t\t請輸入按什麼進行查詢(1.姓名、2.學號、3.房號)\n\t\t\t");
continue;
}

switch(i)
{
case 1:
Query_a_record_by_name(stu,n);
break;
case 2:
Query_a_record_by_num(stu,n);
break;
case 3:
Query_a_record_by_room(stu,n);
break;
}
break;
}
printf("\t\t\t");
system("pause");
break;

case 0:
printf("\t\t\t歡迎使用!!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}