做家政網(wǎng)站公司名稱網(wǎng)絡銷售好不好做
這個學生成績管理系統(tǒng)使用C語言編寫,具有多項功能以方便管理學生信息和成績。首先從文件中讀取數(shù)據(jù)到系統(tǒng)中,并提供了多種功能(增刪改查等)選項以滿足不同的需求。
學生成績管理系統(tǒng)功能:
- 顯示學生信息
- 增加學生信息
- 刪除學生信息
- 修改學生信息
- 查詢學生信息
- 總分降序排序?qū)W生成績
- 統(tǒng)計學生平均成績
- 統(tǒng)計每科平均成績
- 統(tǒng)計信息錄入系統(tǒng)中人數(shù)
- 輸出總成績最高的學生信息
- 退出
運行示例:
運行之后要自己先往系統(tǒng)里面增加學生數(shù)據(jù)哦
注意:因為設涉及到文件操作,需要把下面文件讀取和保存函數(shù)中的文件位置修改為自己所要保存的文件位置或者按照如下操作建立文件:
-
打開D盤新建一個文件夾名字叫 學生成績管理系統(tǒng) (名字要一模一樣哦)
-
在該文件夾中新建文本文檔命名為 xscjglxt (如下圖:)
目錄
- 1.函數(shù)聲明
- 2.結(jié)構(gòu)體和全局變量定義
- 3.主函數(shù)和主菜單函數(shù)
- 4.顯示學生信息
- 5.增加學生信息
- 6.刪除學生信息
- 7.修改學生信息
- 8.查詢學生信息
- 9.總分降序排序?qū)W生成績
- 10.統(tǒng)計學生平均成績
- 11.統(tǒng)計每科平均成績
- 12.統(tǒng)計信息錄入系統(tǒng)中人數(shù)
- 13.輸出總成績最高的學生信息
- 14.從文件中讀取數(shù)據(jù)(*==注意這里的文件位置要改為自己的==)
- 15.將數(shù)據(jù)保存至文件(*==注意這里的文件位置要改為自己的==)
- 16.源代碼
1.函數(shù)聲明
void regist();//登錄界面
void findid();//按照學號索引查詢
void show();//查看所有的學生成績信息
void del();//刪除學生信息
void edit();//修改學生信息
void add();//添加學生信息
void mysort();//總分降序排序
void avegxs();//查詢學生成績平均值大于90的學生成績
void avegkm();//查詢學生成績平均值小于60的學生成績
void save();//保存學生信息到文件
void load();//從文件讀取學生信息到內(nèi)存
void menu();//菜單總錄入人數(shù)
void maxn();//輸出系統(tǒng)中總成績最大的學生信息
2.結(jié)構(gòu)體和全局變量定義
typedef struct student
{char id[15];//學生學號char name[50];//學生姓名char sex[10];//學生性別char great[50];//學生班級int E,M,Y;//學生的英語、數(shù)學、語文成績float ave;//學生的平均成績int all;//學生的總成績
}student;student students[100];
static int length;//保存當前系統(tǒng)中的人數(shù)
3.主函數(shù)和主菜單函數(shù)
主函數(shù)運行之后首先從文件中讀取學生信息到系統(tǒng)當中,然后顯示系統(tǒng)菜單提供多種功能讓用戶選擇。
//主函數(shù)
int main()
{printf("登陸成功!");load();//從文件中讀取信息到內(nèi)測menu();//菜單
}
void menu()//菜單
{while(1){regist();int n;scanf("%d",&n);switch(n){case 1:show();break;case 2:add();break;case 3:del();break;case 4:edit();break;case 5:findid();break;case 6:mysort();break;case 7:avegxs();break;case 8:avegkm();break;case 9:cens();break;case 10:maxn();break;case 11:exit(0);}save();printf("按任意鍵繼續(xù)\n");getchar();getchar();system("cls");}}
void regist()//登錄界面
{printf("\n\n\t*****************************學生信息管理系統(tǒng)******************************\n");printf("\t* 1.顯示學生信息 *|\n");printf("\t* 2.增加學生信息 *|\n");printf("\t* 3.刪除學生信息 *|\n");printf("\t* 4.修改學生信息 *|\n");printf("\t* 5.查詢學生信息 *|\n");printf("\t* 6.總分降序排序?qū)W生成績 *|\n");printf("\t* 7.統(tǒng)計學生平均成績 *|\n");printf("\t* 8.統(tǒng)計每科平均成績 *|\n");printf("\t* 9.統(tǒng)計信息錄入系統(tǒng)中人數(shù) *|\n");printf("\t* 10.輸出總成績最高的學生信息 *|\n");printf("\t* 11.退出 *|\n");printf("\t***************************************************************************\n");printf("請輸入你要進行的操作:\n");
}
4.顯示學生信息
這里會將系統(tǒng)中所有的學生信息顯示到屏幕上
void show()//查看所有的學生成績信息
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");for(int i =0;i<length;i++){printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");}
}
5.增加學生信息
增加學生信息時會進行判定是否系統(tǒng)當中內(nèi)存已滿或者該學號已存在則不可以添加該學生信息(學號唯一)。
void add()//添加學生信息
{int flag=0;if(length>=100){printf("該班級人數(shù)已滿!!!");}else{printf("請輸入學生信息:\n");printf("學生姓名:");char op[50];scanf("%s",op);printf("學生學號:");char opp[50];scanf("%s",opp);for(int i=0;i<length;i++){if(strcmp(opp,students[i].id)==0)flag=1;}if(flag==1){printf("警告!!!該學號已存在!!!請返回修改!!!");return;}strcpy(students[length].name,op);strcpy(students[length].id,opp);printf("學生班級:");scanf("%s",students[length].great);printf("請輸入學生性別:");scanf("%s",students[length].sex);printf("語文成績:");scanf("%d",&students[length].Y);printf("數(shù)學成績:");scanf("%d",&students[length].M);printf("英語成績:");scanf("%d",&students[length].E);students[length].all=students[length].Y+students[length].M+students[length].E;students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3);length++;}
}
6.刪除學生信息
根據(jù)學生學號對學生信息進行刪除
void del()//刪除學生信息
{printf("請輸入該學生的學號:\n");char op[50];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){for(int j=i;j<length-1;j++)students[j]=students[j+1];flag=1;length--;break;}}if(!flag)printf("不存在該學號學生!!!請重新輸入!!!\n");
}
7.修改學生信息
void edit()//修改學生信息
{printf("請輸入該學生學號:\n");char op[50];char opp[50];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){printf("請輸入該學生新的信息:\n");strcpy(students[i].id,opp);printf("班級:");scanf("%s",students[i].great);printf("性別:");scanf("%s",students[i].sex);printf("語文成績:");scanf("%d",&students[i].Y);printf("數(shù)學成績:");scanf("%d",&students[i].M);printf("英語成績:");scanf("%d",&students[i].E);students[i].ave=(students[i].Y+students[i].E+students[i].M)/3;students[i].all=students[i].Y+students[i].E+students[i].M;flag=1;break;}}if(flag==0)printf("該學生不存在\n");
}
8.查詢學生信息
根據(jù)學號對學生信息進行查詢
void findid()//按照學號索引查詢
{printf("請輸入學生學號:\n");char op[15];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");flag=1;}}if(!flag){printf("不存在該學號的學生\n");}
}
9.總分降序排序?qū)W生成績
通過冒泡排序?qū)W生信息按照學生總成績從高到低進行排序
void mysort()//總分降序排序
{student vis;for(int i=0;i<length;i++)for(int j=0;j<length-i-1;j++){if(students[j].all<students[j+1].all){vis=students[j];students[j]=students[j+1];students[j+1]=vis;}}show();
}
10.統(tǒng)計學生平均成績
void avegxs()//查詢學生成績平均值
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 平均成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");for(int i=0;i<length;i++){//if(students[i].ave>90)//{printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %.2lf \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length);printf("------------------------------------------------------------------------------------------------------------------------\n");//}}
}
11.統(tǒng)計每科平均成績
void avegkm()//查詢各門平均值
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("語文成績 | 數(shù)學成績 | 英語成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");double ans1=0,ans2=0,ans3=0;for(int i=0;i<length;i++){ans1+=students[i].Y;ans2+=students[i].M;ans3+=students[i].E;}ans1=ans1*1.0/length;ans2=ans2*1.0/length;ans3=ans3*1.0/length;printf("\n%.2lf | %.2lf | %.2lf \n",ans1,ans2,ans3);printf("------------------------------------------------------------------------------------------------------------------------\n");}
12.統(tǒng)計信息錄入系統(tǒng)中人數(shù)
void cens()
{printf("系統(tǒng)中共有%d個人的信息\n",length);
}
13.輸出總成績最高的學生信息
void maxn()//查詢學生成績最高的學生信息
{int vis=students[0].all;for(int i=1;i<length;i++){if(students[i].all>vis)vis=students[i].all;}for(int i=0;i<length;i++){if(students[i].all==vis){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");}}
}
14.從文件中讀取數(shù)據(jù)(*注意這里的文件位置要改為自己的)
void load()//從文件讀取學生信息到內(nèi)存
{FILE *fp=fopen("D:\\學生成績管理系統(tǒng)\\xscjglxt.txt","r");if(fp==NULL){printf("文件打開失敗\n");}int i=0;while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n",students[i].id,students[i].name,students[i].great,students[i].sex,&students[i].Y,&students[i].M,&students[i].E,&students[i].ave,&students[i].all)==9){i++;}length=i;fclose(fp);
}
15.將數(shù)據(jù)保存至文件(*注意這里的文件位置要改為自己的)
void save()//保存學生信息到文件
{FILE *fp=fopen("D:\\學生成績管理系統(tǒng)\\xscjglxt.txt","w");for(int i=0;i<length;i++){fprintf(fp,"%s %s %s %s %d %d %d %f %d\n",students[i].id,students[i].name,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].ave,students[i].all);}fclose(fp);
}
16.源代碼
這是博主在兩年前大一時寫的內(nèi)容,代碼中還有許多不足的地方可以優(yōu)化,請大佬們諒解。
有問題歡迎聯(lián)系博主QQ:1187574742
#include<stdio.h>
#include<string.h>
void regist();//登錄界面
void findid();//按照學號索引查詢
void show();//查看所有的學生成績信息
void del();//刪除學生信息
void edit();//修改學生信息
void add();//添加學生信息
void mysort();//總分降序排序
void avegxs();//查詢學生成績平均值大于90的學生成績
void avegkm();//查詢學生成績平均值小于60的學生成績
void save();//保存學生信息到文件
void load();//從文件讀取學生信息到內(nèi)存
void menu();//菜單總錄入人數(shù)
void maxn();//輸出系統(tǒng)中總成績最大的學生信息
typedef struct student
{char id[15];char name[50];char sex[10];char great[50];int E,M,Y;float ave;int all;
}student;student students[100];
static int length;int main()
{printf("登陸成功!");load();//從文件中讀取信息到內(nèi)側(cè)menu();//菜單
}void regist()//登錄界面
{printf("\n\n\t*****************************學生信息管理系統(tǒng)******************************\n");printf("\t* 1.顯示學生信息 *|\n");printf("\t* 2.增加學生信息 *|\n");printf("\t* 3.刪除學生信息 *|\n");printf("\t* 4.修改學生信息 *|\n");printf("\t* 5.查詢學生信息 *|\n");printf("\t* 6.總分降序排序?qū)W生成績 *|\n");printf("\t* 7.統(tǒng)計學生平均成績 *|\n");printf("\t* 8.統(tǒng)計每科平均成績 *|\n");printf("\t* 9.統(tǒng)計信息錄入系統(tǒng)中人數(shù) *|\n");printf("\t* 10.輸出總成績最高的學生信息 *|\n");printf("\t* 11.退出 *|\n");printf("\t***************************************************************************\n");printf("請輸入你要進行的操作:\n");
}
void findid()//按照學號索引查詢
{printf("請輸入學生學號:\n");char op[15];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d\n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");flag=1;}}if(!flag){printf("不存在該學號的學生\n");}
}
void show()//查看所有的學生成績信息
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");for(int i =0;i<length;i++){printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");}
}
void del()//刪除學生信息
{printf("請輸入該學生的學號:\n");char op[50];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){for(int j=i;j<length-1;j++)students[j]=students[j+1];flag=1;length--;break;}}if(!flag)printf("不存在該學號學生!!!請重新輸入!!!\n");
}
void edit()//修改學生信息
{printf("請輸入該學生學號:\n");char op[50];char opp[50];int flag=0;scanf("%s",op);for(int i=0;i<length;i++){if(strcmp(students[i].id,op)==0){printf("請輸入該學生新的信息:\n");strcpy(students[i].id,opp);printf("班級:");scanf("%s",students[i].great);printf("性別:");scanf("%s",students[i].sex);printf("語文成績:");scanf("%d",&students[i].Y);printf("數(shù)學成績:");scanf("%d",&students[i].M);printf("英語成績:");scanf("%d",&students[i].E);students[i].ave=(students[i].Y+students[i].E+students[i].M)/3;students[i].all=students[i].Y+students[i].E+students[i].M;flag=1;break;}}if(flag==0)printf("該學生不存在\n");
}
void add()//添加學生信息
{int flag=0;if(length>=100){printf("該班級人數(shù)已滿!!!");}else{printf("請輸入學生信息:\n");printf("學生姓名:");char op[50];scanf("%s",op);printf("學生學號:");char opp[50];scanf("%s",opp);for(int i=0;i<length;i++){if(strcmp(opp,students[i].id)==0)flag=1;}if(flag==1){printf("警告!!!該學號已存在!!!請返回修改!!!");return;}strcpy(students[length].name,op);strcpy(students[length].id,opp);printf("學生班級:");scanf("%s",students[length].great);printf("請輸入學生性別:");scanf("%s",students[length].sex);printf("語文成績:");scanf("%d",&students[length].Y);printf("數(shù)學成績:");scanf("%d",&students[length].M);printf("英語成績:");scanf("%d",&students[length].E);students[length].all=students[length].Y+students[length].M+students[length].E;students[length].ave=((float)(students[length].Y+students[length].M+students[length].E)/3);length++;}
}
void mysort()//總分降序排序
{student vis;for(int i=0;i<length;i++)for(int j=0;j<length-i-1;j++){if(students[j].all<students[j+1].all){vis=students[j];students[j]=students[j+1];students[j+1]=vis;}}show();
}
void maxn()//查詢學生成績最高的學生信息
{int vis=students[0].all;for(int i=1;i<length;i++){if(students[i].all>vis)vis=students[i].all;}for(int i=0;i<length;i++){if(students[i].all==vis){printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 總成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %d \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all);printf("------------------------------------------------------------------------------------------------------------------------\n");}}
}
void avegxs()//查詢學生成績平均值
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("學生姓名|\t學號\t|\t班級\t| 性別 | 語文成績 | 數(shù)學成績 | 英語成績 | 平均成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");for(int i=0;i<length;i++){//if(students[i].ave>90)//{printf("\n%s\t| %s\t| %s\t| %s | %d | %d | %d | %.2lf \n",students[i].name,students[i].id,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].all*1.0/length);printf("------------------------------------------------------------------------------------------------------------------------\n");//}}
}
void avegkm()//查詢各門平均值
{printf("------------------------------------------------------------------------------------------------------------------------\n");printf("語文成績 | 數(shù)學成績 | 英語成績 \n");printf("------------------------------------------------------------------------------------------------------------------------\n");double ans1=0,ans2=0,ans3=0;for(int i=0;i<length;i++){ans1+=students[i].Y;ans2+=students[i].M;ans3+=students[i].E;}ans1=ans1*1.0/length;ans2=ans2*1.0/length;ans3=ans3*1.0/length;printf("\n%.2lf | %.2lf | %.2lf \n",ans1,ans2,ans3);printf("------------------------------------------------------------------------------------------------------------------------\n");}
void save()//保存學生信息到文件
{FILE *fp=fopen("D:\\學生成績管理系統(tǒng)\\xscjglxt.txt","w");for(int i=0;i<length;i++){fprintf(fp,"%s %s %s %s %d %d %d %f %d\n",students[i].id,students[i].name,students[i].great,students[i].sex,students[i].Y,students[i].M,students[i].E,students[i].ave,students[i].all);}fclose(fp);
}
void load()//從文件讀取學生信息到內(nèi)存
{FILE *fp=fopen("D:\\學生成績管理系統(tǒng)\\xscjglxt.txt","r");if(fp==NULL){printf("文件打開失敗\n");}int i=0;while(fscanf(fp,"%s %s %s %s %d %d %d %f %d\n",students[i].id,students[i].name,students[i].great,students[i].sex,&students[i].Y,&students[i].M,&students[i].E,&students[i].ave,&students[i].all)==9){i++;}length=i;fclose(fp);
}
void cens()
{printf("系統(tǒng)中共有%d個人的信息\n",length);
}
void menu()//菜單
{while(1){regist();int n;scanf("%d",&n);switch(n){case 1:show();break;case 2:add();break;case 3:del();break;case 4:edit();break;case 5:findid();break;case 6:mysort();break;case 7:avegxs();break;case 8:avegkm();break;case 9:cens();break;case 10:maxn();break;case 11:exit(0);}save();printf("按任意鍵繼續(xù)\n");getchar();getchar();system("cls");}}