C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)開發(fā)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
程序介紹
運(yùn)行程序時,首先進(jìn)入到菜單部分,菜單部分提供了菜單顯示和輸入功能部分。其運(yùn)行效果如圖所示。在主界面上輸入0——8內(nèi)的數(shù)字,實(shí)現(xiàn)相應(yīng)的功能。
主界面輸入1時,進(jìn)入錄入學(xué)生信息的界面,當(dāng)沒有存儲記錄時,根據(jù)提示對學(xué)生的信息進(jìn)行輸入,運(yùn)行效果如圖所示。
在存在學(xué)生信息的情況下繼續(xù)添加學(xué)生信息時,會首先顯示存在的學(xué)生信息,運(yùn)行效果如圖所示。
主界面輸入2時,進(jìn)入查詢學(xué)生信息模塊,根據(jù)學(xué)生學(xué)號,對學(xué)生信息進(jìn)行查詢。運(yùn)行效果如圖所示。
在主界面輸入3時,進(jìn)入到刪除學(xué)生信息模塊,輸入需要刪除的學(xué)生學(xué)號,即可在文件中將該學(xué)號的所有信息刪除,運(yùn)行效果如圖所示。
當(dāng)在主界面輸入4時,系統(tǒng)進(jìn)入到修改學(xué)生信息模塊,首先會顯示出所有學(xué)生的信息,輸入要修改的學(xué)生學(xué)號,系統(tǒng)會對輸入的學(xué)號進(jìn)行匹配,若在顯示出來的學(xué)生信息中存在,則會提示輸入修改的內(nèi)容。運(yùn)行效果如圖所示。
在主界面輸入5時,可以插入學(xué)生信息,根據(jù)提示輸入想要插入的位置,以及插入的學(xué)號等信息。運(yùn)行效果如圖所示。
在主界面輸入6時,可以根據(jù)學(xué)生的總成績從高到低進(jìn)行排序。排序完成后,將排序結(jié)果保存,但是排序后的結(jié)果并不現(xiàn)實(shí)在該界面。運(yùn)行效果如圖所示。
當(dāng)在主界面輸入7時,可以對學(xué)生的人數(shù)進(jìn)行統(tǒng)計(jì),顯示出統(tǒng)計(jì)的人數(shù)。運(yùn)行效果如圖所示。
當(dāng)在主界面輸入8時,可以對學(xué)生的信息進(jìn)行顯示,運(yùn)行效果如圖所示。該圖為對成績進(jìn)行排序后的顯示結(jié)果。
代碼
#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.1lf\n" #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum /** * ?結(jié) 構(gòu) 體 */ struct student/*定義學(xué)生成績結(jié)構(gòu)體*/ {? ?? ?int num;?? ??? ?/*學(xué)號*/ ? ?? ?char name[15];?? ?/*姓名*/ ? ?? ?double elec;?? ?/*選修課*/ ? ?? ?double expe;?? ?/*實(shí)驗(yàn)課*/ ? ?? ?double requ;?? ?/*必修課*/ ? ?? ?double sum;?? ??? ?/*總分*/ }; /** * ?函數(shù)聲明 */ struct student stu[50];?? ?/*定義結(jié)構(gòu)體數(shù)組*/ void in();?? ??? ??? ??? ?/*錄入學(xué)生成績信息*/ void show();?? ??? ??? ?/*顯示學(xué)生信息*/ void order();?? ??? ??? ?/*按總分排序*/ void del();?? ??? ??? ??? ?/*刪除學(xué)生成績信息*/ void modify();?? ??? ??? ?/*修改學(xué)生成績信息*/ void menu();?? ??? ??? ?/*主菜單*/ void insert();?? ??? ??? ?/*插入學(xué)生信息*/ void total();?? ??? ??? ?/*計(jì)算總?cè)藬?shù)*/ void search();?? ??? ??? ?/*查找學(xué)生信息*/ void main()?? ??? ??? ??? ?/*主函數(shù)*/ {? ?? ?system("color f0\n");?? ?//白底黑字 ?? ?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();/*執(zhí)行完功能再次顯示菜單界面*/ ? ? scanf("%d",&n); ? ?? ?} } void in()/*錄入學(xué)生信息*/ {? ?? ?int i,m=0;/*m是記錄的條數(shù)*/ ? ?? ?char ch[2]; ? ?? ?FILE *fp;/*定義文件指針*/ ? ?? ?if((fp=fopen("data.txt","a+"))==NULL)/*打開指定文件*/ ? ?? ?{? ?? ? ??? ?printf("文件不存在!\n"); ?? ? ??? ?return;//直接返回,不在執(zhí)行 ? ?? ?} ? ?? ?while(!feof(fp))//判斷是否指向結(jié)束符 ? ? { ?? ? ??? ?if(fread(&stu[m] ,LEN,1,fp)==1) ? ? ? ? { ?? ??? ? ??? ?m++;/*統(tǒng)計(jì)當(dāng)前記錄條數(shù)*/ ?? ??? ?} ? ?? ?} ? ?? ?fclose(fp); ? ?? ?if(m==0) ? ?? ?{ ?? ? ??? ?printf("文件中沒有記錄!\n"); ?? ?} ? ?? ?else ? ?? ?{?? ? ??? ? ? ? ? ? show();/*調(diào)用show函數(shù),顯示原有信息*/ ? ?? ?} ? ?? ?if((fp=fopen("data.txt","wb"))==NULL) ? ?? ?{ ?? ? ??? ?printf("文件不存在!\n"); ?? ? ??? ?return; ??? ? } ? ?? ?printf("輸入學(xué)生信息(y/n):"); ? ?? ?scanf("%s",ch); ?? ?while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*判斷是否要錄入新信息*/ ?? ?{ ? ? ?? ?printf("number:"); ?? ??? ?scanf("%d",&stu[m].num);/*輸入學(xué)生學(xué)號*/ ? ? ?? ?for(i=0;i<m;i++) ?? ? ? ??? ?if(stu[i].num==stu[m].num) ?? ? ? ??? ?{ ?? ? ? ?? ??? ??? ?printf("number已經(jīng)存在了,按任意鍵繼續(xù)!"); ?? ? ? ??? ??? ?getch(); ?? ? ? ??? ??? ?fclose(fp); ?? ? ? ??? ??? ?return; ?? ? ? ??? ?} ? ? ??? ?printf("name:"); ?? ? ?? ?scanf("%s",stu[m].name);/*輸入學(xué)生姓名*/ ? ? ??? ?printf("elective:"); ? ? ?? ?scanf("%lf",&stu[m].elec);/*輸入選修課成績*/ ? ? ??? ?printf("experiment:"); ?? ? ?? ?scanf("%lf",&stu[m].expe);/*輸入實(shí)驗(yàn)課成績*/ ? ? ??? ?printf("required course:"); ?? ? ?? ?scanf("%lf",&stu[m].requ);/*輸入必修課成績*/ ? ? ??? ?stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*計(jì)算出總成績*/ ? ? ??? ?if(fwrite(&stu[m],LEN,1,fp)!=1)/*將新錄入的信息寫入指定的磁盤文件*/ ? ? ??? ?{ ?? ??? ? ?? ?printf("不能保存!"); ?? ??? ? ?? ?getch(); ?? ? ?? ?} ? ? ??? ?else ?? ? ?? ?{ ?? ??? ? ?? ?printf("%s 被保存!\n",stu[m].name); ?? ??? ? ?? ?m++; ?? ? ?? ?} ? ? ??? ?printf("繼續(xù)?(y/n):");/*詢問是否繼續(xù)*/ ? ? ??? ?scanf("%s",ch); ? ?? ?} ? ?? ?fclose(fp); ? ?? ?printf("OK!\n"); } void show()?? ??? ??? ??? ?//增加data.txt文件不存在或者文件內(nèi)容為空時的顯示? ?{? ?? ?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 ? ?sum\t\n"); ? ??? ?for(i=0;i<m;i++) ? ? {? ?? ? ? printf(FORMAT,DATA);/*將信息按指定格式打印*/ ? ? } } ? void menu()/*自定義函數(shù)實(shí)現(xiàn)菜單功能*/ { ? ?? ?system("cls"); ? ?? ?printf("\n\n\n\n"); ? ?? ?printf("\t\t|---------------學(xué)生信息管理系統(tǒng)---------------|\n"); ? ?? ?printf("\t\t|\t\t\t\t\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 1. 錄入學(xué)生信息\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 2. 查找學(xué)生信息\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 3. 刪除學(xué)生信息\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 4. 修改學(xué)生信息\t ? ? ? |\n"); ??? ?printf("\t\t|\t\t 5. 插入學(xué)生信息\t ? ? ? |\n"); ??? ?printf("\t\t|\t\t 6. 排序\t\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 7. 統(tǒng)計(jì)學(xué)生總數(shù)\t ? ? ? |\n"); ? ?? ?printf("\t\t|\t\t 8. 顯示所有學(xué)生信息\t ? ? ? |\n"); ? ? printf("\t\t|\t\t 0. 退出系統(tǒng)\t\t ? ? ? |\n"); ? ? printf("\t\t|\t\t\t\t\t ? ? ? |\n"); ? ?? ?printf("\t\t|----------------------------------------------|\n\n"); ? ?? ?printf("\t\t\t請選擇(0-8):"); } void order()/*自定義排序函數(shù)*/ {? ?? ?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++)/*雙重循環(huán)實(shí)現(xiàn)成績比較并交換*/ ? ? ? ? ? ? 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++)/*將重新排好序的內(nèi)容重新寫入指定的磁盤文件中*/ ? ? ? ?? ?if(fwrite(&stu[i] ,LEN,1,fp)!=1) ? ? ? ??? ?{? ? ? ? ? ?? ?printf("%s 不能保存文件!\n");? ? ? ? ? ?? ?getch(); ? ? ? ?? ?} ? ?? ?fclose(fp); ? ?? ?printf("保存成功\n"); } void del()/*自定義刪除函數(shù)*/ ? /*邏輯:首先判斷data.txt文件是否存在,如果存在,繼續(xù)操作,判斷文件是否為空,不為空,則輸入要刪除的學(xué)生學(xué)號;如果文件不存在 ?? ??? ??? ??? ??? ??? ??? ? ? ?返回“文件不存在”,文件內(nèi)容為空則返回“文件中沒有記錄” ?? ??? ??? ??? ??? ??? ??? ??? ?輸入學(xué)號----判斷是否有這個學(xué)號。有:詢問是否刪除,y刪除;n不刪除 ,“找到了記錄,選擇不刪除!”? ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?沒有:“沒有找到這名學(xué)生!”? ?? ??? ??? ??? ??? ??? ??? ??? ?*/? {?? ? ?? ?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文件存在,但里面沒有內(nèi)容? ?? ? ??? ?return; ? ?? ?} ?? ? ?? ?printf("請輸入學(xué)生學(xué)號"); ? ?? ?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)/*判斷是否要進(jìn)行刪除*/ ? ? ? ?? ??? ?{ ?? ? ??? ??? ??? ?for(j=i;j<m;j++) ?? ? ? ? ??? ??? ?stu[j]=stu[j+1];/*將后一個記錄移到前一個記錄的位置*/ ?? ? ? ? ? ?? ??? ?m--;/*記錄的總個數(shù)減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("沒有找到這名學(xué)生!\n");/*未找到要查找的信息*/ ? ?? ??? ?} } void search()/*自定義查找函數(shù)*/?? ??? ??? ?//新增:搜索文件中沒有的學(xué)號時的情況? {? ?? ?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)/*查找輸入的學(xué)號是否在記錄中*/ ? ? {? ? ? ? ? ? printf("number ?name ? ? ? ? ? elective ? ?experiment ?required ? ?sum\t\n"); ? ? ? ? ? printf(FORMAT,DATA);/*將查找出的結(jié)果按指定格式輸出*/ ?? ? ?break; ? ? } ?? ? ?? ?if(i==m) printf("沒有找到這名學(xué)生!\n");/*未找到要查找的信息*/ } void modify()/*自定義修改函數(shù)*/?? ??? ??? ?//修正:要修改文件中沒有記錄的學(xué)號時,還是說“找到了。。。”? { ? ?? ?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("請輸入要修改的學(xué)生number: "); ? ?? ?scanf("%d",&snum); ? ?? ?for(i=0;i<m;i++)?? ??? ? ? ?? ? ??? ?if(snum==stu[i].num)/*檢索記錄中是否有要修改的信息*/ ?? ??? ? ?{ ?? ? ??? ??? ?printf("找到了這名學(xué)生,可以修改他的信息!\n");?? ?? ?? ? ??? ??? ?printf("name:"); ?? ? ??? ??? ?scanf("%s",stu[i].name);/*輸入名字*/ ? ? ? ??? ? ? ?? ?printf("elective:"); ?? ? ??? ??? ?scanf("%lf",&stu[i].elec);/*輸入選修課成績*/ ? ? ? ?? ? ? ?printf("experiment:"); ?? ? ??? ??? ?scanf("%lf",&stu[i].expe);/*輸入實(shí)驗(yàn)課成績*/ ? ? ? ?? ? ? ?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 open\n"); ?? ??? ??? ? ?? ?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("沒有找到這名學(xué)生!\n");/*未找到要查找的信息*/?? ? } void insert()/*自定義插入函數(shù)*/ {? ?? ?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--)//學(xué)號下面的內(nèi)容 ? ? ? ? ? ??? ?stu[j+1]=stu[j];/*從最后一條記錄開始均向后移一位*/ ?? ? ??? ?printf("現(xiàn)在請輸入要插入的學(xué)生信息.\n"); ? ? ? ? ? ?? ?printf("number:"); ?? ? ??? ?scanf("%d",&stu[i+1].num); ?? ? ??? ?for(k=0;k<m;k++)//判斷是否存在 ?? ? ? ??? ?if(stu[k].num==stu[m].num) ?? ? ? ??? ?{ ?? ? ? ??? ??? ?printf("number已經(jīng)存在,按任意鍵繼續(xù)!"); ?? ? ? ??? ??? ?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++;?? ??? ??? ?/*統(tǒng)計(jì)記錄個數(shù)即學(xué)生個數(shù)*/ ? ?? ?if(m==0) {printf("no record!\n");fclose(fp);return;} ? ?? ?printf("這個班級一共有 %d 名學(xué)生!\n",m);/*將統(tǒng)計(jì)的個數(shù)輸出*/ ? ?? ?fclose(fp); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 學(xué)生信息管理系統(tǒng)C語言版
- C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)
- C語言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語言單鏈表版學(xué)生信息管理系統(tǒng)
- C語言學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- C語言版學(xué)生信息管理系統(tǒng)
- C語言學(xué)生信息管理系統(tǒng)小項(xiàng)目
- C語言數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(文件版)
- C語言使用鏈表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
相關(guān)文章
QT編寫窗口插件實(shí)現(xiàn)調(diào)用窗口的自適應(yīng)
這篇文章主要為大家詳細(xì)介紹了QT編寫窗口插件實(shí)現(xiàn)調(diào)用窗口的自適應(yīng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定參考價值,需要的可以了解一下2022-06-06