<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現學生資訊管理系統的具體程式碼,供大家參考,具體內容如下
執行程式時,首先進入到選單部分,選單部分提供了選單顯示和輸入功能部分。其執行效果如圖所示。在主介面上輸入0——8內的數位,實現相應的功能。
主介面輸入1時,進入錄入學生資訊的介面,當沒有儲存記錄時,根據提示對學生的資訊進行輸入,執行效果如圖所示。
在存在學生資訊的情況下繼續新增學生資訊時,會首先顯示存在的學生資訊,執行效果如圖所示。
主介面輸入2時,進入查詢學生資訊模組,根據學生學號,對學生資訊進行查詢。執行效果如圖所示。
在主介面輸入3時,進入到刪除學生資訊模組,輸入需要刪除的學生學號,即可在檔案中將該學號的所有資訊刪除,執行效果如圖所示。
當在主介面輸入4時,系統進入到修改學生資訊模組,首先會顯示出所有學生的資訊,輸入要修改的學生學號,系統會對輸入的學號進行匹配,若在顯示出來的學生資訊中存在,則會提示輸入修改的內容。執行效果如圖所示。
在主介面輸入5時,可以插入學生資訊,根據提示輸入想要插入的位置,以及插入的學號等資訊。執行效果如圖所示。
在主介面輸入6時,可以根據學生的總成績從高到低進行排序。排序完成後,將排序結果儲存,但是排序後的結果並不現實在該介面。執行效果如圖所示。
當在主介面輸入7時,可以對學生的人數進行統計,顯示出統計的人數。執行效果如圖所示。
當在主介面輸入8時,可以對學生的資訊進行顯示,執行效果如圖所示。該圖為對成績進行排序後的顯示結果。
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<dos.h> #include<string.h> #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lfn" #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum /** * 結 構 體 */ struct student/*定義學生成績結構體*/ { int num; /*學號*/ char name[15]; /*姓名*/ double elec; /*選修課*/ double expe; /*實驗課*/ double requ; /*必修課*/ double sum; /*總分*/ }; /** * 函數宣告 */ struct student stu[50]; /*定義結構體陣列*/ void in(); /*錄入學生成績資訊*/ void show(); /*顯示學生資訊*/ void order(); /*按總分排序*/ void del(); /*刪除學生成績資訊*/ void modify(); /*修改學生成績資訊*/ void menu(); /*主選單*/ void insert(); /*插入學生資訊*/ void total(); /*計算總人數*/ void search(); /*查詢學生資訊*/ void main() /*主函數*/ { system("color f0n"); //白底黑字 int n; menu(); scanf("%d",&n);/*輸入選擇功能的編號*/ while(n) { switch(n) { case 1: in();break; case 2: search();break; case 3: del();break; case 4: modify();break; case 5: insert();break; case 6: order();break; case 7: total();break; case 8: show();break; default:break; } getch(); menu();/*執行完功能再次顯示選單介面*/ scanf("%d",&n); } } void in()/*錄入學生資訊*/ { int i,m=0;/*m是記錄的條數*/ char ch[2]; FILE *fp;/*定義檔案指標*/ if((fp=fopen("data.txt","a+"))==NULL)/*開啟指定檔案*/ { printf("檔案不存在!n"); return;//直接返回,不在執行 } while(!feof(fp))//判斷是否指向結束符 { if(fread(&stu[m] ,LEN,1,fp)==1) { m++;/*統計當前記錄條數*/ } } fclose(fp); if(m==0) { printf("檔案中沒有記錄!n"); } else { show();/*呼叫show函數,顯示原有資訊*/ } if((fp=fopen("data.txt","wb"))==NULL) { printf("檔案不存在!n"); return; } printf("輸入學生資訊(y/n):"); scanf("%s",ch); while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判斷是否要錄入新資訊*/ { printf("number:"); scanf("%d",&stu[m].num);/*輸入學生學號*/ for(i=0;i<m;i++) if(stu[i].num==stu[m].num) { printf("number已經存在了,按任意鍵繼續!"); getch(); fclose(fp); return; } printf("name:"); scanf("%s",stu[m].name);/*輸入學生姓名*/ printf("elective:"); scanf("%lf",&stu[m].elec);/*輸入選修課成績*/ printf("experiment:"); scanf("%lf",&stu[m].expe);/*輸入實驗課成績*/ printf("required course:"); scanf("%lf",&stu[m].requ);/*輸入必修課成績*/ stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*計算出總成績*/ if(fwrite(&stu[m],LEN,1,fp)!=1)/*將新錄入的資訊寫入指定的磁碟檔案*/ { printf("不能儲存!"); getch(); } else { printf("%s 被儲存!n",stu[m].name); m++; } printf("繼續?(y/n):");/*詢問是否繼續*/ scanf("%s",ch); } fclose(fp); printf("OK!n"); } void show() //增加data.txt檔案不存在或者檔案內容為空時的顯示 { FILE *fp; int i,m=0; fp=fopen("data.txt","rb"); // if((fp=fopen("data.txt","a+"))==NULL)/*開啟指定檔案*/ // { // printf("檔案不存在!n"); // return; // } // fclose(fp); // if(m==0) // printf("檔案中沒有記錄!n"); // return; while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++; } fclose(fp); printf("number name elective experiment required sumtn"); for(i=0;i<m;i++) { printf(FORMAT,DATA);/*將資訊按指定格式列印*/ } } void menu()/*自定義函數實現選單功能*/ { system("cls"); printf("nnnn"); printf("tt|---------------學生資訊管理系統---------------|n"); printf("tt|ttttt |n"); printf("tt|tt 1. 錄入學生資訊t |n"); printf("tt|tt 2. 查詢學生資訊t |n"); printf("tt|tt 3. 刪除學生資訊t |n"); printf("tt|tt 4. 修改學生資訊t |n"); printf("tt|tt 5. 插入學生資訊t |n"); printf("tt|tt 6. 排序tt |n"); printf("tt|tt 7. 統計學生總數t |n"); printf("tt|tt 8. 顯示所有學生資訊t |n"); printf("tt|tt 0. 退出系統tt |n"); printf("tt|ttttt |n"); printf("tt|----------------------------------------------|nn"); printf("ttt請選擇(0-8):"); } void order()/*自定義排序函數*/ { FILE *fp; struct student t; int i=0,j=0,m=0; if((fp=fopen("data.txt","r+"))==NULL) { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m] ,LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("檔案中沒有記錄!n"); return; } if((fp=fopen("data.txt","wb"))==NULL) { printf("檔案不存在!n"); return; } for (i = 0; i < m - 1; i++) for (j = i + 1; j < m; j++)/*雙重回圈實現成績比較並交換*/ if (stu[i].sum < stu[j].sum) { t=stu[i];stu[i]=stu[j];stu[j]=t; } if((fp=fopen("data.txt","wb"))==NULL) { printf("檔案不存在!n"); return; } for(i=0;i<m;i++)/*將重新排好序的內容重新寫入指定的磁碟檔案中*/ if(fwrite(&stu[i] ,LEN,1,fp)!=1) { printf("%s 不能儲存檔案!n"); getch(); } fclose(fp); printf("儲存成功n"); } void del()/*自定義刪除函數*/ /*邏輯:首先判斷data.txt檔案是否存在,如果存在,繼續操作,判斷檔案是否為空,不為空,則輸入要刪除的學生學號;如果檔案不存在 返回「檔案不存在」,檔案內容為空則返回「檔案中沒有記錄」 輸入學號----判斷是否有這個學號。有:詢問是否刪除,y刪除;n不刪除 ,「找到了記錄,選擇不刪除!」 沒有:「沒有找到這名學生!」 */ { FILE *fp; int snum,i,j,m=0; char ch[2]; if((fp=fopen("data.txt","r+"))==NULL) //data.txt檔案不存在 { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("檔案中沒有記錄!n"); //data.txt檔案存在,但裡面沒有內容 return; } printf("請輸入學生學號"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==stu[i].num) { printf("找到了這條記錄,是否刪除?(y/n)"); scanf("%s",ch); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判斷是否要進行刪除*/ { for(j=i;j<m;j++) stu[j]=stu[j+1];/*將後一個記錄移到前一個記錄的位置*/ m--;/*記錄的總個數減1*/ if((fp=fopen("data.txt","wb"))==NULL) { printf("檔案不存在n"); return; } for(j=0;j<m;j++)/*將更改後的記錄重新寫入指定的磁碟檔案中*/ if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("can not save!n"); getch(); } fclose(fp); printf("刪除成功!n"); }else{ printf("找到了記錄,選擇不刪除!"); } break; } else { printf("沒有找到這名學生!n");/*未找到要查詢的資訊*/ } } void search()/*自定義查詢函數*/ //新增:搜尋檔案中沒有的學號時的情況 { FILE *fp; int snum,i,m=0; if((fp=fopen("data.txt","rb"))==NULL) { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("檔案中沒有記錄!n"); return; } printf("請輸入number:"); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==stu[i].num)/*查詢輸入的學號是否在記錄中*/ { printf("number name elective experiment required sumtn"); printf(FORMAT,DATA);/*將查詢出的結果按指定格式輸出*/ break; } if(i==m) printf("沒有找到這名學生!n");/*未找到要查詢的資訊*/ } void modify()/*自定義修改函數*/ //修正:要修改檔案中沒有記錄的學號時,還是說「找到了。。。」 { FILE *fp; struct student t; int i=0,j=0,m=0,snum; if((fp=fopen("data.txt","r+"))==NULL) { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m] ,LEN,1,fp)==1) m++; if(m==0) { printf("檔案中沒有記錄!n"); fclose(fp); return; } show(); printf("請輸入要修改的學生number: "); scanf("%d",&snum); for(i=0;i<m;i++) if(snum==stu[i].num)/*檢索記錄中是否有要修改的資訊*/ { printf("找到了這名學生,可以修改他的資訊!n"); printf("name:"); scanf("%s",stu[i].name);/*輸入名字*/ printf("elective:"); scanf("%lf",&stu[i].elec);/*輸入選修課成績*/ printf("experiment:"); scanf("%lf",&stu[i].expe);/*輸入實驗課成績*/ printf("required course:"); scanf("%lf",&stu[i].requ);/*輸入必修課成績*/ printf("修改成功!"); stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ; if((fp=fopen("data.txt","wb"))==NULL) { printf("can not openn"); return; } for(j=0;j<m;j++)/*將新修改的資訊寫入指定的磁碟檔案中*/ if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("can not save!"); getch(); } fclose(fp); break; } if(i==m) printf("沒有找到這名學生!n");/*未找到要查詢的資訊*/ } void insert()/*自定義插入函數*/ { FILE *fp; int i,j,k,m=0,snum; if((fp=fopen("data.txt","r+"))==NULL) { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("檔案中沒有記錄!n"); fclose(fp); return; } printf("請輸入要插入的位置(number):n"); scanf("%d",&snum);/*輸入要插入的位置*/ for (i = 0; i < m; i++)//遍歷 if (snum == stu[i].num)//判斷是否存在 break; for(j=m-1;j>i;j--)//學號下面的內容 stu[j+1]=stu[j];/*從最後一條記錄開始均向後移一位*/ printf("現在請輸入要插入的學生資訊.n"); printf("number:"); scanf("%d",&stu[i+1].num); for(k=0;k<m;k++)//判斷是否存在 if(stu[k].num==stu[m].num) { printf("number已經存在,按任意鍵繼續!"); getch(); fclose(fp); return; } printf("name:"); scanf("%s",stu[i+1].name); printf("elective:"); scanf("%lf",&stu[i+1].elec); printf("experiment:"); scanf("%lf",&stu[i+1].expe); printf("required course:"); scanf("%lf",&stu[i+1].requ); stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ; printf("插入成功!按任意鍵返回主介面!"); if((fp=fopen("data.txt","wb"))==NULL) { printf("不能開啟!n"); return; } for(k=0;k<=m;k++) if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*將修改後的記錄寫入磁碟檔案中*/ { printf("不能儲存!"); getch(); } fclose(fp); } void total() { FILE *fp; int m=0; if((fp=fopen("data.txt","r+"))==NULL) { printf("檔案不存在!n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; /*統計記錄個數即學生個數*/ if(m==0) {printf("no record!n");fclose(fp);return;} printf("這個班級一共有 %d 名學生!n",m);/*將統計的個數輸出*/ fclose(fp); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45