C語言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)簡單的學(xué)生宿舍基本信息管理,宿舍的基本信息包括樓號(hào)、房間號(hào)、面積、所容納人數(shù)、已入住人數(shù)等,系統(tǒng)以文本菜單形式工作。
登錄時(shí):用戶名為asd 密碼任意
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <ctype.h> #include <malloc.h>? #include <windows.h> #define N sizeof(struct Student)? typedef struct Student { ?? ?int buildnum; ?//宿舍樓棟號(hào)? ?? ?int roomnum; ? //房間號(hào)? ?? ?int brnum; ? ? //宿舍樓棟號(hào)+房間號(hào)? ?? ?float area; ? ?//宿舍房間面積 ?? ?int rnanum; ? ?//所容納人數(shù) ? ?? ?? ?? ?char xy[100]; ?//學(xué)院? ?? ?int bj; ? ? ? ?// 班級(jí) ?? ?int num; ? ? ? //學(xué)號(hào)? ?? ?char name[20]; //姓名 ?? ?char sex[10]; ?//性別? ?? ?int date; ?? ? ? //日期?? ??? ? ?? ?struct Student *next;?? ? }Stu,*stu; int a[1000000];//記錄寢室入住人數(shù)? void save_stu(stu p); void login() { ?? ?system("cls"); ?? ?system("color ?4E"); ?? ?printf("\n\n\n\n\n\n\n############################~歡迎進(jìn)入學(xué)生宿舍管理系統(tǒng)~##########################\n"); ?? ?printf("\n\n\n\t\t\t\t ?★ ★ ★ ★ ★"); ?? ?printf("\n\n\n\n\t\t\t\t\t\tLoading"); ?? ?for(int i=0;i<6;i++) ?? ?{ ?? ??? ?Sleep(400); ?? ??? ?printf("."); ?? ?} ? ? system("cls"); ?? ?char username[10]; ?? ?char password; ?? ?int p=0; ?? ?system("color 6E"); ?? ?printf("\n\n\n ? ==============================歡迎使用=================================\n"); ?? ?for(int i = 0; i < 3; i++) ?? ?{ ? ?? ? ? ? ? printf("\n\n\n\t\t請(qǐng)輸入用戶名:[ ? ? ? ? ? ?]\b\b\b\b\b\b\b\b\b\b\b\b"); ?? ? ? ? ? scanf("%s",username); ?? ??? ?if (strcmp(username,"asd") == 0) ?? ??? ?{ ?? ??? ??? ?printf("\t\t請(qǐng)輸入密碼: ?[ ? ? ? ? ? ?]\b\b\b\b\b\b\b\b\b\b\b\b"); ? ? ? ? ? ? ? while((password=getch()) != '\r')//判斷是否是回車 ? ? ? ? ? ? ? {? ?? ??? ??? ? ? ?p++;? ? ? ? ? ? ? ? ? if(password == 8)//實(shí)現(xiàn)backspace鍵的功能,其中backspace鍵的ascii碼是8 ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? putchar('\b'); ? ? ? ? ? ? ? ? ? ? ? putchar(' '); ? ? ? ? ? ? ? ? ? ? ? putchar('\b'); ? ? ? ? ? ? ? ? ? ? ? if(p>0) ?//最多只能刪到?jīng)]有字符 ? ? ? ? ? ? ? ? ? ? ? p--; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? if(!isdigit(password)&&!isalpha(password))//判斷是否是數(shù)字或字符 ? ?? ??? ??? ??? ??? ?continue; ? ? ? ? ? ? ? ? ? ? putchar('*'); //在屏幕上打印星號(hào) ? ? ? ? ? ? ? } ?? ??? ??? ?printf("\n\n\n ? ===============================登陸成功=================================");? ?? ??? ??? ?Sleep(600); ?? ??? ??? ?return; ? ? ? ? ? ? ? system("pause");? ?? ??? ?} ? ? ? ? ? else? ?? ??? ?{ ?? ??? ??? ?if(i<2) ?? ??? ??? ? ?printf("用戶名錯(cuò)誤,請(qǐng)重新輸入"); ?? ??? ??? ?else ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? printf("\n ? ? 您已連續(xù)3次將用戶名或密碼輸錯(cuò),系統(tǒng)將退出!"); ? ? ? ? ? ? ? ? ? exit(0); ? //關(guān)閉所有文件,終止正在執(zhí)行的進(jìn)程? ? ? ? ? ? ? } ? ?? ??? ?} ? ? ? } ? ? } int menu_select() ?//主菜單選項(xiàng)? { ? ? ? ? ? ? int a; ? ? ? do ?? ?{ ? ? ? ? system("cls"); ?? ??? ?system("color 3E"); ? ? ? ? ? printf("\n\n\t======================學(xué)生宿舍管理系統(tǒng)※※※※※※※※※※※※\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 1. 添加學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 2. 顯示學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 3. 對(duì)學(xué)生信息進(jìn)行排序 ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 4. 查找學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 5. 修改學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 6. 刪除學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t◆◆ ? ? ? ? ? ? 0. 退出系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?◆◆\n\n"); ? ? ? ? ? printf("\t※※※※※※※※※※※※※※※================================\n"); ? ? ? ? ? printf("\t請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-6):"); ? ? ? ? ? scanf("%d",&a); ? ? ? }while(a<0 || a>6);? ? ? return a; ? } ? stu ss() ? ? ?//將文件中的內(nèi)容讀出到鏈表中,返回值為表頭地址? { ?? ?FILE *fp; ? ? ? //文件指針? ?? ?int n = 0; ?? ?stu head = NULL; ?? ?stu p1,p,pr = NULL; ?? ?fp=fopen("student","ab+"); ? ? //以只讀的方式打開文件? ?? ?if(fp == NULL) ?? ?{ ?? ??? ?printf("文件打開失敗 !\n"); ?? ?} ?? ?else ?? ?{ ?? ??? ?while(!feof(fp)) ? ? ? ?//判斷文件位置標(biāo)志是否移動(dòng)到文件末尾? ?? ??? ?{ ?? ??? ? ? ?n++; ?? ??? ? ? ?? ?p = (stu)malloc(N); //向內(nèi)存申請(qǐng)一段空間? ?? ??? ? ? ?fread(p,N,1,fp); ? ? //將fp所指向的文件中的內(nèi)容賦給p? ?? ??? ? ? ?if(n == 1) ?? ??? ??? ?{ ?? ??? ? ? ? ? ?head = p; ?? ??? ? ? ? ? ?p1 = p; ?? ??? ? ? ?} ?? ??? ? ? ?else ? ? ? ? ? ? //創(chuàng)建鏈表? ?? ??? ? ? ?{ ?? ??? ? ? ??? ?pr = p1; ?? ??? ? ? ??? ?p1->next = p; ?? ??? ? ? ??? ?p1 = p; ?? ??? ??? ?} ?? ? ? ?} ?? ?} ? ? if(pr != NULL) ? ? ? ?pr->next = NULL; ? ? else ? ? ? ?head = NULL; ? ? fclose(fp); ? ?//關(guān)閉文件? ? ? return head; ? //返回頭指針? } Student *input(int n) { ? ? int i; ?? ?stu head,p,q;? ?? ?if(n <= 0) ?return NULL; ?? ?p = (stu)malloc(sizeof(Stu)); ?? ?printf("--------------------------------------------------------------------------------\n"); ?? ?printf("樓棟號(hào) 房間號(hào) 樓棟房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期\n");? ?? ?printf("--------------------------------------------------------------------------------\n"); ? ? scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date); ?? ?? ? ? a[p->brnum]++; ?? ?if(a[p->brnum] == p->rnanum) ? ? ? ? ? ? ? ?printf("\n該寢室已入住滿,請(qǐng)安排后面的學(xué)生到其它空余寢室入住\n"); ?? ?head = p; ?? ?save_stu(p); ?? ?for(i = 1;i < n; i++) ?? ?{ ?? ??? ?q = (stu)malloc(sizeof(Stu)); ?? ??? ?printf("--------------------------------------------------------------------------------\n"); ?? ??? ?printf("樓棟號(hào) 房間號(hào) 樓棟房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期\n");? ?? ??? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? scanf("%d%d%d%f%d%s%d%d%s%s%d",&q->buildnum,&q->roomnum,&q->brnum,&q->area,&q->rnanum,&q->xy,&q->bj,&q->num,&q->name,&q->sex,&q->date); ?? ?? ? ? ?printf("\n"); ?? ? ? ?a[q->brnum]++; ?? ? ? ?if(a[q->brnum] == q->rnanum) ? ? ? ? ? ? ? ? { ? ? ? ? ?? ?printf("\n該寢室已入住滿,請(qǐng)安排后面的學(xué)生到其它空余寢室入住\n"); ? ? ? ? ?? ?Sleep(300); ?? ??? ?} ?? ??? ?save_stu(q); ?? ? ? ?p->next = q; ?? ? ? ?p = q; ?? ?} ?? ?p->next=NULL; ?? ?return head; ?? ? } ?? void save_stu(stu p) ? //將p中內(nèi)容寫入文件? { ?? ?FILE *fp; ? ?//文件指針? ?? ?fp = fopen("student","ab"); ? //以追加的方式打開名字為student的二進(jìn)制文件? ?? ?if(fp == NULL) ?? ?{ ?? ??? ?printf("文件打開失敗 !"); ?? ?} ?? ?if(fwrite(p,N,1,fp) != 1) ? //將p所指向的一段大小為N的內(nèi)容存入fp所指向的文件中? ?? ?{ ?? ??? ?printf("寫入錯(cuò)誤 !"); ?? ?} ?? ?fclose(fp); ? ?//關(guān)閉文件 ? }? void output(stu head) ? //輸出學(xué)生信息 { ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? stu p,q; ? ? int n=0; ?? ?head = ss(); ? ? ? p = head; ? ? ? if(head == NULL) ? ? ? { ? ? ? ? ? printf("\n\t\t\t學(xué)生信息為空 !\n"); ? ? ? } ? ? ? else ? ? ? { ? ? ? ? ? for(p = head ;p != NULL ;p = p->next)? ?? ? ? ?{ ?? ? ? ??? ?for(q = head;q != NULL ;q=q->next) ?? ? ? ??? ?{ ?? ? ? ??? ??? ?if(p->brnum == q->brnum) ?? ? ? ??? ??? ? ?n++; ?? ??? ??? ?} ?? ??? ??? ?a[p->brnum]=n; ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date, n);?? ??? ??? ? ?? ??? ??? ?n=0; ?? ? ? ? ? } ? ? ? } ? } ?? int sort_menu() ?//排序選擇菜單 { ? ? ? int a; ? ? ? do ?? ?{ ? ? ? ? ? system("cls"); ? ? ? ? ? printf("\n\n\t\t------------------------------------------------------------\n\n"); ?? ? ? ? ? printf("\t\t\t ▲▲ 1. 按照宿舍房間號(hào)排序\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 2. 按照學(xué)號(hào)排序\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 0. 返回到主菜單\n\n"); ? ? ? ? ? printf("\t\t------------------------------------------------------------\n"); ? ? ? ? ? printf("\t\t請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-2):"); ? ? ? ? ? scanf("%d",&a); ? ? ? } ?? ?while(a<0 || a>2); ? ? ? return a; ? }? ? ? int sort(stu head,int n) ?//排序 { ?? ?FILE *fp; ? ? head = ss(); ? ? ? stu p,q; ? ? ? int buildnum; ?//宿舍樓棟號(hào)? ?? ?int roomnum; ? //房間號(hào)? ?? ?int brnum; ? ? //宿舍樓棟號(hào)+房間號(hào)? ?? ?float area; ? ?//宿舍房間面積 ?? ?int rnanum; ? ?//所容納人數(shù) ? ?? ?? ?? ?char xy[100]; ?//學(xué)院? ?? ?int bj; ? ? ? ?// 班級(jí) ?? ?int num; ? ? ? //學(xué)號(hào)? ?? ?char name[20]; //姓名 ?? ?char sex[10]; ?//性別? ?? ?int date; ? ? ?//日期 ?? ? ? switch(n) ? ? ? { ? ? ? ? ? case 1: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? for(p = head; p != NULL; p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? for(q = p->next; q != NULL; q = q->next) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? if(p->brnum > q->brnum) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? buildnum = q->buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? roomnum = q->roomnum; ?? ??? ??? ??? ??? ??? ?brnum = q->brnum; ?? ??? ??? ??? ??? ??? ?area = q->area; ?? ??? ??? ??? ??? ??? ?rnanum = q->rnanum; ?? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(xy,q->xy); ? ? ? ? ? ? ? ? ? ? ? ? ? bj = q->bj; ? ? ? ? ? ? ? ? ? ? ? ? ? num = q->num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(name,q->name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(sex,q->sex); ?? ??? ??? ??? ??? ??? ?date = q->date; ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? q->buildnum = p->buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? q->roomnum = p->roomnum; ?? ??? ??? ??? ??? ??? ?q->brnum = p->brnum; ?? ??? ??? ??? ??? ??? ?q->area = p->area; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->xy,p->xy); ? ? ? ? ? ? ? ? ? ? ? ? ? q->bj = p->bj; ? ? ? ? ? ? ? ? ? ? ? ? q->num = p->num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->name,p->name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->sex,p->sex); ?? ??? ??? ??? ??? ??? ?q->date = p->date; ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? p->buildnum = buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? p->roomnum = roomnum; ?? ??? ??? ??? ??? ??? ?p->brnum = brnum; ?? ??? ??? ??? ??? ??? ?p->area = area; ?? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->xy,xy); ? ? ? ? ? ? ? ? ? ? ? ? ? p->bj = bj; ? ? ? ? ? ? ? ? ? ? ? ? ? p->num = num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->name,name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->sex,sex); ?? ??? ??? ??? ??? ??? ?p->date = date; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? } ?? ??? ??? ?fp = fopen("student","wb"); ?? ??? ? ? ?if(fp == NULL) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?printf("文件打開失敗 !");? ?? ??? ? ? ?} ?? ??? ? ? ?if(fwrite(head,N,1,fp) != 1) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !");? ?? ??? ? ? ?} ?? ??? ? ? ?fclose(fp); ?? ??? ? ? ?if(head != NULL) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?p = head->next; ?? ??? ??? ? ? ?fp = fopen("student","ab"); ?? ??? ??? ? ? ?if(fp == NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?printf("文件打開失敗 !"); ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?while(p != NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?if(fwrite(p,N,1,fp) != 1) ?? ??? ??? ??? ? ? ?{ ?? ??? ??? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !"); ?? ??? ??? ??? ? ? ?} ?? ??? ??? ??? ? ? ?p = p->next; ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?fclose(fp); ?? ??? ? ? ?} ? ? ? ? ? ? ? ? output(head); ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ?? ? ? ? ? case 2: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? for(p = head; p != NULL; p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? for(q = p->next;q != NULL; q = q->next) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? if(p->num > q->num) ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? buildnum = q->buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? roomnum = q->roomnum; ?? ??? ??? ??? ??? ??? ?brnum = q->brnum; ?? ??? ??? ??? ??? ??? ?area = q->area; ?? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(xy,q->xy); ? ? ? ? ? ? ? ? ? ? ? ? ? bj = q->bj; ? ? ? ? ? ? ? ? ? ? ? ? ? num = q->num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(name,q->name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(sex,q->sex); ? ?? ??? ??? ??? ??? ??? ?date = q->date;? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? q->buildnum = p->buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? q->roomnum = p->roomnum; ?? ??? ??? ??? ??? ??? ?q->brnum = p->brnum; ?? ??? ??? ??? ??? ??? ?q->area = p->area; ?? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->xy,p->xy); ? ? ? ? ? ? ? ? ? ? ? ? ? q->bj = p->bj; ? ? ? ? ? ? ? ? ? ? ? ? ? q->num = p->num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->name,p->name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(q->sex,p->sex); ?? ??? ??? ??? ??? ??? ?q->date = p->date; ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? p->buildnum = buildnum; ? ? ? ? ? ? ? ? ? ? ? ? ? p->roomnum = roomnum; ?? ??? ??? ??? ??? ??? ?p->brnum = brnum; ?? ??? ??? ??? ??? ??? ?p->area = area; ?? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->xy,xy); ? ? ? ? ? ? ? ? ? ? ? ? ? p->bj = bj; ? ? ? ? ? ? ? ? ? ? ? ? ? p->num = num; ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->name,name); ? ? ? ? ? ? ? ? ? ? ? ? ? strcpy(p->sex,sex);? ?? ??? ??? ??? ??? ??? ?p->date = date; ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? } ?? ??? ??? ?fp = fopen("student","wb"); ?? ??? ? ? ?if(fp == NULL) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?printf("文件打開失敗 !");? ?? ??? ? ? ?} ?? ??? ? ? ?if(fwrite(head,N,1,fp) != 1) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !");? ?? ??? ? ? ?} ?? ??? ? ? ?fclose(fp); ?? ??? ? ? ?if(head != NULL) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?p = head->next; ?? ??? ??? ? ? ?fp = fopen("student","ab"); ?? ??? ??? ? ? ?if(fp == NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?printf("文件打開失敗 !"); ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?while(p != NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?if(fwrite(p,N,1,fp) != 1) ?? ??? ??? ??? ? ? ?{ ?? ??? ??? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !"); ?? ??? ??? ??? ? ? ?} ?? ??? ??? ??? ? ? ?p = p->next; ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?fclose(fp); ?? ??? ? ? ?} ? ? ? ? ? ? ? ? output(head); ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 0: ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 0; ? ? ? } ? }? int find_menu() ?//查找菜單 { ? ? ? int a; ? ? ? do ?? ?{ ? ? ? ? ? system("cls"); ? ? ? ? ? printf("\n\n\t\t------------------------------------------------------------\n\n"); ?? ? ? ? ? printf("\t\t\t ▲▲ 1. 按照樓棟房間號(hào)查找(查找同一寢室人員)\n\n"); ? ?? ? ? ? ? printf("\t\t\t ▲▲ 2. 按照學(xué)院查找(查找同一學(xué)院人員)\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 3. 按照班級(jí)查找(查找同一班級(jí)人員)\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 4. 按照學(xué)號(hào)查找\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 5. 按照姓名查找\n\n"); ? ? ? ? ? ? printf("\t\t\t ▲▲ 0. 返回到主菜單\n\n"); ? ? ? ? ? printf("\t\t------------------------------------------------------------\n"); ? ? ? ? ? printf("\t\t請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-5):"); ? ? ? ? ? scanf("%d",&a); ? ? ? }while(a<0 || a>5); ? ? ? return a; ? } ? ? int find(stu head,int n) ?//查找選擇菜單 ? { ? ? ? stu p;? ?? ?head = ss();? ? ? switch(n) ? ? ? { ? ? ? ? ? case 1: ? ? ? ? ? ? ? system("cls"); ?? ? ? ? ? ? ? int sou; ? ? ? ? ? ? ? printf("\n\t\t\t要查找的宿舍房間號(hào)為:"); ? ? ? ? ? ? ? scanf("%d",&sou); ? ? ? ? ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? ? for(p = head ;p != NULL ;p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? if(p->brnum == sou) ? ? ? ? ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ? ? ? ? ? ? ?? ? ? ? ? ? ? } ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 2: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? p = head; ? ? ? ? ? ? ? char d[30]; ? ? ? ? ? ? ? printf("\n\t\t\t要查找的學(xué)院為:"); ? ? ? ? ? ? ? scanf("%s",&d); ? ? ? ? ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? ? for(p = head ;p != NULL ;p = p->next)? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? if(strcmp(p->xy,d) == 0) ? ? ? ? ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ? ? ? ? ? ?? ? ? ? ? ? ? } ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 3: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? int cl; ? ? ? ? ? ? ? printf("\n\t\t\t要查找的班級(jí)為:"); ? ? ? ? ? ? ? scanf("%d",&cl); ? ? ? ? ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? for(p = head ;p != NULL ;p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? if(p->bj == cl) ? ? ? ? ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ? ? ? ? ?? ? ? ? ? ? ? } ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 4: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? int f; ? ? ? ? ? ? ? printf("\n\t\t\t要查找的學(xué)號(hào)為:"); ? ? ? ? ? ? ? scanf("%d",&f); ? ? ? ? ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? for(p = head ;p != NULL ;p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? if(p->num == f) ? ? ? ? ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ? ? ? ? ? ? ?? ? ? ? ? ? ? } ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 5: ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? char g[20]; ? ? ? ? ? ? ? printf("\n\t\t\t要查找的姓名為:"); ? ? ? ? ? ? ? scanf("%s",g); ? ? ? ? ? ? ? printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? for(p = head ;p != NULL ;p = p->next) ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? if(strcmp(p->name, g) == 0) ? ? ? ? ? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 1; ? ? ? ? ? case 0: ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? return 0; ? ? ? } ? } ? ?? int alter(stu head) ?//修改學(xué)生信息? { ? ? FILE *fp; ? ? ? int y; ? ? ? printf("\n\t\t\t請(qǐng)輸入將要修改的學(xué)生的學(xué)號(hào):"); ? ? ? scanf("%d",&y); ? ? ? stu p; ?? ?head = ss(); ? ? ? p = head; ? ? ? while(p != NULL) ? ? ? { ? ? ? ? ? if(y == p->num) ? ? ? ? ? {? ?? ??? ? ? ?printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期 ? 已住人數(shù) ?\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n");? ? ? ? ? ? ? printf("%3d %5d ? %.1f ?%5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]); ?? ??? ??? ?printf("\n\t\t對(duì)信息進(jìn)行修改:\n"); ?? ??? ??? ?printf("--------------------------------------------------------------------------------\n"); ?? ? ? ? ? ?printf("樓棟號(hào) 房間號(hào) 宿舍房間號(hào) 房間面積 容納數(shù) 學(xué)院 ?班級(jí) ?學(xué)號(hào) ? 姓名 ? 性別 ?日期\n");? ?? ? ? ? ? ?printf("--------------------------------------------------------------------------------\n"); ? ? ? ? ? ? scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date); ?? ?? ? ? ? ? ?a[p->brnum]++; ?? ? ? ? ? ?if(a[p->brnum] == p->rnanum) ? ? ? ? ? ? ? ? ? ? ? printf("\n該寢室已入住滿,請(qǐng)安排后面的學(xué)生到其它空余寢室入住\n"); ? ? ? ? ? ? printf("\n"); ? ? ? ? ? } ? ? ? ? ? p = p->next; ? ? ? } ?? ?fp = fopen("student","wb"); ? //以只寫的方式打開名為student的二進(jìn)制文件,打開的同時(shí)清空文件中的內(nèi)容? ?? ?if(fp == NULL) ?? ?{ ?? ??? ?printf("文件打開失敗 !");? ?? ?} ?? ?if(fwrite(head,N,1,fp) != 1) ? //將head寫入fp所指向的文件中? ?? ?{ ?? ??? ?printf("寫入錯(cuò)誤 !");? ?? ?} ?? ?fclose(fp); ? //關(guān)閉文件? ?? ?if(head != NULL) ? //如果head不為空? ?? ?{ ?? ??? ?p = head->next; ? ? //讓p指向第二個(gè)結(jié)點(diǎn)? ?? ??? ?fp = fopen("student","ab"); ? //以追加的方式打開文件? ?? ??? ?if(fp == NULL) ?? ??? ?{ ?? ??? ??? ??? ?printf("文件打開失敗 !"); ?? ??? ?} ?? ??? ?while(p != NULL) ?? ??? ?{ ?? ??? ??? ?if(fwrite(p,N,1,fp) != 1)//將p寫入fp所指向的文件中 ?? ??? ??? ?{ ?? ??? ??? ??? ?printf("寫入錯(cuò)誤 !"); ?? ??? ??? ?} ?? ??? ??? ?p = p->next; ?? ??? ?} ?? ??? ?fclose(fp); ?? ?? ?} ?? ?Sleep(500); ? ? ? } ? ? int del_menu() { ?? ?int a; ? ? ? do ?? ?{ ? ? ? ? ? system("cls"); ? ? ? ? ? printf("\n\n\t\t------------------------------------------------------------\n\n"); ?? ? ? ? ? printf("\t\t\t ▲▲ 1.刪除某個(gè)學(xué)生信息\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 2.刪除全部學(xué)生信息\n\n"); ? ? ? ? ? printf("\t\t\t ▲▲ 0. 返回到主菜單\n\n"); ? ? ? ? ? printf("\t\t------------------------------------------------------------\n"); ? ? ? ? ? printf("\t\t請(qǐng)選擇您要運(yùn)行的選項(xiàng)按(0-2):"); ? ? ? ? ? scanf("%d",&a); ? ? ? } ?? ?while(a<0 || a>2); ? ? ? return a; ? }? ? int del(stu head,int g) ?//刪除學(xué)生信息 {? ? ? FILE *fp; ?? ? ? stu p,q;? ?? ?head = ss();? ? ? p = head; ?? ?q = NULL; ? ? ? ? switch(g) ? ? ? { ? ? ? ? ? case 1: ? ? ? ? ? ? ? system("cls");? ?? ??? ??? ?int x,y;? ? ? ? ? ? ? printf("\n\t\t\t請(qǐng)輸入將要?jiǎng)h除學(xué)生的學(xué)號(hào):");?? ??? ? ? ? ? ? ? ? ? scanf("%d",&y); ?? ? ? ? ? ? ? while(p != NULL && p->num != y) ? ? ? ? ? ? { ? ? ? ? ? ? ?? ?q = p; ?? ??? ??? ??? ?p = p->next;? ?? ??? ??? ??? ?x = p->brnum; ?? ??? ??? ?} ?? ??? ??? ?if(p != NULL) ?? ??? ? ? ?{ ?? ??? ??? ? ? ?if(q == NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?head = head->next; ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?else if(p->next!=NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?q->next = p->next; ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?else ?? ??? ??? ? ? ?q->next=NULL; ?? ??? ? ? ?} ?? ??? ? ? free(p); ?? ??? ? ? printf("\n\t\t\t刪除成功 !\n"); ?? ??? ? ? a[x]--; ?? ??? ? ? fp = fopen("student","wb"); ?? ??? ? ? if(fp == NULL) ?? ??? ? ? { ?? ??? ??? ? ? ?printf("文件打開失敗 !");? ?? ??? ? ? } ?? ??? ? ? if(fwrite(head,N,1,fp) != 1) ?? ??? ? ? { ?? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !");? ?? ??? ? ? } ?? ??? ? ? fclose(fp); ?? ??? ? ? if(head != NULL) ?? ??? ? ? { ?? ??? ??? ? ? ?p = head->next; ?? ??? ??? ? ? ?fp = fopen("student","ab"); ?? ??? ??? ? ? ?if(fp == NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?printf("文件打開失敗 !"); ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?while(p != NULL) ?? ??? ??? ? ? ?{ ?? ??? ??? ??? ? ? ?if(fwrite(p,N,1,fp) != 1) ?? ??? ??? ??? ? ? ?{ ?? ??? ??? ??? ??? ? ? ?printf("寫入錯(cuò)誤 !"); ?? ??? ??? ??? ? ? ?} ?? ??? ??? ??? ? ? ?p = p->next; ?? ??? ??? ? ? ?} ?? ??? ??? ? ? ?fclose(fp); ?? ??? ? ? } ? ? ? ? ? ? ?system("pause"); ? ? ? ? ? ? ?return 1;? ?? ? ? case 2: ?? ? ? ?? ? ? system("cls"); ?? ? ? ?? ? ? head = NULL; ? ? ? ? ? ? ?printf("\n\t\t\t刪除成功 !\n"); ?? ? ? ? ? fp=fopen("student","wb"); ?? ??? ? ? fclose(fp);? ? ? ? ? ? ?system("pause");? ? ? ? ? ? ?return 1; ?? ? ? case ?0:? ? ? ? ? ? ?return 0;? ? ? } } ?? int main() ? ? ? ? ? ? { ? ? ?? ? ? int m,n,x,y,g; ?? ?login(); ? ? ? ? stu head = NULL; ? ? ? ? for(;;) ? ? ? { ? ? ? ? ? switch(menu_select()) ? ? ? ? ? { ? ? ? ? ? ? ? case 1: ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? ? printf("\t\t輸入學(xué)生的個(gè)數(shù)和數(shù)據(jù)(以回車結(jié)束):"); ? ? ? ? ? ? ? ? ? scanf("%d",&n); ? ? ? ? ? ? ? ? ? if(n <= 0) ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? printf("\n\t\t\t請(qǐng)輸入正確的人數(shù) !"); ? ? ? ? ? ? ? ? ? ? ? Sleep(500); ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? head = input(n); ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? case 2: ? ? ? ? ? ? ? ? ? system("cls");? ?? ??? ??? ??? ?system("color 5E");? ? ? ? ? ? ? ? ? output(head); ? ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? ? break; ?? ? ? ? ? ? ? case 3: ? ? ? ? ? ? ? ? ? do ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? x = sort(head,sort_menu()); ? ? ? ? ? ? ? ? ? }while(x != 0); ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? case 4: ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? do ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? y = find(head,find_menu()); ? ? ? ? ? ? ? ? ? }while(y != 0); ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 5: ? ? ? ? ? ? ? ? ? system("cls"); ? ? ? ? ? ? ? ? ? ? alter(head); ? ? ? ? ? ? ? ? ? printf("\n\t\t\t修改成功 !\n"); ? ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 6: ? ? ? ? ? ? ? ? ? system("cls");? ?? ??? ??? ??? ?do ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? g = del(head,del_menu()); ? ? ? ? ? ? ? ? ? }while(g != 0); ? ? ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? case 0: ?? ??? ??? ? ? ?system("cls");?? ? ?? ? ? ? ? ? ? ? ? printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); ?? ??? ??? ??? ?printf("\t\t\t\\(^V^)メ(^V^)/ ?");? ? ? ? ? ? ? ? ? printf("\t謝謝使用 !\n"); ?? ??? ??? ??? ?printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n"); ?? ??? ??? ??? ?Sleep(2000); ?? ??? ??? ??? ?system("cls"); ?? ? ? ? ? ? ? ? ? exit(0); ? ? ? ? ? } ? ? ? } ? }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++?Qt實(shí)現(xiàn)動(dòng)態(tài)增加垂直滾動(dòng)條
本博文源于筆者正在工作的一個(gè)小內(nèi)容,內(nèi)容涉及到為qt動(dòng)態(tài)增加垂直滾動(dòng)條,文章分為三個(gè)部分,問題起源,問題解決方案,問題解決成功效果,思路清晰,文章干貨滿滿,復(fù)制源碼即可使用,需要的朋友可以參考下2023-08-08Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)、密集的散點(diǎn)圖無法顯示問題解決方法
這篇文章主要介紹了Qt圖形圖像開發(fā)之曲線圖表模塊QChart庫坐標(biāo)軸和數(shù)據(jù)不對(duì)應(yīng)、密集的散點(diǎn)圖無法顯示問題解決方法,需要的朋友可以參考下2020-03-03C語言實(shí)現(xiàn)猜數(shù)字游戲的兩種方法
猜數(shù)字小游戲是我們大多數(shù)人學(xué)習(xí)C語言時(shí)都會(huì)了解到的一個(gè)有趣的C語言小游戲,本文就詳細(xì)的介紹一下,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Qt QCompleter自動(dòng)補(bǔ)全的實(shí)現(xiàn)
本文主要介紹了Qt QCompleter自動(dòng)補(bǔ)全的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04