溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于結(jié)構(gòu)體以及宿舍管理系統(tǒng)的設(shè)計

發(fā)布時間:2020-07-17 18:12:09 來源:網(wǎng)絡(luò) 閱讀:525 作者:小佰 欄目:編程語言

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#define PAGE 3

#define MAX 1000

#define N 5

int k=0;

  /*結(jié)構(gòu)體類型*/

typedef struct 

{  int num;/*宿舍號*/

   char name[20];/*姓名*/

         charsex[5];/*性別*/

         intage;/*年齡*/

         charstudentclass[20];/*班級*/

         intscore;/*成績*/

}STUDENTS;

 

int read_file(STUDENTS stu[])

{        FILE*fp;

   int i=0;

         if((fp=fopen("stu.txt","rt"))==NULL)

         {printf("\n\n*****庫存文件不存在!請創(chuàng)");

          return 0;

         }

         while(feof(fp)!=1)

    {

         fread(&stu[i],sizeof(STUDENTS),1,fp);

         if(stu[i].num==0)

                  break;

         else

                  i++;

         }

         fclose(fp);

         returni;

}

void save_file(STUDENTS stu[],int sum)

{FILE*fp;

 inti;

 if((fp=fopen("stu.txt","wb"))==NULL)

 {printf("寫文件錯誤!\n");

 return;

 }

  for(i=0;i<sum;i++)

            if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)

                    printf("寫文件錯誤!\n");

            fclose(fp);

}

 

 

/*創(chuàng)建學(xué)生信息*/

int input(STUDENTS stu[])

{ int i,x;

  for(i=0;i<1000;i++)

   {

   system("cls"); 

   printf("\n\n                 錄入宿舍信息  (最多%d)\n",MAX);

   printf("              ----------------------------\n");

  

       printf("\n                    %d個宿舍",k+1);

             printf("\n 請輸入宿舍號:");

       scanf("%d",&stu[k].num);

       printf("\n 請輸入社長姓名:");

       scanf("%s",stu[k].name);

                printf("\n請輸入人數(shù):");

       scanf("%s",stu[k].sex);

        printf("\n 請輸入班導(dǎo):");  

       scanf("%d",&stu[k].age); 

       printf("\n 請輸入班級:");

       scanf("%s",stu[k].studentclass);  

                  printf("\n 請輸宿舍成績:");

       scanf("%d",stu[k].studentclass);     

       printf("\n 請按1鍵返回菜單或按0鍵繼續(xù)創(chuàng)建");

                  scanf("%d",&x);

                  if(x)

                   break;

   }

     

      return k;

}

 

 

/*刪除學(xué)生信息*/

void deletel(STUDENTS stu[])

  {system("cls");

  char Stuname2[20];

  int i,j;

  printf("請輸入宿舍號:");

  scanf("%s",Stuname2);

  printf("\n");

  for(i=0;i<k;i++)

  if(strcmp(stu[i].name,Stuname2)==0)  

    for(j=0;j<20;j++)

      stu[i].name[j]=stu[i+1].name[j];

  k--;

        

 

  printf("刪除成功\n");

  printf("按任意鍵加回車返回主菜單!");

  scanf("%d",&i);

  getchar();

}

 

/*打印學(xué)生信息*/                                                                                                                                                                                                                                                       

void output(STUDENTS stu[])

