# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltstring.h & gt
# include & ltconio.h & gt
#定義添加3
#定義N 2
結構學生
{
字符編號[10];
字符名稱[10];
char en[10];
char mt[10];
char comp[10];
雙av;
} stu[N];
void creat file();
void insert();
void search 1();
void search 2();
void show();
void平均值();
void fail();
void del();
void sort list();
void sort list 1();
void sort list 2();
void add _ show(void);
FILE * fp
void main()
{ int k;
系統(“cls”);/*清空屏幕*/
While (1) /*主菜單*/
{ printf(" \ n \ n \ n \ n ");
printf(" \ t \ t \ t \ t學生成績管理系統\ n \ n ");
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" \ t \ t * \ t 1-輸入數據* \ n ");
printf(" \ t \ t * \ T2-插入數據* \ n ");
printf(" \ t \ t \ t * \ T3-查詢函數(姓名/學號)* \ n ");
printf(" \ t \ t * \ T4-計算平均分* \ n ");
printf(" \ t \ t \ t * \ t5-顯示失敗的人數* \ n ");
printf(" \ t \ t * \ T6-刪除學生記錄* \ n ");
printf(" \ t \ t * \ T7-排序函數(學號/年級)* \ n ");
printf(" \ t \ t * \ t8-顯示函數* \ n ");
printf(" \ t \ t * \ T9-添加*\n後顯示");
printf(" \ t \ t * \ t0-退出系統* \ n ");
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
CIN & gt;& gtk;
開關(k)
{
案例1:creat file();打破;//輸入數據
案例2: {
Printf("請輸入三組添加的學生信息:\ n \ n \ n ");
insert();
}
打破;//插入數據
案例三:
{ int m;
系統(“cls”);
while(1)
{
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" \ t \ t * \ t 1-名稱查找* \ n ");
printf(" \ t \ t * \ T2-學號搜索* \ n ");
printf(" \ t \ t * \ t0-退出系統* \ n ");
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("請輸入壹個選項\ n ");
CIN & gt;& gtm;
開關(m)
{
案例1:search 1();打破;
案例二:search 2();打破;
案例0:退貨;打破;//退出
默認值:puts(" \ t \ t \ t輸入了錯誤的選項");
printf(" \ t \ t \ t按任意鍵返回");
getchar();
}
系統(“cls”);
}
}
打破;//查詢功能
情況四:平均();打破;//計算平均分
情況五:fail();打破;//顯示失敗的人數。
案例6:del();打破;//刪除學生記錄
案例7:
{
int n;
系統(“cls”);
while(1)
{
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
printf(" \ t \ t * \ t 1-學號排序* \ n ");
printf(" \ t \ t * \ T2-成績排名* \ n ");
printf(" \ t \ t * \ t0-退出系統* \ n ");
printf(" \ t \ t \ t * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
Printf("請輸入壹個選項\ n ");
CIN & gt;& gtn;
開關(n)
{
case 1:sort list 1();打破;//學號排序
案例二:sort list 2();打破;//結果排名
案例0:退貨;打破;//退出
默認值:puts(" \ t \ t \ t輸入了錯誤的選項");
printf(" \ t \ t \ t按任意鍵返回");
getchar();
}
系統(“cls”);
}
}
案例八:show();
打破;
案例九:add _ show();
打破;
案例0:出口(1);打破;
默認值:puts(" \ t \ t \ t輸入了錯誤的選項!");
printf(" \ t \ t \ t按任意鍵返回...");
getchar();}
系統(“cls”);
}
}
Void creatfile() //輸入學生信息。
{
int I;
If ((FP = fopen ("TT。txt "," WB ")= = null)//調用庫函數fopen()檢查文件是否正常打開。
{
Printf("無法打開文件!\ n ");
退出(1);
}
Printf("請輸入學生信息:\ n ");
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
for(I = 0;我& ltn;i++)
{
scanf("%s%s%s%s%s ",stu[i]。num,stu[i]。姓名,斯圖[我]。恩,斯圖[我]。mt,斯圖[我]。comp);
int en=atoi(stu[i])。en);
int mt=atoi(stu[i])。mt);
int comp=atoi(stu[i])。comp);
斯圖[我]。av = double((en+mt+comp)/3.0);
cout & lt& lt"平均值= "
if(fwrite(& amp;stu[i],sizeof(結構學生),1,fp)!=1)
Printf("文件寫入錯誤\ n ");
}
getchar();
fclose(FP);
}
空心嵌件()
{
int I;
If ((FP = fopen ("TT。txt "," a b+ ")= = null)//調用庫函數fopen()檢查文件是否正常打開。
{
Printf("無法打開文件!\ n ");
退出(1);
}
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
struct student g[add];
for(I = 0;我& lt添加;i++)
{
scanf("%s%s%s%s%s ",g[i]。數字,g[i]。名稱,g[i]。恩,g[i]。mt,g[i]。comp);
if(fwrite(& amp;g[i],sizeof(結構學生),1,fp)!=1)
Printf("文件寫入錯誤\ n ");
}
getchar();
fclose(FP);
add _ show();
}
VoidaAverage()//計算平均值。
{
int I;
if((fp=fopen("tt.txt "," r b+ ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);
}
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ t平均成績\ n ");
for(I = 0;我& ltn;i++)
{
int en=atoi(stu[i])。en);
int mt=atoi(stu[i])。mt);
int comp=atoi(stu[i])。comp);
斯圖[我]。av = double((en+mt+comp)/3.0);
}
for(I = 0;我& ltn;i++)
{
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t \ t " & lt& lt斯圖[我]。en & lt& lt" \ t \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t \ t " & lt& lt斯圖[我]。av & lt& ltendl
}
getchar();
fclose(FP);
}
Void fail() //失敗的人數。
{ int v = 0;
if((fp=fopen("tt.txt "," Rb ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);
}
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
for(int I = 0;我& ltn;i++)
{
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
}
cout & lt& lt“* * * * * * * * * *平均成績不及格的學生* * * * * * * *”< & lt;endl
for(I = 0;我& ltn;i++)
{雙p;
p=stu[i]。av;
如果(p & lt60.0){
v++;
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
}
}
cout & lt& lt“失敗的人數是”
getchar();
fclose(FP);
}
Void del() //刪除
{ show();
int j,w,I;
if((fp=fopen("tt.txt "," w b+ ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);
}
cout & lt& lt"請輸入已刪除的學號:";
CIN & gt;& gtw;
for(j = 0;j & ltn;j++){
int num=atoi(stu[j].num);
如果(數量==w)
斯圖[j]。num[0]= ' \ 0 ';
斯圖[j]。name[0]= ' \ 0 ';
斯圖[j]。mt[0]= ' \ 0 ';
斯圖[j]。en[0]= ' \ 0 ';
斯圖[j]。comp[0]= ' \ 0 ';
(char)斯圖[j]。av;
斯圖[j]。av = ' \ 0}
cout & lt& lt”\ n”;
}
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
for(I = 0;我& ltn;i++)
{
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
}
getchar();
fclose(FP);
}
Void sortlist1() //按學號排序。
{
int i,j;
if((fp=fopen("tt.txt "," r b+ ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);}
cout & lt& lt”排序前的順序是\ n”;
for(I = 0;我& ltn;i++)
{
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
printf("%s\t%s\t%s\t%s\t%s ",stu[i]。num,stu[i]。姓名,斯圖[我]。恩,斯圖[我]。mt,斯圖[我]。comp);
cout & lt& ltendl
}
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;
cout & lt& lt”\ n \ n \ n”;
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
結構學生t;
for(I = 0;我& ltn-1;i++)
for(j = 0;j & ltn-1-I;j++)
if(stu[j].num & gt斯圖[j+1]。數字)
{
t = stu[j];
stu[j]= stu[j+1];
stu[j+1]= t;//冒泡
}
for(I = 0;我& ltn;i++)
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
getchar();
fclose(FP);
}
Void sortlist2() //按等級排序
{
int i,j;
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
cout & lt& lt“************按成績排名後的成績* * * * * * * * * * * * \ n”;
cout & lt& lt”\ n \ n \ n”;
if((fp=fopen("d:\\t1.txt "," r b+ ")= = NULL)
{printf("打不開文件!\ n ");退出(1);}
fread(stu,sizeof(struct student),N,FP);
結構學生t;
for(I = 0;我& ltn-1;i++)
for(j = 0;j & ltn-1-I;j++)
if(stu[j].av & gt斯圖[j+1]。av)
{
t = stu[j];
stu[j]= stu[j+1];
stu[j+1]= t;//冒泡
}
for(I = 0;我& ltn;i++)
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
getchar();
fclose(FP);
}
無效顯示()
{
If ((FP = fopen ("TT。txt "," Rb ")= = null)//調用庫函數fopen()檢查文件是否正常打開。
{
Printf("無法打開文件!\ n ");
退出(1);
}
int I;
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
for(I = 0;我& ltn;i++)
{
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
printf("%s\t%s\t%s\t\t%s\t\t%s ",stu[i]。num,stu[i]。姓名,斯圖[我]。恩,斯圖[我]。mt,斯圖[我]。comp);
cout & lt& ltendl
}
getchar();
fclose(FP);
}
Void search1() //按名稱查詢
{
if((fp=fopen("tt.txt "," Rb ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);
}
fread(stu,sizeof(struct student),N,FP);//讀取文件
char x[10];
for(int I = 0;我& lt10;i++)
{
x[I];
}//輸入搜索到的名稱。
for(I = 0;我& ltn;i++)
{if(strcmp(stu[i])。姓名,x)==0)
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
其他
cout & lt& lt“沒有結果”;
}
getchar();
fclose(FP);
}
Void search2() //按學生id搜索
{
int I;
if((fp=fopen("tt.txt "," Rb ")= = NULL)
{
printf("打不開文件!\ n ");
退出(1);
}
fread(stu,sizeof(struct student),N,FP);//讀取文件
int y;
CIN & gt;& gty;
for(I = 0;我& ltn;i++)
{
int num=atoi(stu[i])。num);
如果(數量==y)
cout & lt& lt斯圖[我]。num & lt& lt" \ t " & lt& lt斯圖[我]。名稱& lt& lt" \ t " & lt& lt斯圖[我]。en & lt& lt" \ t " & lt& lt斯圖[我]。mt & lt& lt" \ t " & lt& lt斯圖[我]。comp & lt& lt" \ t " & lt& lt斯圖[我]。av & lt& ltendl
其他
cout & lt& lt“沒有結果”;
}
getchar();
fclose(FP);
}
void add_show()
{
If ((FP = fopen ("TT。txt "," Rb ")= = null)//調用庫函數fopen()檢查文件是否正常打開。
{
Printf("無法打開文件!\ n ");
退出(1);
}
int I;
Printf("學號\ tname \英語成績\ t數學成績\ t計算機成績\ n ");
for(I = 0;我& ltn+add;i++)
{
弗雷德(& ampstu[i],sizeof(struct student),1,FP);
printf("%s\t%s\t%s\t\t%s\t\t%s ",stu[i]。num,stu[i]。姓名,斯圖[我]。恩,斯圖[我]。mt,斯圖[我]。comp);
cout & lt& ltendl
}
getchar();
fclose(FP);
}
妳可以根據自己的需要進行修改。這就是我們在實踐中所做的。