最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年01月17日 08:40:58   作者:o0非誠勿擾0o  
這篇文章主要為大家詳細介紹了C語言學生信息管理系統(tǒng)設計與實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言學生信息管理系統(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; 
}

更多學習資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談c++性能測試工具之計算時間復雜度

    淺談c++性能測試工具之計算時間復雜度

    有時候除了測量算法的具體性能指數(shù),我們也會希望測試出算法的時間復雜度,以便我們對待測試的算法的性能有一個更加直觀的了解。本文將介紹c++性能測試工具之計算時間復雜度。
    2021-06-06
  • C/C++?Qt數(shù)據(jù)庫與SqlTableModel組件應用教程

    C/C++?Qt數(shù)據(jù)庫與SqlTableModel組件應用教程

    SqlTableModel?組件可以將數(shù)據(jù)庫中的特定字段動態(tài)顯示在TableView表格組件中,這篇文章將主要介紹SqlTableModel組件一些常用的操作,需要的朋友可以參考一下
    2021-12-12
  • C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個和最后一個位置),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt實現(xiàn)屏幕底部冒泡效果

    Qt實現(xiàn)屏幕底部冒泡效果

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)屏幕底部冒泡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++多繼承(多重繼承)的實現(xiàn)

    C++多繼承(多重繼承)的實現(xiàn)

    多繼承容易讓代碼邏輯復雜、思路混亂,本文主要介紹了C++多繼承(多重繼承)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • C語言算法打卡回文串驗證算法題解

    C語言算法打卡回文串驗證算法題解

    這篇文章主要為大家介紹了C語言算法打卡萬人千提的leetcode回文串的驗證算法題解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • C++中防止頭文件重復包含的幾種方法

    C++中防止頭文件重復包含的幾種方法

    在 C/C++ 編程中,當一個項目比較大時,往往都是分文件,這時候有可能不小心把同一個頭文件 include 多次,或者頭文件嵌套包含,這些會導致一系列的問題,如符號重定義、編譯錯誤等,因此,防止頭文件的重復包含是至關(guān)重要的,本文給大家介紹了C++中防止頭文件重復包含的兩種方法
    2024-05-05
  • 淺談C++中對象的復制與對象之間的相互賦值

    淺談C++中對象的復制與對象之間的相互賦值

    這篇文章主要介紹了淺談C++中對象的復制與對象之間的相互賦值,是C語言入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C/C++惡意代碼盤點之文件自動刪除

    C/C++惡意代碼盤點之文件自動刪除

    惡意代碼的分類包括計算機病毒、蠕蟲、木馬等,有些技術(shù)經(jīng)常用到,有的也是必然用到。今天我們就分享一下文件自動刪除,感興趣的可以了解一下
    2022-09-09
  • C語言模擬實現(xiàn)掃雷游戲

    C語言模擬實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言模擬實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評論

日土县| 汝城县| 宿松县| 海丰县| 都昌县| 永年县| 科技| 邮箱| 宜都市| 合肥市| 曲阜市| 微博| 内黄县| 丁青县| 侯马市| 固安县| 武平县| 宜兴市| 禹城市| 读书| 五家渠市| 专栏| 河北省| 皮山县| 永嘉县| 印江| 乌拉特前旗| 凤冈县| 洛阳市| 海门市| 青龙| 盐山县| 通江县| 武宁县| 沙湾县| 忻州市| 乐至县| 桦南县| 元谋县| 永靖县| 潮安县|