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)/*將新錄入的信息寫(xiě)入指定的磁盤(pán)文件*/
? ? ??? ?{
?? ??? ? ?? ?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)容重新寫(xiě)入指定的磁盤(pán)文件中*/
? ? ? ?? ?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++)/*將更改后的記錄重新寫(xiě)入指定的磁盤(pán)文件中*/
? ? ? ?? ??? ??? ?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++)/*將新修改的信息寫(xiě)入指定的磁盤(pán)文件中*/
?? ? ??? ??? ?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)/*將修改后的記錄寫(xiě)入磁盤(pán)文件中*/
? ? ? ??? ?{?
?? ??? ? ? 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)文章
Objective-C中使用STL標(biāo)準(zhǔn)庫(kù)Queue隊(duì)列的方法詳解
這篇文章主要介紹了Objective-C中使用STL標(biāo)準(zhǔn)庫(kù)Queue隊(duì)列的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
詳解C++中const_cast與reinterpret_cast運(yùn)算符的用法
這篇文章主要介紹了C++中const_cast與reinterpret_cast運(yùn)算符的用法,經(jīng)常被用于表達(dá)式中的類型轉(zhuǎn)換,需要的朋友可以參考下2016-01-01
opencv3/C++關(guān)于移動(dòng)對(duì)象的輪廓的跟蹤詳解
今天小編就為大家分享一篇opencv3/C++關(guān)于移動(dòng)對(duì)象的輪廓的跟蹤詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
VS2022配置編譯使用boost庫(kù)的實(shí)現(xiàn)
本文介紹了如何在VS2022中配置和編譯使用Boost庫(kù)的步驟,包括下載Boost、解壓、配置環(huán)境變量和編譯等過(guò)程,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)多文本編輯器
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)簡(jiǎn)易的多文本編輯器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2023-03-03
C++ 如何判斷四個(gè)點(diǎn)是否構(gòu)成正方形
這篇文章主要介紹了C++ 如何判斷四個(gè)點(diǎn)是否構(gòu)成正方形的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

