溫馨提示×

溫馨提示×

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

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

C語言怎么實現(xiàn)學生信息管理系統(tǒng)

發(fā)布時間:2021-08-06 14:10:19 來源:億速云 閱讀:164 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C語言怎么實現(xiàn)學生信息管理系統(tǒng)”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“C語言怎么實現(xiàn)學生信息管理系統(tǒng)”這篇文章吧。

具體內(nèi)容如下

#include"stdio.h" //標準的輸入輸出函數(shù)文件頭部說明 
#include"math.h"  // 數(shù)學函數(shù)頭部說明 
#include"string.h" 
#include"stdlib.h" //通過該函數(shù)頭部里的函數(shù),改變控制臺的背景和顏色 
#include"windows.h" //頭文件聲明,下文用到了改變控制臺的寬度和高度 
#define M 100  //宏定義說明 
struct student{ //結(jié)構(gòu)體定義并聲明 
 char name[25]; //姓名 
 char num[25]; //學號 
 char credit[20]; //身份證號 
 char native[35]; //籍貫 
 char tel[25]; //手機號 
 int special; //專業(yè) 
 int banji; //班級 
 int math,yy,wl,cyy,pe; //數(shù)學、英語、物理、C語言、體育 
 double ave;}; //平均分 
//****************************************函數(shù)的聲明******************************************** 
void input(struct student stu[M]); //輸入函數(shù) 
void output(struct student stu[M]); //各類用戶自定義函數(shù)的聲明 
void lookfor(struct student stu[M]); //查詢函數(shù) 
void modify(struct student stu[M]); //修改函數(shù) 
void order(struct student stu[M]); //排序函數(shù) 
void delete_student(struct student stu[M]); //刪除函數(shù) 
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); //延時函數(shù)說明 
//********************************************************************************************** 
int count=0; 
struct student t; 
int main() 
{ 
 int choice,sum; 
 struct student stu[M];  
 system("mode con:cols=400 lines=30000"); //調(diào)節(jié)控制臺的寬度和高度 
 system("color 0b"); //調(diào)節(jié)控制臺的背景和字體顏色 
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歡迎你使用學生信息管理系統(tǒng)\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+ 學生信息管理系統(tǒng)  +\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、退出系統(tǒng)\n"); 
 printf("\t\t\t\t\t\t\t\t\t\t ***************\n"); 
 printf("請輸入你的選擇\n"); 
 scanf("%d",&choice); 
 fflush(stdin); //清除輸入緩沖區(qū) 
 if (choice>9||choice<=0) 
 { 
 sum++; 
 if (sum>=5) 
 { 
 printf("輸入錯誤次數(shù)過多,程序?qū)⒅匦麻_始\n"); 
 system("pause"); //程序暫停 
 system("cls"); //清屏語句 
 goto point1; 
 } 
 } 
 switch (choice) //根據(jù)選擇,調(diào)用不同的函數(shù)來完成不同的任務 
 { 
 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("感謝你使用學生信息管理系統(tǒng),請關(guān)掉程序!!!\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]) //自定義輸入函數(shù) 
{ 
 int len,size; 
 system("cls"); 
 printf("請?zhí)砑右斎雽W生的信息\n"); 
 do { 
 printf("請輸入由11位數(shù)字組成的學生學號\n"); //do-while循環(huán)應用,提示輸入位數(shù)為一確定數(shù) 
 scanf("%s",&stu[count].num); 
 len=strlen(stu[count].num); 
 }while(len!=11); 
 printf("請輸入同學的姓名\n"); 
 scanf("%s",stu[count].name); 
 do { 
 printf("請輸入由18位數(shù)字組成的學生身份證號\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("請輸入所需要的專業(yè)代號:1、計算機科學 2、通信工程 3、網(wǎng)絡工程\n"); //采用如此方法解決了專業(yè)輸入難問題 
 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]) //自定義輸出函數(shù) 
{ 
 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專業(yè)\t\t班級\t數(shù)學\t英語\t物理\tC語言\t體育\t平均分\n"); 
 for (j=0;j<count;j++){ //for循環(huán)控制輸出的個數(shù) 
 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("網(wǎng)絡工程\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])   //自定義查詢學生信息函數(shù) 
{ 
 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) //通過字符函數(shù)對已存入的學生信息進行比較,找出要查看的學生 
 { 
 printf("學號\t\t姓名\t\t身份證號\t籍貫\t手機號\t\t專業(yè)\t\t班級\t數(shù)學\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("網(wǎng)絡工程\t"); 
 printf("%d\t",stu[j].banji); //考慮一個對齊的因數(shù) 
 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]) //自定義修改函數(shù) 
{ 
 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("你確定要修改學生的信息嗎???如果不確定的話,請關(guān)掉本程序吧!!!\n"); 
 printf("選擇課程: 1、數(shù)學 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]) //自定義刪除函數(shù) 
{ 
 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;  //用戶自定義函數(shù)之間的套用 
 case 1:xuehao(stu);break; 
 default:printf("無效的選擇!!!請重新輸入!!!\n");break; 
 } 
 } 
} 
void order(struct student stu[M]) //排序函數(shù)的定義 
{ 
 int j,k,choice,index; 
 system("cls"); 
 printf("請輸入你想要進行排序的方式(所有排序的方式均是降序)!!!\n"); 
 printf("1、數(shù)學 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;} //強制類型轉(zhuǎn)換符號只能用于有操作數(shù),根據(jù)賦值運算中的類型轉(zhuǎn)換問題可知 
 };break; 
 default:printf("無效的選擇!!!請重新輸入!!!\n");break; 
 } 
} 
void xuehao(struct student stu[M])  //自定義通過學號方式刪除學生信息函數(shù) 
{ 
 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("你已經(jīng)刪除成功\n"); 
 } 
 index++;} 
 if (j==count) 
 printf("抱歉!!!沒有你所需要刪除的學生信息!*_*!\n"); 
} 
void xingming(struct student stu[M])  //自定義通過姓名方式刪除學生信息函數(shù) 
{ 
 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("你已經(jīng)刪除成功\n"); 
 } 
 flag++;} 
 if (j==count) 
 printf("抱歉!!!沒有你所需要刪除的學生信息!*_*!\n"); 
} 
void yanshi(char *p)  //延時函數(shù)的定義 
{ 
 while (1) 
 { 
 if (*p!=0) 
 printf("%c",*p++); 
 else 
 break; 
 Sleep(100);  //延時控制間斷語句 
 } 
} 
void filewrite(struct student stu[M])   //寫入文件函數(shù)定義 
{ 
 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("以下操作將會覆蓋已存儲的數(shù)據(jù),確定請輸入'y'或'n'???\n"); 
 scanf("%c",&c); 
 fflush(stdin); 
 } 
 if (c=='y') 
 { 
 if((fp=fopen("d:\\stu.dat","wb"))==NULL) 
 { 
 printf("文件打開錯誤,程序無法進行\(zhòng)n"); 
 exit(0); 
 } 
 for(j=0;j<count;j++) 
 {fwrite(&stu[j],sizeof(struct student),1,fp); 
 } 
 fclose(fp); 
 if(count==0) 
 printf("沒有文件,無法保存\n"); 
 else 
 printf("數(shù)據(jù)存儲完畢\n"); 
 system("pause"); 
 } 
 else 
 return; 
} 
void fileread(struct student stu[M])   //讀取文件信息函數(shù)定義 
{ 
 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("以下操作將會覆蓋已存儲的數(shù)據(jù),確定請輸入'y'或'n'???\n"); 
 scanf("%c",&c); 
 fflush(stdin); 
 } 
 if (c=='y') 
 { 
 if((fp=fopen("d:\\stu.dat","rb"))==NULL) 
 { 
 printf("文件打開錯誤,程序無法進行\(zhòng)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("數(shù)據(jù)讀取完畢!!!\n"); 
 system("pause"); 
 } 
 else 
 return; 
}

以上是“C語言怎么實現(xiàn)學生信息管理系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

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

AI