{ system("cls");

  int i;

  for(i=0;i<k;i++) 

    printf("宿舍號:%d,社長姓名:%s,人數(shù):%s,班導(dǎo):%d,班級:%s,宿舍成績: %d\n",stu[i].num,stu[i].name,

                   stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

  printf("按任意鍵加回車返回主菜單!");

  scanf("%d",&i);

  getchar();

}

 

/*查詢學(xué)生信息*/

void inquire(STUDENTS stu[])

  {int i;

   int num;

   system("cls");

   printf("     \n\n請輸入您要查找的宿舍號");

   scanf("%d",&num);

   for(i=0;i<k;i++)

     if(num==stu[i].num)

        printf("\n\n\n宿舍號:%d,社長姓名:%s,人數(shù):%s,班導(dǎo):%d,所屬班級:%s,宿舍成績: %d\n",stu[i].num,stu[i].name,

                   stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

   printf("按任意鍵加回車返回主菜單!");

         scanf("%d",&i);

   getchar();

  }

 

 

/*修改學(xué)生信息*/

void change(STUDENTS stu[])

 {  int num,i,choice;

    system("cls");

          printf("\n\n\n      請輸入您要修改的宿舍信息");

    scanf("%d",&num);

    for(i=0;i<k;i++)

    { if(num==stu[i].num)

        printf("\n宿舍號:%d,社長姓名:%s,人數(shù):%s,班導(dǎo):%d,所屬班級:%s,宿舍成績: %d\n",stu[i].num,stu[i].name,

                   stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

 

    printf("\n\n\n     ********請輸入您想要修改的數(shù)據(jù)********\n\n");

    printf("                1. 宿舍號\n\n");

    printf("                2. 社長姓名\n\n");

          printf("                3. 人數(shù)\n\n");

    printf("                4. 班導(dǎo)\n\n");

    printf("                5. 所屬班級\n\n");

    printf("                6. 宿舍成績\n\n");

    printf("                 請選擇(1-6:");

           scanf("%d",&choice);

           switch(choice)

           {case 1:{

                        printf("\n   請輸入你改的新宿舍號");

                   scanf("%d",&stu[i].num);

                              break;

                              }

            case 2:{

                        printf("\n   請輸入你改的宿舍長");

                    scanf("%s",stu[i].name);

                              break;

                             }

            case 3:{

                        printf("\n   請輸入你改的宿舍人數(shù)");

                    scanf("%s",stu[i].sex);

                              break;

                             }

            case 4:{

                        printf("\n   請輸入你改的班導(dǎo)");

                   scanf("%d",&stu[i].age);

                              break;

                             }

            case 5:{

                        printf("\n   請輸入你改的新班級");

                   scanf("%s",stu[i].studentclass);

                              break;

                             }

            case 6:{

                        printf("\n   請輸入你改的新宿舍成績");

                   scanf("%d",&stu[i].score);

                              break;

                             }

           }

          

            printf("宿舍號:%d,姓名:%s,性別:%s,年齡:%d,班級:%s,成績:%d\n",stu[i].num,stu[i].name,

                   stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].score);

      printf("按任意鍵加回車返回主菜單!");

            scanf("%d",&i);

            break;

          }

}

 

 

/*學(xué)生成績信息排名*/

void sort(STUDENTS stu[])

 {  int i,j,n=1,x;

    system("cls");

    int t;

     for(i=0;i<k-1;i++)

                  for(j=i+1;j<k;j++)

                           if(stu[i].score<stu[j].score)

                           {t=stu[i].score;

                             stu[i].score=stu[j].score;

                             stu[j].score=t;

              t=stu[i].num;

                             stu[i].num=stu[j].num;

                             stu[j].num=t;

 

                           }

    for(i=0;i<k;i++)

                  printf("排名    宿舍號    成績\n %d       %d       %d\n",n++,stu[i].num,stu[i].score);

    printf("按任意鍵加回車返回主菜單!");

 scanf("%d",&x);

    getchar();

  }

 

 

void pagedis()

{

  printf(" \n\n\n                  **********************************\n");

  printf("                  *                               *\n");

  printf("                  *                               *\n");

  printf("                  *                               *\n");

  printf("                  *     歡迎進(jìn)入宿舍信息管理系統(tǒng)   *\n");

  printf("                  *                               *\n");

  printf("                  *                               *\n");

  printf("                  *                               *\n");

  printf("                   **********************************\n");

  

}

void check()

{

  char userName[5];/*用戶名*/

  char userPWD[5];/*密碼*/

  int i,sum;

  system("color 4E");

  for(i = 1; i < 4; i++)

   {

     /*用戶名和密碼均為qwerdf;*/

  printf("   用戶名和密碼均為qwerdf\n\n");

        printf("\n       請輸入您的用戶名:");

       gets(userName);

       

       printf("\n       請輸入您的密碼:");

       gets(userPWD);

       

       if ((strcmp(userName,"qwerdf")==0) &&(strcmp(userPWD,"qwerdf")==0))/*驗證用戶名和密碼*/

       {

           printf("用戶名和密碼正確,顯示主菜單");

           return;

       }

       else

       {

           if (i < 3)

           {

                printf("用戶名或密碼錯誤,提示用戶重新輸入");

                printf("用戶名或密碼錯誤,請重新輸入!");

           }

           else

           {

                printf("連續(xù)3次輸錯用戶名或密碼,退出系統(tǒng)。");

                printf("您已連續(xù)3次將用戶名或密碼輸錯,系統(tǒng)將退出!");

                exit(1);

           }

       }

   }

}

void menu()

{

 STUDENTS stu[20];

  intchoice,k,sum;

 sum=read_file(stu);

 if(sum==0)

  {  printf("首先錄入基本庫存信息!按回車后進(jìn)入*****\n");

     getch();

 sum=input(stu);

   }

 

  do

 {  system("cls"); 

    printf("\n\n\n              ********宿舍信息管理系統(tǒng)********\n\n");

    printf("                     1. 創(chuàng)建宿舍學(xué)生信息\n\n");

    printf("                     2. 打印宿舍學(xué)生信息\n\n");

printf("                           3. 查詢宿舍信息\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: k=input(stu); break;/*創(chuàng)建宿舍學(xué)生信息*/

     case 2: output( stu) ; break;/*打印宿舍學(xué)生信息*/

     case 3: inquire(stu); break;/*查詢宿舍信息*/

     case 4: change(stu); break;/*修改學(xué)生宿舍信息*/

     case 5: deletel(stu); break;/*刪除學(xué)生宿舍信息*/

     case 6: sort(stu); break;/* 學(xué)生宿舍成績排序*/

     case 0: break;

    }

 }while(choice!=0);

 save_file(stu,sum);

}

int main()

  inti,sum;

 pagedis();

 check();

  menu();  

  } 



2、總結(jié)與感想:


   該系統(tǒng)是我們學(xué)生的宿舍管理系統(tǒng),主要就是讓我們學(xué)會如何去建立多結(jié)構(gòu)體,和運用選擇系統(tǒng)來去管理我們?nèi)粘I钪械默嵤?,在一套看起來?fù)雜的系統(tǒng)之前,在實際操作,尋求幫助,到最后的完成整套系統(tǒng),我學(xué)會的是對一件事物從目測到實際行動的過程,從一切不懂到查詢資料到我們的互相幫助之間,我們從程序之中獲得的是知識與團(tuán)結(jié)!

    當(dāng)然了,完成程序的編寫后,決不意味著萬事大吉。上機運行時不斷出現(xiàn)麻煩,編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結(jié)果顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機經(jīng)驗分析判斷錯誤所在。遇到的這些問題,總希望一個一個突破的,雖然有些問題解決的不是很完美,不過自己在親自解決后,心里就另是一番滋味了,每搞定一個問題,成就感就油然而生。這讓意識到,要學(xué)好一樣?xùn)|西,關(guān)鍵是要有一定的決心和信心!就好象處事的道理一樣,對于做每件事情之前你應(yīng)該把他想象的是多么的難,然后你心里有個準(zhǔn)備來迎接困難的到來,從而你就會產(chǎn)生一定的動力就會有結(jié)局問題的決心,到了事情真的解決了之后你心里想也不過如此;但是不要把事情想的過于困難,那樣只會讓你產(chǎn)生惰性。


---------------------------------------------

學(xué)號:150809126

 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI