C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)開(kāi)發(fā)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
程序介紹
運(yùn)行程序時(shí),首先進(jìn)入到菜單部分,菜單部分提供了菜單顯示和輸入功能部分。其運(yùn)行效果如圖所示。在主界面上輸入0——8內(nèi)的數(shù)字,實(shí)現(xiàn)相應(yīng)的功能。
主界面輸入1時(shí),進(jìn)入錄入學(xué)生信息的界面,當(dāng)沒(méi)有存儲(chǔ)記錄時(shí),根據(jù)提示對(duì)學(xué)生的信息進(jìn)行輸入,運(yùn)行效果如圖所示。
在存在學(xué)生信息的情況下繼續(xù)添加學(xué)生信息時(shí),會(huì)首先顯示存在的學(xué)生信息,運(yùn)行效果如圖所示。
主界面輸入2時(shí),進(jìn)入查詢學(xué)生信息模塊,根據(jù)學(xué)生學(xué)號(hào),對(duì)學(xué)生信息進(jìn)行查詢。運(yùn)行效果如圖所示。
在主界面輸入3時(shí),進(jìn)入到刪除學(xué)生信息模塊,輸入需要?jiǎng)h除的學(xué)生學(xué)號(hào),即可在文件中將該學(xué)號(hào)的所有信息刪除,運(yùn)行效果如圖所示。
當(dāng)在主界面輸入4時(shí),系統(tǒng)進(jìn)入到修改學(xué)生信息模塊,首先會(huì)顯示出所有學(xué)生的信息,輸入要修改的學(xué)生學(xué)號(hào),系統(tǒng)會(huì)對(duì)輸入的學(xué)號(hào)進(jìn)行匹配,若在顯示出來(lái)的學(xué)生信息中存在,則會(huì)提示輸入修改的內(nèi)容。運(yùn)行效果如圖所示。
在主界面輸入5時(shí),可以插入學(xué)生信息,根據(jù)提示輸入想要插入的位置,以及插入的學(xué)號(hào)等信息。運(yùn)行效果如圖所示。
在主界面輸入6時(shí),可以根據(jù)學(xué)生的總成績(jī)從高到低進(jìn)行排序。排序完成后,將排序結(jié)果保存,但是排序后的結(jié)果并不現(xiàn)實(shí)在該界面。運(yùn)行效果如圖所示。
當(dāng)在主界面輸入7時(shí),可以對(duì)學(xué)生的人數(shù)進(jìn)行統(tǒng)計(jì),顯示出統(tǒng)計(jì)的人數(shù)。運(yùn)行效果如圖所示。
當(dāng)在主界面輸入8時(shí),可以對(duì)學(xué)生的信息進(jìn)行顯示,運(yùn)行效果如圖所示。該圖為對(duì)成績(jī)進(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é)生成績(jī)結(jié)構(gòu)體*/ {? ?? ?int num;?? ??? ?/*學(xué)號(hào)*/ ? ?? ?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é)生成績(jī)信息*/ void show();?? ??? ??? ?/*顯示學(xué)生信息*/ void order();?? ??? ??? ?/*按總分排序*/ void del();?? ??? ??? ??? ?/*刪除學(xué)生成績(jī)信息*/ void modify();?? ??? ??? ?/*修改學(xué)生成績(jī)信息*/ 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);/*輸入選擇功能的編號(hào)*/ ? ?? ?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)/*打開(kāi)指定文件*/ ? ?? ?{? ?? ? ??? ?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("文件中沒(méi)有記錄!\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é)號(hào)*/ ? ? ?? ?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);/*輸入選修課成績(jī)*/ ? ? ??? ?printf("experiment:"); ?? ? ?? ?scanf("%lf",&stu[m].expe);/*輸入實(shí)驗(yàn)課成績(jī)*/ ? ? ??? ?printf("required course:"); ?? ? ?? ?scanf("%lf",&stu[m].requ);/*輸入必修課成績(jī)*/ ? ? ??? ?stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;/*計(jì)算出總成績(jī)*/ ? ? ??? ?if(fwrite(&stu[m],LEN,1,fp)!=1)/*將新錄入的信息寫入指定的磁盤文件*/ ? ? ??? ?{ ?? ??? ? ?? ?printf("不能保存!"); ?? ??? ? ?? ?getch(); ?? ? ?? ?} ? ? ??? ?else ?? ? ?? ?{ ?? ??? ? ?? ?printf("%s 被保存!\n",stu[m].name); ?? ??? ? ?? ?m++; ?? ? ?? ?} ? ? ??? ?printf("繼續(xù)?(y/n):");/*詢問(wèn)是否繼續(xù)*/ ? ? ??? ?scanf("%s",ch); ? ?? ?} ? ?? ?fclose(fp); ? ?? ?printf("OK!\n"); } void show()?? ??? ??? ??? ?//增加data.txt文件不存在或者文件內(nèi)容為空時(shí)的顯示? ?{? ?? ?FILE *fp; ? ?? ?int i,m=0; ? ?? ?fp=fopen("data.txt","rb"); ? ?? ?? // ??? ?if((fp=fopen("data.txt","a+"))==NULL)/*打開(kāi)指定文件*/ // ??? ?{? //?? ? ??? ?printf("文件不存在!\n"); //?? ? ??? ?return; // ??? ?} // ??? ?fclose(fp); // ??? ?if(m==0) //?? ? ??? ?printf("文件中沒(méi)有記錄!\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請(qǐng)選擇(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("文件中沒(méi)有記錄!\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)成績(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++)/*將重新排好序的內(nèi)容重新寫入指定的磁盤文件中*/ ? ? ? ?? ?if(fwrite(&stu[i] ,LEN,1,fp)!=1) ? ? ? ??? ?{? ? ? ? ? ?? ?printf("%s 不能保存文件!\n");? ? ? ? ? ?? ?getch(); ? ? ? ?? ?} ? ?? ?fclose(fp); ? ?? ?printf("保存成功\n"); } void del()/*自定義刪除函數(shù)*/ ? /*邏輯:首先判斷data.txt文件是否存在,如果存在,繼續(xù)操作,判斷文件是否為空,不為空,則輸入要?jiǎng)h除的學(xué)生學(xué)號(hào);如果文件不存在 ?? ??? ??? ??? ??? ??? ??? ? ? ?返回“文件不存在”,文件內(nèi)容為空則返回“文件中沒(méi)有記錄” ?? ??? ??? ??? ??? ??? ??? ??? ?輸入學(xué)號(hào)----判斷是否有這個(gè)學(xué)號(hào)。有:詢問(wèn)是否刪除,y刪除;n不刪除 ,“找到了記錄,選擇不刪除!”? ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?沒(méi)有:“沒(méi)有找到這名學(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("文件中沒(méi)有記錄!\n");?? ??? ??? ?//data.txt文件存在,但里面沒(méi)有內(nèi)容? ?? ? ??? ?return; ? ?? ?} ?? ? ?? ?printf("請(qǐng)輸入學(xué)生學(xué)號(hào)"); ? ?? ?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];/*將后一個(gè)記錄移到前一個(gè)記錄的位置*/ ?? ? ? ? ? ?? ??? ?m--;/*記錄的總個(gè)數(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("沒(méi)有找到這名學(xué)生!\n");/*未找到要查找的信息*/ ? ?? ??? ?} } void search()/*自定義查找函數(shù)*/?? ??? ??? ?//新增:搜索文件中沒(méi)有的學(xué)號(hào)時(shí)的情況? {? ?? ?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("文件中沒(méi)有記錄!\n"); ?? ? ??? ?return; ?? ?} ? ?? ?printf("請(qǐng)輸入number:"); ? ?? ?scanf("%d",&snum); ? ?? ?for(i=0;i<m;i++) ? ? if(snum==stu[i].num)/*查找輸入的學(xué)號(hào)是否在記錄中*/ ? ? {? ? ? ? ? ? printf("number ?name ? ? ? ? ? elective ? ?experiment ?required ? ?sum\t\n"); ? ? ? ? ? printf(FORMAT,DATA);/*將查找出的結(jié)果按指定格式輸出*/ ?? ? ?break; ? ? } ?? ? ?? ?if(i==m) printf("沒(méi)有找到這名學(xué)生!\n");/*未找到要查找的信息*/ } void modify()/*自定義修改函數(shù)*/?? ??? ??? ?//修正:要修改文件中沒(méi)有記錄的學(xué)號(hào)時(shí),還是說(shuō)“找到了。。?!? { ? ?? ?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("文件中沒(méi)有記錄!\n"); ?? ??? ?fclose(fp); ?? ? ??? ?return; ? ?? ?} ? ?? ?show(); ? ?? ?printf("請(qǐng)輸入要修改的學(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);/*輸入選修課成績(jī)*/ ? ? ? ?? ? ? ?printf("experiment:"); ?? ? ??? ??? ?scanf("%lf",&stu[i].expe);/*輸入實(shí)驗(yàn)課成績(jī)*/ ? ? ? ?? ? ? ?printf("required course:"); ?? ? ??? ??? ?scanf("%lf",&stu[i].requ);/*輸入必修課成績(jī)*/ ?? ? ??? ??? ?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("沒(méi)有找到這名學(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("文件中沒(méi)有記錄!\n"); ? ?? ??? ?fclose(fp); ? ?? ??? ?return; ? ?? ?} ? ?? ?printf("請(qǐng)輸入要插入的位置(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é)號(hào)下面的內(nèi)容 ? ? ? ? ? ??? ?stu[j+1]=stu[j];/*從最后一條記錄開(kāi)始均向后移一位*/ ?? ? ??? ?printf("現(xiàn)在請(qǐng)輸入要插入的學(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("不能打開(kāi)!\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ì)記錄個(gè)數(shù)即學(xué)生個(gè)數(shù)*/ ? ?? ?if(m==0) {printf("no record!\n");fclose(fp);return;} ? ?? ?printf("這個(gè)班級(jí)一共有 %d 名學(xué)生!\n",m);/*將統(tǒng)計(jì)的個(gè)數(shù)輸出*/ ? ?? ?fclose(fp); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 學(xué)生信息管理系統(tǒng)C語(yǔ)言版
- C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(單鏈表)
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- C語(yǔ)言單鏈表版學(xué)生信息管理系統(tǒng)
- C語(yǔ)言學(xué)生信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- C語(yǔ)言版學(xué)生信息管理系統(tǒng)
- C語(yǔ)言學(xué)生信息管理系統(tǒng)小項(xiàng)目
- C語(yǔ)言數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計(jì)
- C語(yǔ)言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(文件版)
- C語(yǔ)言使用鏈表實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
相關(guān)文章
C/C++ 公有繼承、保護(hù)繼承和私有繼承的對(duì)比詳解
這篇文章主要介紹了C/C++ 公有繼承、保護(hù)繼承和私有繼承的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-02-02QT編寫窗口插件實(shí)現(xiàn)調(diào)用窗口的自適應(yīng)
這篇文章主要為大家詳細(xì)介紹了QT編寫窗口插件實(shí)現(xiàn)調(diào)用窗口的自適應(yīng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Qt數(shù)據(jù)庫(kù)應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)分組導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)分組導(dǎo)出,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定參考價(jià)值,需要的可以了解一下2022-06-06C語(yǔ)言實(shí)現(xiàn)計(jì)算器的兩種方法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)計(jì)算器的兩種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01C++中Lambda表達(dá)式的語(yǔ)法與實(shí)例
C++ 11 中的 Lambda 表達(dá)式用于定義并創(chuàng)建匿名的函數(shù)對(duì)象,以簡(jiǎn)化編程工作,下面這篇文章主要給大家介紹了關(guān)于C++中Lambda表達(dá)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10