欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計

 更新時間:2022年03月16日 11:03:36   作者:Endless?Road  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)宿舍管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

宿舍管理系統(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++超細(xì)致講解引用

    c++超細(xì)致講解引用

    引用(reference)就是C++對C語言的重要擴(kuò)充。引用就是某一變量(目標(biāo))的一個別名,對引用的操作與對變量直接操作完全一樣
    2022-05-05
  • 帶你了解如何用C++合并兩個有序鏈表

    帶你了解如何用C++合并兩個有序鏈表

    這篇文章主要介紹了c++ 如何合并兩個有序鏈表,小編感覺這篇文章還不錯,希望能幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下
    2021-08-08
  • C語言 存儲類詳解及示例代碼

    C語言 存儲類詳解及示例代碼

    本篇文章主要介紹C語言 存儲類,這里幫大家整理了存儲類的基礎(chǔ)資料,并提供示例代碼和詳細(xì)介紹,有興趣的小伙伴可以參考下
    2016-08-08
  • 《C++ primer plus》讀書筆記(一)

    《C++ primer plus》讀書筆記(一)

    本讀書筆記是C++ primer plus(第六版)前3章的學(xué)習(xí)筆記。非常的淺顯易懂,復(fù)習(xí)C++基礎(chǔ)知識的可以瞄瞄。
    2014-10-10
  • 介紹C語言中tolower函數(shù)的實例

    介紹C語言中tolower函數(shù)的實例

    這篇文章主要介紹了介紹C語言中tolower函數(shù)的實例,本文列出了該函數(shù)的頭文件,功能說明等,以及如何使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言 分支語句詳解分析

    C語言 分支語句詳解分析

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句
    2021-10-10
  • 解析C++中構(gòu)造函數(shù)的默認(rèn)參數(shù)和構(gòu)造函數(shù)的重載

    解析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
  • C++字符串和數(shù)字的去重操作和鞍點的尋找

    C++字符串和數(shù)字的去重操作和鞍點的尋找

    大家好,本篇文章主要講的是C++字符串和數(shù)字的去重操作和鞍點的尋找,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 基于C語言的庫封裝發(fā)布技術(shù)詳解

    基于C語言的庫封裝發(fā)布技術(shù)詳解

    在編程的過程中,使用已經(jīng)封裝好的庫函數(shù)是十分方便的,也是十分高效的,這篇文章主要給大家介紹了關(guān)于C語言庫的封裝和使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Qt編譯OpenCV的實現(xiàn)步驟

    Qt編譯OpenCV的實現(xiàn)步驟

    本文主要介紹了Qt編譯OpenCV的實現(xiàn)步驟,通過詳細(xì)的步驟和說明,幫助開發(fā)者在Qt環(huán)境中成功集成并編譯OpenCV,從而為各類計算機(jī)視覺項目提供強(qiáng)大的支持,感興趣的可以了解一下
    2024-01-01

最新評論