C語言課程設計之學生資訊管理系統,學生管理系統c語言

來源:互聯網
上載者:User

C語言課程設計之學生資訊管理系統,學生管理系統c語言

#include"stdio.h"        //標準的輸入輸出函數檔案頭部說明#include"math.h"              // 數學函數頭部說明#include"string.h"#include"stdlib.h"    //通過該函數頭部裡的函數,改變控制台的背景和顏色#include"windows.h"    //標頭檔聲明,下文用到了改變控制台的寬度和高度#define M 100            //宏定義說明struct student{    //結構體定義並聲明 char name[25];     //姓名 char num[25];     //學號 char credit[20];    //社會安全號碼 char native[35];    //籍貫 char tel[25];     //手機號 int special;     //專業 int banji;      //班級 int math,yy,wl,cyy,pe;   //數學、英語、物理、C語言、體育 double ave;};     //平均分//****************************************函數的聲明********************************************void input(struct student stu[M]);     //輸入函數void output(struct student stu[M]);     //各類使用者自訂函數的聲明void lookfor(struct student stu[M]);    //查詢函數void modify(struct student stu[M]);     //修改函數void order(struct student stu[M]);     //排序函數void delete_student(struct student stu[M]);   //刪除函數void xuehao(struct student stu[M]);     void xingming(struct student stu[M]);void fileread(struct student stu[M]);void filewrite(struct student stu[M]);void yanshi(char *p);        //延時函數說明//**********************************************************************************************int count=0;struct student t;int main() {int choice,sum;struct student stu[M];       system("mode con:cols=400 lines=30000");        //調節控制台的寬度和高度 system("color 0b");      //調節控制台的背景和字型顏色point1:  sum=0;yanshi("\t\t\t\t\t\t\t\t\3\3\3\3\3\3\3\3\3\3\3\3\3歡迎你使用學生資訊管理系統\3\3\3\3\3\3\3\3\3\3\n");do {printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");printf("\t\t\t\t\t\t\t\t+學生資訊管理系統+\n");printf("\t\t\t\t\t\t\t\t-------------------------------------------------\n");printf("\t\t\t\t\t\t\t\t\t\t ***************\n");printf("\t\t\t\t\t\t\t\t\t\t 1、新增學生資訊\n");printf("\t\t\t\t\t\t\t\t\t\t 2、瀏覽學生資訊\n");printf("\t\t\t\t\t\t\t\t\t\t 3、查詢學生資訊\n");printf("\t\t\t\t\t\t\t\t\t\t 4、修改學生資訊\n");printf("\t\t\t\t\t\t\t\t\t\t 5、刪除學生資訊\n");printf("\t\t\t\t\t\t\t\t\t\t 6、排列學生資訊\n"); printf("\t\t\t\t\t\t\t\t\t\t 7、讀取檔案學生\n");//從檔案讀取printf("\t\t\t\t\t\t\t\t\t\t 8、儲存到檔案\n"); //儲存到檔案printf("\t\t\t\t\t\t\t\t\t\t 9、退出系統\n");   printf("\t\t\t\t\t\t\t\t\t\t ***************\n"); printf("請輸入你的選擇\n");scanf("%d",&choice);fflush(stdin);       //清除輸入緩衝區if (choice>9||choice<=0){sum++;if (sum>=5){printf("輸入錯誤次數過多,程式將重新開始\n");system("pause");        //程式暫停system("cls");   //清屏語句goto point1;}}switch (choice)       //根據選擇,調用不同的函數來完成不同的任務{case 1:input(stu);break;       case 2:output(stu);break;case 3:lookfor(stu);break;case 4:modify(stu);break;case 5:delete_student(stu);break;case 6:order(stu);break;case 7:fileread(stu);break;case 8:filewrite(stu);;break;case 9:printf("感謝你使用學生資訊管理系統,請關掉程式!!!\n");system("pause");break;default:printf("無效的選擇!!!請重新輸入!!!\n");break;}}while (choice!=9);printf("the program is over!!!\n"); return 0;}void input(struct student stu[M])      //自訂輸入函數{int len,size;system("cls");printf("請添加要輸入學生的資訊\n");do {printf("請輸入由11位元字組成的學生學號\n");   //do-while迴圈應用,提示輸入位元為一確定數scanf("%s",&stu[count].num);len=strlen(stu[count].num);}while(len!=11);printf("請輸入同學的姓名\n");scanf("%s",stu[count].name);do {printf("請輸入由18位元字組成的學生社會安全號碼\n");   //同上scanf("%s",&stu[count].credit);size=strlen(stu[count].credit);}while(size!=18);printf("請輸入學生的籍貫\n");scanf("%s",&stu[count].native);printf("請輸入學生的手機號碼\n");scanf("%s",&stu[count].tel);printf("請輸入所需要的專業代號:1、電腦科學 2、通訊工程 3、網路工程\n");  //採用如此方法解決了專業輸入難問題scanf("%d",&stu[count].special);printf("請輸入對應的學生班級號碼:1、1301 2、1302 \n");scanf("%d",&stu[count].banji);do {printf("請依次輸入不大於100的學生各科成績\n");scanf("%d%d%d%d%d",&stu[count].math,&stu[count].yy,&stu[count].wl,&stu[count].cyy,&stu[count].pe);}while(stu[count].math>100||stu[count].yy>100||stu[count].wl>100||stu[count].cyy>100||stu[count].pe>100);   //同上同上stu[count].ave=(stu[count].math+stu[count].yy+stu[count].wl+stu[count].cyy+stu[count].pe)/5.0;       //求出平均值count++;}void output(struct student stu[M])     //自訂輸出函數{int j;system("cls");if (count==0){printf("當前已存學生資訊為0個\n");return;}for (j=0;j<count;j++){printf("學號\t\t  姓名\t\t社會安全號碼\t籍貫\t手機號\t\t專業\t\t班級\t數學\t英語\t物理\tC語言\t體育\t平均分\n");for (j=0;j<count;j++){       //for迴圈控制輸出的個數printf("%s\t",stu[j].num);printf("%s\t",stu[j].name);printf("%s\t",stu[j].credit);printf("%s\t",stu[j].native);printf("%s\t",stu[j].tel);if (stu[j].special==1)printf("電腦科學\t");else if (stu[j].special==2)    printf("通訊工程\t");    else    printf("網路工程\t");      printf("%d\t",stu[j].banji);printf("%d\t",stu[j].math);printf("%d\t",stu[j].yy);printf("%d\t",stu[j].wl);printf("%d\t",stu[j].cyy);printf("%d\t",stu[j].pe);printf("%.1lf\t\n",stu[j].ave);}}}void lookfor(struct student stu[M])                   //自訂查詢學生資訊函數{int j,flag=0;char xh[25];system("cls");if (count==0){printf("當前已存學生資訊為0個,無法查詢!!!\n");return;}else{printf("請輸入你想要查看的同學學號\n");scanf("%s",&xh);fflush(stdin);for (j=0;j<count;j++){if (strcmp(stu[j].num,xh)==0)       //通過字元函數對已存入的學生資訊進行比較,找出要查看的學生{printf("學號\t\t姓名\t\t社會安全號碼\t籍貫\t手機號\t\t專業\t\t班級\t數學\t英語\t物理\tC語言\t體育\t平均分\n");printf("%s\t",stu[j].num);printf("%s\t",stu[j].name);printf("%s\t",stu[j].credit);printf("%s\t",stu[j].native);printf("%s\t",stu[j].tel);if (stu[j].special==1)printf("電腦科學\t");else if (stu[j].special==2)printf("通訊工程\t");    else    printf("網路工程\t");printf("%d\t",stu[j].banji);     //考慮一個對齊的因數printf("%d\t",stu[j].math);printf("%d\t",stu[j].yy);printf("%d\t",stu[j].wl);printf("%d\t",stu[j].cyy);printf("%d\t",stu[j].pe);printf("%.1lf\t",stu[j].ave);}}if (j==count)printf("很抱歉,沒有你所需要的學生資訊\n");}}void modify(struct student stu[M])    //自訂修改函數{int j,flag=0,course;char xh[25];system("cls");if (count==0){printf("當前已存學生資訊為0個,無法修改!!!\n");return;}else{printf("請輸入你想要修改的同學學號\n");scanf("%s",&xh);fflush(stdin);for (j=0;j<count;j++)if (strcmp(stu[j].num,xh)==0)        //同上{printf("你確定要修改學生的資訊嗎???如果不確定的話,請關掉本程式吧!!!\n");printf("選擇課程: 1、數學 2、英語 3、物理 4、C語言 5、體育\n");scanf("%d",&course);printf("請輸入你想要修改後的學產生績\n");switch(course){case 1:scanf("%d",&stu[j].math);break;case 2:scanf("%d",&stu[j].yy);break;        //switch控制語句case 3:scanf("%d",&stu[j].wl);break;case 4:scanf("%d",&stu[j].cyy);break;case 5:scanf("%d",&stu[j].pe);break;default:printf("無效的選擇!!!請重新輸入!!!\n");break;} }}}void delete_student(struct student stu[M])        //自訂刪除函數{int choice;system("cls");if (count==0){printf("當前已存學生資訊為0個,無法刪除!!!\n");return;}else{printf("請選擇你所要刪除的方式:1、學號 2、姓名(如果你的姓名是中文,那麼無法刪除,請選擇學號刪除) 3、取消\n");scanf("%d",&choice);switch(choice)            //switch語句對使用者要刪除的方式進行選擇{case 3:return;break;case 2:xingming(stu);break;         //使用者自訂函數之間的套用case 1:xuehao(stu);break;default:printf("無效的選擇!!!請重新輸入!!!\n");break;}}}void order(struct student stu[M])        //排序函數的定義{int j,k,choice,index;system("cls");printf("請輸入你想要進行排序的方式(所有排序的方式均是降序)!!!\n");printf("1、數學 2、英語 3、物理 4、C語言 5、體育 6、平均分\n");scanf("%d",&choice);switch (choice){case 1:for (j=0;j<count;j++)    { index=j; for (k=j+1;k<count;k++)    if (stu[k].math>stu[index].math)    {t=stu[k];stu[k]=stu[index];stu[index]=t;}     };break;case 2:for (j=0;j<count;j++)     { index=j; for (k=j+1;k<count;k++)    if (stu[k].yy>stu[index].yy)    {stu[k]=stu[index];}//整個為排序部分,採用了所謂的選擇排序的方法     };break;case 3:for (j=0;j<count;j++)     { index=j; for (k=j+1;k<count;k++)    if (stu[k].wl>stu[index].wl)    {t=stu[k];stu[k]=stu[index];stu[index]=t;}     };break;case 4:for (j=0;j<count;j++)     { index=j; for (k=j+1;k<count;k++)    if (stu[k].cyy>stu[index].cyy)    {t=stu[k];stu[k]=stu[index];stu[index]=t;}     };break;case 5:for (j=0;j<count;j++)     { index=j; for (k=j+1;k<count;k++)    if (stu[k].pe>stu[index].pe)    {t=stu[k];stu[k]=stu[index];stu[index]=t;}     };break;case 6:for (j=0;j<count;j++)     { index=j; for (k=j+1;k<count;k++)    if (stu[k].ave>stu[index].ave)    {t=stu[k];stu[k]=stu[index];stu[index]=t;}   //強制類型轉換符號只能用於有運算元,根據賦值運算中的類型轉換問題可知     };break;default:printf("無效的選擇!!!請重新輸入!!!\n");break;}}void xuehao(struct student stu[M])           //自訂通過學號方式刪除學生資訊函數{int j,index=0,k=count;char xh[25];system("cls");printf("請輸入你想要刪除的同學學號\n");scanf("%s",xh);fflush(stdin);for (j=0;j<count;j++){ if (strcmp(stu[j].num,xh)==0){for (j=index;j<count;j++)stu[j]=stu[j+1];count--;if (count<k)printf("你已經刪除成功\n");}index++;}if (j==count)printf("抱歉!!!沒有你所需要刪除的學生資訊!*_*!\n");}void xingming(struct student stu[M])           //自訂通過姓名方式刪除學生資訊函數{int flag=0,j,k=count;char xm[25];system("cls");printf("請輸入你想要刪除的同學姓名\n");scanf("%s",xm);fflush(stdin);for (j=0;j<count;j++){if (strcmp(stu[j].num,xm)==0){for (j=flag-1;j<count;j++)             stu[j]=stu[j+1];count--;if (count<k)printf("你已經刪除成功\n");}flag++;}if (j==count)printf("抱歉!!!沒有你所需要刪除的學生資訊!*_*!\n");}void yanshi(char *p)              //延時函數的定義{while (1){if (*p!=0)printf("%c",*p++);elsebreak;Sleep(100);               //延時控制間斷語句}}void filewrite(struct student stu[M])//寫入檔案函數定義{int j=0;char c;FILE *fp;printf("請選擇是否要存入已輸入的學生資訊:'y'還是'n'???\n");scanf("%c",&c);fflush(stdin);while(c!='y'&&c!='n'){if (c!='y'&&c!='n')printf("輸入錯誤,請重新輸入\n");printf("以下操作將會覆蓋已儲存的資料,確定請輸入'y'或'n'???\n");scanf("%c",&c);fflush(stdin);}if (c=='y'){if((fp=fopen("d:\\stu.dat","wb"))==NULL){printf("檔案開啟錯誤,程式無法進行\n");exit(0);}for(j=0;j<count;j++)  {fwrite(&stu[j],sizeof(struct student),1,fp);}fclose(fp);if(count==0)printf("沒有檔案,無法儲存\n");elseprintf("資料存放區完畢\n");system("pause");}elsereturn;}void fileread(struct student stu[M])//讀取檔案資訊函數定義{int j=0;char c;FILE *fp;system("cls");printf("請選擇是否要存入已輸入的學生資訊:'y'還是'n'???\n");scanf("%c",&c);fflush(stdin);while(c!='y'&&c!='n'){if (c!='y'&&c!='n')printf("輸入錯誤,請重新輸入\n");printf("以下操作將會覆蓋已儲存的資料,確定請輸入'y'或'n'???\n");scanf("%c",&c);fflush(stdin);}if (c=='y'){if((fp=fopen("d:\\stu.dat","rb"))==NULL){printf("檔案開啟錯誤,程式無法進行\n");exit(0);}fread(&stu[j],sizeof(struct student),1,fp); count=0;count++;j++;while(fread(&stu[j],sizeof(struct student),1,fp)){j++;count++;}fclose(fp);printf("資料讀取完畢!!!\n");system("pause");}elsereturn;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.