#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
void look(); /*聲明查看函數(shù)*/
void save(); /*聲明保存函數(shù)*/
void search_name(); /*聲明按姓名查看函數(shù)*/
void search_number(); /*聲明按學號查看函數(shù)*/
void order(); /*聲明排序函數(shù)*/
void del(); /*聲明刪除函數(shù)*/
int openl(); /*聲明打開函數(shù)*/
void welcome(); /*聲明我的個人信息函數(shù)*/
void type(); /*聲明輸入函數(shù)*/
void see(); /*聲明打開并查看文件函數(shù)*/
struct student /*定義學生信息的結構體類型*/
{
char num[15]; /*學號*/
char name[20]; /*姓名*/
char sex[4]; /*性別*/
int english; /*英語成績*/
int math; /*數(shù)學成績*/
int chinese; /*語文成績*/
float aver; /*平均成績*/
float sum; /*總成績*/
}stu[100];
int n; /*聲明一個全局變量*/
void main() /*主函數(shù)即用戶的操作界面*/
{
system("color 1E"); /*設計文本顏色*/
int b,flag=0; /*聲明局部變量*/
while(1) /*循環(huán)輸出以下信息*/
{
printf("\n\t\t\t歡迎來到學生成績管理系統(tǒng)!\n");
printf("\n\t\t\t\t ###制作\n");
printf("\t\t\t-------------------------------\n");
printf("\t\t\t1.鍵入學生的信息\n\n"); /*鍵入學生的信息*/
printf("\t\t\t2.查看錄入的學生信息\n\n"); /*查看錄入的學生信息*/
printf("\t\t\t3.按姓名查看學生的信息\n\n"); /*按姓名查看學生的信息*/
printf("\t\t\t4.按學號查看學生的信息\n\n"); /*按學號查看學生的信息*/
printf("\t\t\t5.按平均成績排序\n\n"); /*排序*/
printf("\t\t\t6.刪除學生信息\n\n"); /*刪除學生信息*/
printf("\t\t\t7.保存學生信息\n\n"); /*保存*/
printf("\t\t\t8.打開文件\n\n"); /*打開文件*/
printf("\t\t\t9.我的個人信息\n\n"); /*我的個人信息*/
printf("\t\t\t0.退出\n\n"); /*退出*/
printf("\t\t\t請輸入你的選擇:");
scanf("%d",b);
switch(b)
{
case 1:type();break; /*調用鍵入學生信息函數(shù)*/
case 2:look();break; /*調用查看函數(shù)*/
case 3:search_name();break; /*調用姓名查看函數(shù)*/
case 4:search_number();break; /*調用學號查看函數(shù)*/
case 5:order();break; /*調用排序函數(shù)*/
case 6:del();break;/*調用刪除函數(shù)*/
case 7:save();break;/*調用保存函數(shù)*/
case 8:see();break;/*調用打開文件函數(shù)*/
case 9:welcome();break;/*調用我的個人信息函數(shù)*/
case 0:flag=1;break;/*退出SWITCH語句*/
default :printf("錯誤!");
}
if(flag) break; /*如果選擇0就退出循環(huán)*/
}
}
void welcome() /*我的個人信息函數(shù)*/
{
system("CLS");
printf("\n\n\t\t------------個人信息------------"); /*在屏幕上輸出一下信息*/
printf("\n\n\n\n\t\t姓名:###");
printf("\t\t\tSex:#\n");
printf("\t\t年齡:#\n");
printf("\n\t\t\t--------學習經(jīng)歷--------\n\n\n");
printf("\t\t小學:######\n\n");
printf("\t\t初中:#####\n\n");
printf("\t\tS高中:######\n\n");
printf("\t\t大學:######\n\n");
printf("\n\n\t\t按任意鍵返回歡迎屏幕!");
getch(); /*按任意鍵返回主函數(shù)*/
}
void type() /*定義鍵入學生信息函數(shù)*/
{
system("CLS");
int i; /*定義局部變量*/
printf("\t\t輸出你想輸入的學生信息個數(shù):");
scanf("%d",n);
for(i=0;i
{
printf("\n\t\t\t----------------\n");
printf("\t\t\t學號:");
scanf("%s",stu[i].num); /*輸入學號*/
printf("\t\t\t姓名:");
scanf("%s",stu[i].name); /*輸入姓名*/
printf("\t\t\t性別:");
scanf("%S",stu[i].sex); /*輸入性別*/
printf("\t\t\t英語:");
scanf("%d",stu[i].english); /*輸入英語成績*/
printf("\t\t\t數(shù)學:");
scanf("%d",stu[i].math); /*輸入數(shù)學成績*/
printf("\t\t\t語文:");
scanf("%d",stu[i].chinese); /*輸入語文成績*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*計算平均成績*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*計算總成績*/
printf("\t\t\t平均成績=%4.1f\n",stu[i].aver); /*輸出平均成績*/
printf("\t\t\t總成績=%4.1f\n",stu[i].sum); /*輸出總成績*/
}
printf("\n\n\t\t\t按任意鍵返回菜單!!");
getch();
save();
}
void save() /*建立保存文件函數(shù)*/
{
system("CLS");
FILE *fp; /*定義文件型指針*/
int i;
if((fp=fopen("student.txt","wb"))==NULL) /*打開輸出文件*/
{
printf("不能打開文件!\n");
return; /*終止程序*/
}
for(i=0;i
if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)
printf("文件寫入錯誤\n");
fclose(fp); /*關閉文件*/
printf("\n\n\n\n\t\t\t學生信息保存成功!\n");
printf("\n\n\n\n\t\t\t按任意鍵返回菜單!!");
getch();
}
void look() /*定義查看函數(shù)*/
{
system("CLS");
int i;
//n=openl(); /*調用openl函數(shù)*/
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
{
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese管理系統(tǒng),stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();
}
void search_name() /*按姓名查看函數(shù)*/
{
system("CLS");
int i;
char name[20]; /*聲明字符數(shù)組*/
printf("\t\t\t請輸入學生姓名:\n");
scanf("%s",name);
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
if(strcmp(stu[i].name,name)==0) /*將輸入的姓名與結構體中的姓名進行比較*/
{
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意鍵返回菜單");
}
getch();
}
void search_number() /*定義按學號查看函數(shù)*/
{
system("CLS");
int i;
char number[15]; /*聲明字符數(shù)組*/
printf("\t\t\t請輸入學號:\n");
scanf("%s",number);
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
if(strcmp(stu[i].num,number)==0) /*將輸入的學號與結構體中的學號進行比較*/
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese管理系統(tǒng),stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();
}
void order() /*定義排序函數(shù)*/
{
system("CLS");
int i,j;
char a;
struct student temp; /*聲明結構體變量*/
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
{
for(j=i+1;j
if(stu[i].sum
{
temp=stu[i];
stu[i]= stu[j];
stu[j]=temp;
}
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
void del() /*定義刪除學生信息函數(shù)*/
{
int i;
char a;
char name[20];
system("CLS");
printf("\t\t\t輸入學生名字:\n");
scanf("%s",name);
system("CLS");
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
if(strcmp(stu[i].name,name)==0)
{
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf("真的刪除?(y or n)");
getchar();
scanf("%c",a);
if(a=='y') /*是否刪除該信息*/
{
for(;i
stu[i]=stu[i+1];
n=n-1;
printf("你已經(jīng)刪除信息");
}
else
printf("退出");
getch();
}
save();
}
int openl() /*定義打開文件函數(shù)*/
{
system("CLS");
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Cannot open file.\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);
}
void see() /*打開并查看文件*/
{
system("CLS");
int i;
n=openl();
printf("文件打開成功!\n");
printf("按任意鍵查看!\n");
getch();
printf("\t學號\t姓名\t性別\t英語\t數(shù)學\t語文\t平均成績\t總成績\n");
for(i=0;i
{
printf("s\t%s\t%2s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意鍵返回菜單");
getch();