C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計
宿舍管理系統(tǒng)C語言源碼,供大家參考,具體內(nèi)容如下
內(nèi)容摘要
學(xué)生宿舍管理系統(tǒng)時應(yīng)對學(xué)生宿舍管理的現(xiàn)代化、網(wǎng)絡(luò)化,逐步擺脫學(xué)生宿舍管理的人工管理方式,提高學(xué)生宿舍管理效率而開發(fā)的,它包括了對學(xué)生宿舍基本信息管理,其功能包括對這些基本信息的增、刪、改、查等基本功能,并將這些功能與文件讀寫相結(jié)合形成文檔使管理者一目了然,也適合長時間的保存,數(shù)據(jù)不容易丟失;其中在輸出時穿插著冒泡排序、希爾排序、折半拆入排序、二分查找等算法,按順序輸出學(xué)生信息等。綜上,這無疑為信息的管理存儲提供了一個方便、快捷的操作方式。
關(guān)鍵詞
二分查找、排序算法及分析、文件操作
系統(tǒng)概覽
開發(fā)工具
Visual C++ 6.0
函數(shù)功能
源碼
#include"stdio.h" #include"stdlib.h" #include"string.h" #include "conio.h"? #include "windows.h" #define MAX 1000 ? /*結(jié)構(gòu)體類型*/ typedef struct ? { ?? ?? ?int num;/*學(xué)號*/ ?? ? ?? ?char name[20];/*姓名*/ ?? ? ?? ?char sex[5];/*性別*/ ?? ? ?? ?int age;/*年齡*/ ?? ? ?? ?char studentclass[20];/*班級*/ ?? ? ?? ?int dorm;/*宿舍號*/ }STUDENTS; //查找指針? typedef struct Points { ? ?int a; ? ?struct Points *points; }Points; char xiugai[10]="修改"; char chaxun[10]="查詢";? char xuehao[]="學(xué)號"; char xingming[]="姓名"; char xingbie[]="性別"; char nianling[]="年齡"; char banji[]="班級"; char sushe[]="宿舍"; /*共用的功能塊 */ void pause(){ ?? ?int i; ?? ?printf("\n\n按任意鍵加回車返回主菜單!"); ? ? scanf("%d",&i); ? ? getchar(); }? void print(STUDENTS stu[],int point){ ?? ?printf("\n\n\n學(xué)號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,宿舍號: %d\n", ?? ??? ??? ? stu[point].num,stu[point].name,stu[point].sex,stu[point].age,stu[point].studentclass,stu[point].dorm); } void printfNotFound(){ ?? ?printf("找不到該數(shù)據(jù)\n"); } void printSearch(STUDENTS stu[],int i){ ? ?printf("?? ??? ? ? ? %7d%11s%10s%10d%12s%12d\n\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].dorm); } void printHead(){ ?? ??? ?printf(" ?? ??? ?-------------------------------------------------------------------------------\n"); ?? ? ? ?printf("?? ??? ?-------------------------------------------------------------------------------\n"); ?? ? ? ?printf("?? ??? ??? ?學(xué)號: ? ? 姓名: ? ? 性別: ? ? 年齡: ? ? 班級: ? ? 宿舍號: ? ? \n");? ?? ? ? ?printf(" ?? ??? ?-------------------------------------------------------------------------------\n"); ?? ??? ?printf(" ?? ??? ?-------------------------------------------------------------------------------\n\n\n"); } //默認(rèn)繼續(xù)? int a=1; void selectOperate(){ ?? ? ?? ?button: ?? ? ? ?printf("繼續(xù)操作請按1,返回主菜單請按0 ?"); ?? ??? ?scanf("%d",&a); ?? ??? ?if(!(a==1||a==0))?? ? ?? ? ?? ?{?? ??? ? ?? ? ?? ??? ?printf("請輸入正確的指令");? ?? ? ?? ??? ?goto button;?? ??? ? ?? ??? ? ?? ? ?? ?} } //讀取文件,返回的是總個數(shù)? int read_file(STUDENTS stu[]) { ?? ?FILE *fp;?? ? ? ? int point=-1; ?? ?fp=fopen("stu.txt","rt"); ?? ?if(fp==NULL)?? ? ?? ?{ ?? ??? ?printf("\n\n*****庫存文件不存在!請創(chuàng)建");?? ? ?? ??? ?return 0; ?? ?} ?? ?while(!feof(fp))?? ? ?? ?{ ?? ??? ?point++; ?? ??? ?fread(&stu[point],sizeof(STUDENTS),1,fp);?? ? ?? ?}?? ? ?? ?fclose(fp);?? ? ?? ?return point; } //存儲數(shù)據(jù)到文件中? void save_file(STUDENTS stu[],int sum)//sum是總個數(shù)? { ?? ?FILE *fp;?? ? ?? ? int i;?? ? ?? ? if((fp=fopen("temp.txt","w"))==NULL)?? ? ?? ? { ?? ? ?? ?printf("寫文件錯誤!\n");?? ? ?? ??? ?return;?? ? ?? ? }?? ? ?? ??? ?for(i=0;i<sum;i++)?? ? ?? ??? ??? ?if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)?? ? ?? ? ??? ??? ??? ?printf("寫文件錯誤!\n"); ?? ? ?? ?fclose(fp); ?? ?remove("stu.txt"); ?? ?rename("temp.txt","stu.txt"); } /*創(chuàng)建學(xué)生信息*/ //返回的是總數(shù)? int input(STUDENTS stu[],int sum) { ? ?? ?int x; ? ?for(;sum<MAX;sum++) ? { ?? ?system("cls"); ? ? ?? ? ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?創(chuàng)建學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? printf("\n\n ? ? ? ? ? ? ? ? 錄入學(xué)生信息 ?(最多%d個)\n",MAX); ? ? printf(" ? ? ? ? ? ? ? ----------------------------\n"); ? ? printf("\n ? ? ? ? ? ? ? ? ? ? 第%d個學(xué)生\n",sum+1); ?? ?printf("\n 請輸入學(xué)生的學(xué)號:"); ? ? scanf("%d",&stu[sum].num); ? ? printf("\n 請輸入學(xué)生的姓名:"); ? ? scanf("%s",stu[sum].name);? ?? ?printf("\n 請輸入學(xué)生的性別:"); ? ? scanf("%s",stu[sum].sex); ? ? printf("\n 請輸入學(xué)生的年齡:"); ?? ? ? scanf("%d",&stu[sum].age); ? ? ? printf("\n 請輸入學(xué)生的班級:"); ? ? scanf("%s",stu[sum].studentclass); ? ? ? ? ? ? printf("\n 請輸入學(xué)生的宿舍號:"); ? ? scanf("%d",&stu[sum].dorm); ? ? printf("?? ??? ?創(chuàng)建成功!"); ?? ?//選擇操作? ?? ??? ?selectOperate(); ?? ??? ?if(a==0) ?? ??? ??? ?return sum+1;?? ? ? ?} ? ? ? ?return sum+1; } /*打印學(xué)生信息*/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void output(STUDENTS stu[],int sum) { ? ? ?int i; ? ?system("cls"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?打印學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printHead();? ? ?for(i=0;i<sum;i++) ? ? ? ? ?? ? printSearch(stu,i); ??? ? ?? ??? ? ? ?pause(); } /*排序 ?*/? /*復(fù)制student*/ //將排好的裝在一個新的students數(shù)組里 ,不要存到文件中? ?void cpStu(STUDENTS stu0[],STUDENTS stu[],int sum) { ??? ?int i; ??? ?for(i=0;i<sum;i++){ ??? ??? ?stu[i].num=stu0[i].num; ??? ??? ?strcpy(stu[i].name,stu0[i].name); ??? ??? ?strcpy(stu[i].sex,stu0[i].sex); ??? ??? ?stu[i].age=stu0[i].age; ??? ??? ?strcpy(stu[i].studentclass,stu0[i].studentclass); ??? ??? ?stu[i].dorm=stu0[i].dorm; ??? ?}?? ? ?} /*對數(shù)據(jù)元組排序*/ void exchangeData(STUDENTS *stu1,STUDENTS *stu2){ ?? ??? ??? ??? ?stu1->num=stu2->num; ? ??? ??? ??? ??? ? ? ??? ??? ??? ??? ?stu1->dorm=stu2->dorm;? ?? ??? ??? ??? ??? ?? ?? ??? ??? ??? ?stu1->age=stu2->age; ?? ??? ??? ??? ??? ?? ?? ??? ??? ??? ?strcpy(stu1->name,stu2->name); ?? ??? ??? ??? ??? ? ? ?? ??? ??? ??? ?strcpy(stu1->sex,stu2->sex); ?? ??? ??? ??? ??? ? ? ?? ??? ??? ??? ?strcpy(stu1->studentclass,stu2->studentclass);?? ? } int selectSort(){ ?? ? ?? ?int choice; ?? ??? ? ?? ? printf("\n\n\n ? ? ********請您選擇條件進(jìn)行排序********\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?1. 學(xué)號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?2. 班級\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?3. 宿舍號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?4. 姓名\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?0. 返回主菜單\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? 請選擇(0-3):"); ??? ? scanf("%d",&choice); ??? ? return choice;? } /*根據(jù)宿舍號從小到大排序 ? 冒泡*/ void sortByDorm(STUDENTS stu0[],int sum,STUDENTS stup[]) ? { ? ? ?? ?STUDENTS stu1; ?//中間變量? ? ?? ?int i,j; ? ?? ?? ?cpStu(stu0,stup,sum); ?? ? ? ? for(i=0;i<sum-1;i++) ?? ??? ?for(j=0;j<sum-1-i;j++) ?? ??? ??? ?if(stup[j].dorm>stup[j+1].dorm) ?? ??? ??? ? ?{ ?? ??? ??? ??? ?exchangeData(&stu1,&stup[j]);?? ? ?? ??? ??? ??? ?exchangeData(&stup[j],&stup[j+1]);?? ? ?? ??? ??? ??? ?exchangeData(&stup[j+1],&stu1);?? ? ?? ??? ??? ?} ? } ? ? /*根據(jù)班級從小到大排序 ? 選擇*/ ?? ? void sortByClass(STUDENTS stu0[],int sum,STUDENTS stup[]) ? { ? ? ?? ? ? ?? ?STUDENTS stu1;?? ??? ??? ?//中間變量? ? ?? ?int i,j,k; ?? ?cpStu(stu0,stup,sum); ?? ? ? ? for(i=0;i<sum-1;i++) ?? ?{ ?? ??? ?k=i; ?? ??? ?for(j=i+1;j<sum;j++) ?? ??? ??? ?if(strcmp(stup[k].studentclass,stup[j].studentclass)>0)?? ??? ? ?? ??? ??? ??? ??? ?k=j; ?? ??? ??? ??? ? ?? ??? ?if(k!=i) ?? ??? ?{ ?? ??? ??? ?exchangeData(&stu1,&stup[i]);?? ? ?? ??? ??? ?exchangeData(&stup[i],&stup[k]);?? ? ?? ??? ??? ?exchangeData(&stup[k],&stu1); ?? ??? ?}?? ??? ??? ? ?? ?} ?? ? ?? ? ? } ?? ? ?/*根據(jù)姓名從大到小排序 ? 折半插入排序*/ ?? ?//因為這里是從stu[1]開始操作的,所以得再創(chuàng)個中間變量? ? void sortByName(STUDENTS stu0[],int sum,STUDENTS stup[]) ? { ? ? ?? ?STUDENTS stu1;?? ??? ??? ?//中間變量? ? ?? ?STUDENTS stu[1000]; ? ?? ?int i,j,low,high,mid; ?? ??? ?for(i=0;i<sum;i++){ ??? ??? ?stu[i+1].num=stu0[i].num; ??? ??? ?strcpy(stu[i+1].name,stu0[i].name); ??? ??? ?strcpy(stu[i+1].sex,stu0[i].sex); ??? ??? ?stu[i+1].age=stu0[i].age; ??? ??? ?strcpy(stu[i+1].studentclass,stu0[i].studentclass); ??? ??? ?stu[i+1].dorm=stu0[i].dorm; ??? ?}?? ? ?? ? ?? ? ?? ?for(i=2;i<sum+1;i++){ ?? ??? ?exchangeData(&stu1,&stu[i]); ? ?/*保存待插入元素到stu1*/ ?? ??? ? low=1;high=i-1; ?? ??? ? while(low<=high) ?? ??? ? { ?? ??? ? ?? ?mid=(low+high)/2; ?? ??? ? ?? ?if(strcmp(stu1.name,stu[mid].name)>0) ?? ??? ? ?? ??? ?low=mid+1; ?? ??? ? ?? ?else ?? ??? ? ?? ??? ?high=mid-1; ?? ??? ? ?? ? ?? ??? ? } ?? ??? ? for(j=i-1;j>=high+1;j--) ?? ??? ??? ? exchangeData(&stu[j+1],&stu[j]);//后移元素,留出插入空位? ?? ??? ?exchangeData(&stu[high+1],&stu1);?? ??? ? ?? ?} ?? ? ?? ?for(i=0;i<sum;i++){ ??? ??? ?stup[i].num=stu[i+1].num; ??? ??? ?strcpy(stup[i].name,stu[i+1].name); ??? ??? ?strcpy(stup[i].sex,stu[i+1].sex); ??? ??? ?stup[i].age=stu[i+1].age; ??? ??? ?strcpy(stup[i].studentclass,stu[i+1].studentclass); ??? ??? ?stup[i].dorm=stu[i+1].dorm; ??? ?}?? ? ?? ??? ? ? } ?? ?? ?? ? ?/*根據(jù)學(xué)號從大到小排序 ? 插入的希爾排序*/ ? ?? ? ?void ShellInsert(STUDENTS stup[],int sum,int dk){ ? ?? ? ? ??? ?int i,j,k; ? ??? ?STUDENTS stu1;//中間變量? ? ??? ?for(k=0;k<dk;k++) ? ??? ??? ?for(i=dk+k;i<sum;i=i+dk) ?? ??? ??? ?if(stup[i].num<stup[i-dk].num) ? ??? ??? ??? ?{ ? ??? ??? ??? ? ? ??? ??? ??? ??? ?exchangeData(&stu1,&stup[i]);? ? ??? ??? ??? ? ? ??? ??? ??? ??? ?for(j=i-dk;j>=0&&stu1.num<stup[j].num;j=j-dk)//記錄向后移 ? ??? ??? ??? ? ?? ??? ??? ??? ??? ?exchangeData(&stup[j+dk],&stup[j]);? ?? ??? ??? ? ?? ??? ??? ??? ?exchangeData(&stup[j+dk],&stu1);? ?? ??? ??? ?} ? ?} ? ? ? void sortByNum(STUDENTS stu[],int sum,STUDENTS stup[]) ? { ? ? ?? ?int i,x; ? ?? ?? ?cpStu(stu,stup,sum); ?? ? ? ?? ?int dlta[5]={5,4,3,2,1}; ??? ? ? ?? ?for(x=0;x<5;x++) ? ?? ??? ?ShellInsert(stup,sum,dlta[x]); ? ?? ? ? ?? ? ? } ?? ? //總的函數(shù)? ? void sortStudent(STUDENTS stu[],int sum){ ? ?? ?STUDENTS stup[1000];//引用,把排好序的放在這里,不跟原來的混淆? ? ?? ?int choice,x,i; ? ?? ?do{?? ? ?? ? ??? ?system("cls"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?學(xué)生宿舍信息排序 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ? ??? ? ?? ? ??? ?select: ?? ? ??? ?choice=selectSort(); ?? ? ??? ? ?? ? ??? ?system("cls"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?學(xué)生宿舍信息排序 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ??? ? ?? ?? ? ??? ?switch(choice) ?? ? ? ?{?? ? ? ?? ? ? ? ?case 1: sortByNum(stu,sum,stup); break;/*學(xué)生學(xué)號信息順序*/ ?? ? ? ? ?case 2: sortByClass(stu,sum,stup);break;/*學(xué)生班級信息順序*/ ? ?? ?? ??? ? ?case 3: sortByDorm(stu,sum,stup); break;/*學(xué)生宿舍信息順序*/ ?? ??? ? ?case 4: sortByName(stu,sum,stup); break;/*學(xué)生姓名信息順序*/ ?? ? ? ? ?case 0: break; ? ? ?? ?} ? ? ?? ?//打印排好序的? ? ? ?? ?printHead(); ? ? ?? ? for(i=0;i<sum;i++) ?? ??? ??? ?printSearch(stup,i); ? ? ?? ? ? ? ?? ? ? ? ?? ?if(choice==1||choice==2||choice==3||choice==4) ?? ??? ?{ ?? ? ? ??? ?printf("\n\n"); ?? ??? ? ? ?? ?button: ?? ??? ??? ? ? printf("繼續(xù)查詢請按1,返回主菜單請按0 ?"); ?? ??? ??? ? ? scanf("%d",&x); ?? ??? ??? ??? ?if(x==1)?? ? ?? ??? ??? ??? ??? ?x=1; ?? ??? ??? ??? ?else if(x==0) ?? ??? ??? ??? ? ?? ?continue; ?? ??? ??? ??? ?else ?? ??? ??? ??? ? ?? ?{?? ??? ? ?? ??? ??? ??? ? ?? ??? ?printf("請輸入正確的指令\n");? ?? ??? ??? ??? ? ?? ??? ?goto button;?? ??? ? ?? ??? ? ?? ??? ??? ??? ? ?? ?} ?? ??? ?} ?? ??? ?else if(choice==0) ?? ??? ??? ?x=0; ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?printf("\n\t\t請輸入正確的指令\n");? ?? ??? ??? ?goto select; ?? ??? ?} ?? ??? ? ? ?? ?}while(x==1); ? ?? ? }? ?? /* 根據(jù)條件查找指針point*/? /// //查詢或者修改的選擇;? int selectChoice(char tiaojian[20]){ ?? ? ?? ?int choice; ?? ? ?? ? ?? ? printf("\n\n\n ? ? ********您想根據(jù)哪個條件%s********\n\n",tiaojian); ? ? ?printf(" ? ? ? ? ? ? ? ?1. 學(xué)號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?2. 姓名\n\n"); ?? ? printf(" ? ? ? ? ? ? ? ?3. 性別\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?4. 年齡\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?5. 班級\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?6. 宿舍號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?0. 返回主菜單\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? 請選擇(0-6):"); ??? ? scanf("%d",&choice); ??? ? return choice;? } ? ///????????????????????????????為什么這里的指針得返回菜可行,參數(shù)不是指針,操作的是地址的????? Points *connectPoint(Points *r,Points *p,int i){ ? ?? ??? ?p=(Points *)malloc(sizeof(Points)); ?? ??? ?p->a=i; ?? ??? ?r->points=p; ?? ??? ?r=p; ?? ??? ?return r; ? } ?? ? //choice是指主菜單中的功能選項,字符數(shù)組tiaojian為相應(yīng)的字符,比如如果選擇查詢的話, ? //tiaojian傳參進(jìn)來的應(yīng)該為 "查詢",這里是為了提高函數(shù)的復(fù)用性。? ? Points *findPoint(STUDENTS stu[],int sum,int choice,char tiaojian[]) ? { ? ?? ?int i,j=0; Points *p,*q,*r; q=(Points *)malloc(sizeof(Points));r=q; ? ??? ?int num,age,dorm;char classs[20],sex[5],name[20]; ? ? printf(" ? ? \n\n請輸入您要查找的學(xué)生的%s",tiaojian); ? ??? ?switch(choice) ?? ?{ ?? ??? ?case 1: scanf("%d",&num); ?? ??? ??? ??? ?for(i=0;i<sum;i++) ?? ??? ??? ??? ??? ?if(num==stu[i].num) ?? ??? ??? ??? ??? ??? ?r=connectPoint(r,p,i); ?? ??? ??? ??? ?break; ?? ??? ?case 2: scanf("%s",name);for(i=0;i<sum;i++)if(strcmp(name,stu[i].name)==0)r=connectPoint(r,p,i);break; ?? ??? ?case 3: scanf("%s",sex);for(i=0;i<sum;i++)if(strcmp(sex,stu[i].sex)==0)r=connectPoint(r,p,i);break; ?? ??? ?case 4: scanf("%d",&age);for(i=0;i<sum;i++)if(age==stu[i].age)r=connectPoint(r,p,i);break; ?? ??? ?case 5: scanf("%s",classs);for(i=0;i<sum;i++)if(strcmp(classs,stu[i].studentclass)==0)r=connectPoint(r,p,i);break; ?? ??? ?case 6: scanf("%d",&dorm);for(i=0;i<sum;i++)if(dorm==stu[i].dorm)r=connectPoint(r,p,i);break; ?? ?} ?? ? ? ?? ?r->points=NULL; ?? ? ??? ?return q; ? ?? ? ? }? ?? //? /*查詢學(xué)生信息*/ void inquire(STUDENTS stu[],int sum) { ?? ? ?? ?int choice; ?? ?Points *p; ?? ??? ? ?? ?do{ ?? ?system("cls"); ?? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?查詢學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ?button:? ?? ?choice=selectChoice(chaxun); ?? ? ?? ?system("cls"); ?? ? ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?查詢學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? ?? ? switch里面不能調(diào)用排序功能,為什么??????????? ? ?? ?switch(choice) ?? ?{ ?? ??? ?case 1:p=findPoint(stu,sum,choice,xuehao);break; ?? ??? ?case 2:p=findPoint(stu,sum,choice,xingming);break; ?? ??? ?case 3:p=findPoint(stu,sum,choice,xingbie);break; ?? ??? ?case 4:p=findPoint(stu,sum,choice,nianling);break; ?? ??? ?case 5:p=findPoint(stu,sum,choice,banji);break; ?? ??? ?case 6:p=findPoint(stu,sum,choice,sushe);break; ?? ??? ?case 0:return;? ?? ??? ?default :printf("請輸入正確的指令");goto button;//不斷循環(huán);?? ? ?? ?} ?? ? ?? ?if(p->points!=NULL) ?? ?{ ?? ??? ?p=p->points; ?? ??? ? ?? ??? ?printHead(); ?? ??? ? ?? ??? ?while(p!=NULL) ?? ??? ?{ ?? ??? ??? ?printSearch(stu,p->a); ?? ??? ??? ?p=p->points; ?? ??? ?}?? ??? ? ?? ?} ?? ?else ?? ??? ?printfNotFound(); ?? ?//選擇操作? ?? ??? ?selectOperate();?? ? ?? ?}while(a); ?? ? } ? ?? ? //二分法只適用于查找一個 ? ? 目前只有學(xué)號,姓名,宿舍排序? ? ?Points *findPoint2(STUDENTS stu[],int sum,int choice,char tiaojian[]) ? { ? ?? ?int i,j=0; Points *p,*q,*r; q=(Points *)malloc(sizeof(Points));r=q; ? ??? ?int num,age,dorm;char classs[20],sex[5],name[20]; ? ? printf(" ? ? \n\n請輸入您要查找的學(xué)生的%s",tiaojian); ? ?? ? ? ?? ?switch(choice) ?? ?{ ?? ??? ?case 1: scanf("%d",&num);break; ?? ??? ?case 2: scanf("%s",name);break; ?? ??? ?case 3: scanf("%d",&dorm);break; ?? ?} ?? ? ?? ? ?? ?int flag=0; ? ?? ?int low=0,high=sum-1,mid; ? ?? ?while(low<=high){ ? ?? ??? ?mid=(low+high)/2; ? ?? ? ? ?? ? ? ?? ?switch(choice) ?? ?{ ?? ??? ?case 1:if(num==stu[mid].num){r=connectPoint(r,p,mid);printf("mid==%d",mid);flag=1;}? ?? ??? ??? ??? ?else if(stu[mid].num>num)high=mid-1;else low=mid+1; ?? ??? ??? ??? ?break; ?? ??? ?case 2: if(strcmp(name,stu[mid].name)==0){r=connectPoint(r,p,mid);flag=1;} if(strcmp(stu[mid].name,name)>0)high=mid-1;else low=mid+1;break; ?? ??? ?case 3: if(dorm==stu[mid].dorm){r=connectPoint(r,p,mid);flag=1;} if(stu[mid].dorm>dorm)high=mid-1;else low=mid+1;break; ?? ?} ?? ?//如果找到,就跳出循環(huán)? ? ?? ?if(flag) ? ?? ??? ?break; ? ?? ??? ? ? ?? ?}?? ? ? ? ?? ? ? ?? ?r->points=NULL; ?? ? ??? ?return q; ? ?? ? ? }? /*二分法查詢學(xué)生信息*/ void inquire2(STUDENTS stu[],int sum) { ?? ?STUDENTS stup1[1000];//引用,把排好序的放在這里,不跟原來的混淆? ?? ?STUDENTS stup2[1000];//引用,把排好序的放在這里,不跟原來的混淆? ?? ?STUDENTS stup3[1000];//引用,把排好序的放在這里,不跟原來的混淆? ?? ?//二分法得先排序? ?? ?sortByNum(stu,sum,stup1); ?? ?sortByName(stu,sum,stup2); ?? ?sortByDorm(stu,sum,stup3); ?? ? ?? ?int choice; ?? ?Points *p; ?? ? ?? ? ?? ?do{ ?? ?system("cls"); ?? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?查詢學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ? printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ?button:? ?? ? printf("\n\n\n ? ? ********您想根據(jù)哪個條件查詢********\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?1. 學(xué)號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?2. 姓名\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?3. 宿舍號\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ?0. 返回主菜單\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? 請選擇(0-3):"); ? ? scanf("%d",&choice); ?? ? ?? ?system("cls"); ?? ? ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?查詢學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? ?? ? switch里面不能調(diào)用排序功能,為什么??????????? ? ?? ?switch(choice) ?? ?{ ?? ??? ?case 1:p=findPoint2(stup1,sum,choice,xuehao);break;//二分法查詢? ?? ??? ?case 2:p=findPoint2(stup2,sum,choice,xingming);break;//二分法查詢? ?? ??? ?case 3:p=findPoint2(stup3,sum,choice,sushe);break;//二分法查詢? ?? ??? ?case 0:return;? ?? ??? ?default :printf("請輸入正確的指令");goto button;//不斷循環(huán);?? ? ?? ?} ?? ? ?? ?if(p->points!=NULL) ?? ?{ ?? ??? ?p=p->points; ?? ??? ? ?? ??? ?printHead(); ?? ??? ? ?? ??? ?while(p!=NULL) ?? ??? ?{ ?? ??? ??? ?if(choice==1) { ?? ??? ??? ?printSearch(stup1,p->a); ?? ??? ??? ?p=p->points;} ?? ??? ??? ?if(choice==2) { ?? ??? ??? ?printSearch(stup2,p->a); ?? ??? ??? ?p=p->points;} ?? ??? ??? ?if(choice==3) { ?? ??? ??? ?printSearch(stup3,p->a); ?? ??? ??? ?p=p->points;} ?? ??? ?}?? ??? ? ?? ?} ?? ?else ?? ??? ?printfNotFound(); ?? ?//選擇操作? ?? ??? ?selectOperate();?? ? ?? ?}while(a); ?? ? } //修改和刪除判斷輸入學(xué)生個數(shù)? int operateNum(int sum){ ?? ?int n; ?? ?printf("請輸入你要操作的學(xué)生的個數(shù):"); ? ?scanf("%d",&n); ? ?if(n>sum) ? ?{ ?? ?printf("\n\n?? ?輸入學(xué)生個數(shù)超過總量,操作失敗\n"); ?? ?selectOperate(); ?? ?return 0; ? ?} ? ?else if(n<=0) ? ??? ?{? ?? ?printf("\n\n?? ?輸入學(xué)生個數(shù)不能小于或等于0,操作失敗\n"); ?? ?selectOperate(); ?? ?return 0; ? ?} ? ?return n; }? /*只能根據(jù)學(xué)號刪除學(xué)生信息*/ void exchangeData(STUDENTS *stu1,STUDENTS *stu2); //返回總數(shù)? int deletel(STUDENTS stu[],int sum) ? {? ? a=1; ? ? system("cls");? ? ?int i,j=0,n=0,flag=1; ? ?Points *p; ? ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?刪除學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? ? ? ?while(n==0)//這里接收到的兩個數(shù),n判斷學(xué)生個數(shù),a判斷是否返回主菜單? ? ?{ ? ??? ?n=operateNum(sum); ? ??? ?//選擇操作? ?? ?if(a==0) ?? ??? ?return sum; ?//0就返回主菜單?? ? ? ?}?? ?? ? ? ? ? ?do{ ? ? ? ? ?if(flag){ ? ? ? ?system("cls");? ? ? Points *p; ? ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?刪除學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ?} ?? ? ? ?//查一個刪一個? ? ?? ?p=findPoint(stu,sum,1,xuehao);? ? ?? ?p=p->points; ?? ?if(p!=NULL) ?? ?? ?{?? ? ?? ??? ?i=p->a;?? ??? ? ?? ??? ?//把后面的一次覆蓋掉前面一個? ?? ??? ?for(;i<sum-1;i++) ?? ??? ??? ?exchangeData(&stu[i],&stu[i+1]); ?? ??? ?printf("刪除成功\n"); ?? ??? ?flag=0; ?? ??? ?j++; ?? ??? ?if(j==n) ?? ??? ?{ ?? ??? ??? ?printf("\n\n刪除操作已完成\n"); ?? ??? ??? ?//選擇操作? ?? ??? ??? ?selectOperate(); ?? ??? ??? ?if(a==0) ?? ??? ??? ??? ?return sum-n; ?? ??? ??? ?else? ?? ??? ??? ??? ?deletel(stu,sum-n); ?? ??? ?} ?? ?}? ?? ?else{ ?? ??? ?printf("輸入的學(xué)號不存在,操作失敗\n"); ?? ??? ? ?? ??? ?//選擇操作? ?? ??? ?selectOperate(); ?? ??? ?if(a==0) ?? ??? ??? ?return sum-j;?? ? ?? ?} ?? ?}while(a==1&&j<n); } /*只能根據(jù)學(xué)號修改學(xué)生信息*/ void change(STUDENTS stu[],int sum) ? { ? ?? ? int choice; ? ? ? Points *p; ? ? ?? ? ? do{ ? ? ? system("cls"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?修改學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ?? ? ?p=findPoint(stu,sum,1,xuehao); ?? ??? ? ?? ? ?p=p->points; ?? ? ? ? ? if(p!=NULL) ? ? { ? ? ?? ?system("cls"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ?修改學(xué)生宿舍信息 ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▄ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?▄\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n"); ? ? ?? ? ? ? ?? ?int i=p->a; ? ? ?? ? ?? ??? ?print(stu,i); ?? ??? ?button: ?? ??? ?choice=selectChoice(xiugai); ?? ??? ?? ?? ??? ? switch(choice)?? ??? ? ?? ??? ? { ?? ??? ? ?case 1:printf("\n ? 請輸入你改的新學(xué)號");scanf("%d",&stu[i].num); break; ?? ??? ? ?case 2:printf("\n ? 請輸入你改的新姓名");scanf("%s",stu[i].name); break; ?? ??? ? ?case 3:printf("\n ? 請輸入你改的新性別");scanf("%s",stu[i].sex); ?break; ?? ??? ? ?case 4:printf("\n ? 請輸入你改的新年齡");scanf("%d",&stu[i].age); ?break; ?? ??? ? ?case 5:printf("\n ? 請輸入你改的新班級");scanf("%s",stu[i].studentclass); break; ?? ??? ? ?case 6:printf("\n ? 請輸入你改的新宿舍");scanf("%d",&stu[i].dorm); break; ?? ??? ? ?case 0:return;? ?? ??? ? ?default :printf("請輸入正確的指令");goto button;?? ??? ? ? ?? ??? ? } ?? ??? ? ? ?? ??? ? ?printf("\n ? 修改成功:"); ?? ??? ? ?print(stu,i);?? ??? ??? ??? ??? ? ?? ?} ?? ?else?? ? ?? ??? ?printfNotFound(); ?? ??? ? ?? ? //選擇操作? ?? ?selectOperate(); ?? ??? ?if(a==0) ?? ??? ??? ?return; ?? ?}while(a); } void pagedis() { ? ?printf(" \n\n\n ? ? ? ? ? ?**********************************\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ?歡迎進(jìn)入學(xué)生宿舍信息管理系統(tǒng) ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? * ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*\n"); ? ?printf(" ? ? ? ? ? ? ? ? ? **********************************\n"); } //歡迎? void welcome(){ ?? ? ?? ??? ??? ?char heart[30][150]={ ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ************ ? ? ? ? ? ? ? ? ? ? ? ? ? ************", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ?****************** ? ? ? ? ?? ? ? ? ? ?******************", ? ? ? ? " ? ? ? ? ? ? ? ? ? ?******************#******* ? ? ? ??? ? ? ?**************************",?? ??? ? ? ? ? ? " ? ? ? ? ? ? ? ? **********************#********* ? ? ? ********************************", ? ? ? ? " ? ? ? ? ? ? ? ?**********************##########*** ? **************#******************** ?", ? ? ? ? " ? ? ? ? ? ? ? **********************#*********#**** **##********#************************ ? ", ? ? ? ? " ? ? ? ? ? ? ? *********##########**#****#****#**********##****#************************** ?", ? ? ? ? " ? ? ? ? ? ? ? **********#*******#*#*****#***#***************#********#########*********** ?", ? ? ? ? " ? ? ? ? ? ? ? ?**********#*****#********#***********#####***#********#*******#********** ?", ? ? ? ? " ? ? ? ? ? ? ? ? ***********#***#********#***************#***#******#*#****#**#********* ?", ? ? ? ? " ? ? ? ? ? ? ? ? ?***********##**********#**************#*****#****#***#*****#*#******* ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? **********##*********#*#************#*****####*****#*******#******* ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ?********#**#*******#***#************#*************#************** ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ?*****#****#*****#*****#************#************#************ ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ?**#**********#*******#******######************#********** ? ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ?**********#*********#*****########################### ? ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ?************************************************** ? ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?********************************************** ? ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?****************************************** ? ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?************************************** ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?********************************** ? ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?****************************** ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?************************** ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?********************** ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?****************** ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?************** ? ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?********** ? ? ? ", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?****** ? ?", ? ? ? ? " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?** ?" ?? ??? ?}; ?? ??? ? ? ? int i; ? ? for(i=0;i<29;i++) ? //逐行打印 ? ? ? ? printf("%s\n",heart[i]); } void bye(){ ?? ?system("cls"); ?? ??? ??? ?char heart[11][150]={ "\t\t ?_____ ? _ ? ? ? ? ? ? ? ? ? ? ? ?_ ? ? ? ? ? ? ", "\t\t |_ ? _| | |_ ? ? __ _ ? ?_ _ ? ? | |__ ? ?___ ? ? o O O ? ", "\t\t ? | | ? | ' \\ ? / _` | ?| ' \\ ? ?| / / ? (_-< ? ?o ? ? ? ?", "\t\t ?_|_|_ ?|_||_| ?\\__,_| ?|_||_| ? |_\\_\\ ? /__/_ ? TS__[O] ?", "\t\t_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"| {======| ", "\t\t\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'./o--000' ?"?? ??? ??? ? }; ?? ??? ? ? ?int i; ? ?printf("\n\n"); ? ? for(i=0;i<6;i++) ? //逐行打印 ? ? ? ? printf("%s\n",heart[i]); } void designer(){ ? ? ? ? printf("\n\n\t\t☆☆☆☆☆☆☆☆★★設(shè)計者信息★★☆☆☆☆☆☆☆☆\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ? ? ? ? ? ? ? ? ? ? ? ? ? ●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ?姓名: ? ? ? ? ? ? ●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ? ? ? ? ? ? ? ? ? ? ? ? ? ●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ?班級: ? ? ? ?●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ? ? ? ? ? ? ? ? ? ? ? ? ? ●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ?學(xué)號: ? ●●\n\n"); ? ? ? ? printf("\t\t?? ?●●?? ? ? ? ? ? ? ? ? ? ? ? ? ? ●●\n\n"); ? ? ? ? printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"); } void check() { ? ?char userName[5];/*用戶名*/ ? ?char userPWD[5];/*密碼*/ ? ?int i; ? ?system("color 3C"); ? ?for(i = 1; i < 4; i++) ? ?{ ? ? ? /*用戶名和密碼均為123;*/ ? ?? ? ? ? ? ? printf("\n ? ? ? 請輸入您的用戶名(123):"); ? ? ? ? gets(userName); ? ? ? ? printf("\n ? ? ? 請輸入您的密碼(123):"); ? ? ? ? gets(userPWD); ? ? ? ? if ((strcmp(userName,"123")==0) && (strcmp(userPWD,"123")==0))/*驗證用戶名和密碼*/ ? ? ? ? { ? ? ? ? ? ?? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? welcome(); ? ? ? ? ? ? ?printf("\n ? ? ?3秒后自動跳轉(zhuǎn)"); ? ? ? ? ? ? Sleep(3000);? ? ? ? ? ? ? return; ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? if (i < 3) ? ? ? ? ? ? ? ? printf("用戶名或密碼錯誤,請重新輸入!"); ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("您已連續(xù)3次將用戶名或密碼輸錯,系統(tǒng)將退出!"); ? ? ? ? ? ? ? ? exit(1);? ? ? ? ? ? ? } ? ? ? ? } ? ?} } void menu() { ?? ??? ? ?? ? ? STUDENTS stu[20]; ? int choice,sum; ?? ? sum=read_file(stu);?? ? ? ?? ? ? if(sum==0) ? ?{ ? ? ??? ? printf("首先錄入基本庫存信息!按回車后進(jìn)入*****\n"); ? ? ?getch(); ? ? ? ?? ? sum=input(stu,sum); ? ?} ?? ?system("cls"); ? do ? { ? ? ? system("cls");? ? ?? ? ? ?button:?? ? ?? ?? ? ? ?printf("\n\n\n ? ? ? ? ? ? ? ********學(xué)生宿舍信息管理系統(tǒng)********\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?1. 創(chuàng)建學(xué)生宿舍信息\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?2. 打印學(xué)生宿舍信息\n\n"); ?? ? printf(" ? ? ? ? ? ? ? ? ? ? ?3. 查詢學(xué)生宿舍信息\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?4. 修改學(xué)生宿舍信息\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?5. 刪除學(xué)生宿舍信息\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?6. 學(xué)生宿舍信息排序\n\n"); ? ? ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ?0. 退出系統(tǒng)\n\n"); ? ? ?printf(" ? ? ? ? ? ? ? ? ? ? ? 請選擇(0-6):"); ? ? ? ? ? ?scanf("%d",&choice); ? ?? ?? ? ?? ? ? switch(choice) ? ? {?? ? ? ? ? ? case 1: sum=input(stu,sum); break;/*創(chuàng)建學(xué)生信息*/ ? ? ? case 2: output(stu,sum) ; break;/*打印學(xué)生信息*/ ? ? ? case 3: inquire(stu,sum); break;/*查詢學(xué)生信息*/ ? ? ? case 4: change(stu,sum); break;/*修改學(xué)生信息*/ ? ? ? case 5: sum=deletel(stu,sum);break;/*刪除學(xué)生信息*/ ? ? ? case 6: sortStudent(stu,sum); break;/*學(xué)生信息順序*/ ? ? ? ? ? case 0: ?bye();designer();break; ? ? ? default:system("cls"); printf("\n?? ??? ?請輸入正確的指令!\n"); ?? ? ?goto button; ? ? } ? }while(choice!=0); ? save_file(stu,sum); } int main() { ? ? ?? ? pagedis(); ?? ? check(); ?? ? menu(); ?? ? return 0; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載
這篇文章主要介紹了解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09