C程序设计学生成绩管理_学生成绩管理程序设计
C程序设计学生成绩管理由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“学生成绩管理程序设计”。
《C程序设计》综合性实验
实验报告
题目: 学生成绩管理
姓名: 班级: 学号: 指导教师: 完成时间:
一、实验题目
学生成绩管理
二、实验目的1.掌握一维数组、二维数组的使用方法。2.掌握结构体数组的定义和使用。
3.综合应用数据文件的读写语句保存结构体数组中的数据。
三、实验要求
有4个学生,每个学生有3门课的成绩,从键盘上输入以上数据,计算每个学生的平均分,并把这些信息(包括学号、姓名、班级、3门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在屏幕上。
具体要求:
定义结构体类型(student_type),其中包括学号(num[11])、姓名(name[8])、班级(cla[20])、3门课成绩(score[3])和平均成绩(ave)。利用该结构体类型定义数组stud[4]。
在主函数中输入学生学号、姓名、班级、3门课的成绩,并计算出平均成绩,然后调用save()函数将学生数据保存在score.txt文件中,调用display()函数读取score.txt文件,并将其中的内容显示在屏幕上。
定义保存文件函数save()和显示文件函数display()。
四、程序流程图
五、程序代码
#include #include #include #include
int insert();//录入学生成绩信息函数 int query();//查询学生成绩信息函数 int list();//列出学生成绩信息函数定义 void save();//把数据写入到文件 void display();//从文件读入学生记录
typedef struct {
char num[20];
char name[8];
char cla[20];int score[3];int ave;}studs;
studs * stud =NULL;int current = 0;int total = 0;
int main(){
while(1)//显示程序基本信息
{ char choice;//定义一个字符类型的变量用来接收用户的菜单选择
printf(“n”);printf(“*******************************************************************************n”);n“);n”);printf(“
0---退出系统
1---printf(”
printf(“
学生成绩管理系统
录入学生成绩信息
n”);printf(“
2---查询学生成绩信息
3---列出所有学生成绩信息
n”);printf(“
4---保存学生成绩信息
5---加载学生成绩信息
n”);printf(“*******************************************************************************n”);
printf(“n”);
printf(“请选择:”);
choice=getch();
getchar();//过滤掉enter键
printf(“nn”);
switch(choice)
{
case'1':system(“cls”);
insert();/*此处调用添加录入学生成绩信息处理代码的函数*/
break;
case'2':system(“cls”);
query();/*此处调用添加查询学生成绩信息处理代码的函数*/
处理代码的函数*/
息处理代码的函数*/
信息处理代码的函数*/
}
} return 0;
break;case'3':system(“cls”);
list();/*此处调用添加列出学生成绩信息
break;case'4':system(“cls”);
save();/*此处调用添加保存学生成绩信
break;
case'5':system(“cls”);
display();/*此处调用添加加载学生成绩
break;
case'0':
if(stud!=NULL)
{
free(stud);
}
return 0;
default:
printf(“非法选择,请重新选择n”);
getch();//程序返回 }
/*各个函数的实现*/ int insert()//录入学生成绩信息函数定义 {
int i;int total=4;
if(stud==NULL)
stud=(studs *)malloc(total *sizeof(studs));
if(stud==NULL)
return 1;
if(current>=total)
{ printf(“对不起,由于人数已满,不能再添加新学生成绩信息n”);
return 1;
}
for(i=0;i
{ int a,b,c;printf(“请输入学号:”);
scanf(“%s”,&stud[current].num);
printf(“请输入姓名:”);
scanf(“%s”,&stud[current].name);
printf(“请输入班级:”);
scanf(“%s”,&stud[current].cla);printf(“请输入语文成绩:”);
scanf(“%d”,&stud[current].score[1]);
printf(“请输入数学成绩:”);
scanf(“%d”,&stud[current].score[2]);
printf(“请输入英语成绩:”);
scanf(“%d”,&stud[current].score[3]);
a=stud[current].score[1];b=stud[current].score[2];c=stud[current].score[3];stud[current].ave=(a+b+c)/3;printf(“n”);
current++;
} }
int query()//查询学生成绩信息函数定义 {
char k;printf(“***********************************n”);printf(“*
0---放弃查询
*n”);printf(“*
1---按学号查询
*n”);printf(“*
2---按姓名查询
*n”);printf(“***********************************n”);printf(“n”);
printf(“请选择:”);
k=getch();
getchar();//过滤掉enter键
printf(“nn”);
switch(k){ case '0':
break;case '1': { char num[20];
int i;
printf(“请输入要查询的学生学号:”);scanf(“%s”,&num);
for(i=0;i
if(strcmp(stud[i].num,num)==0){ printf(“学生成绩如下n”);
printf(“学号:%sn”,stud[i].num);
printf(“姓名:%sn”,stud[i].name);
printf(“班级:%sn”,stud[i].cla);
printf(“语文成绩:%dn”,stud[i].score[1]);
printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]);
printf(“平均成绩:%dn”,stud[i].ave);
return 0;} }
printf(“此信息不存在!nn”);
return 1;
break;} case '2': { char name[8];
int i;
printf(“请输入要查询的学生姓名:”);scanf(“%s”,&name);
for(i=0;i
if(strcmp(stud[i].name,name)==0){ printf(“学生成绩如下n”);
printf(“学号:%sn”,stud[i].num);
printf(“姓名:%sn”,stud[i].name);
printf(“班级:%sn”,stud[i].cla);
printf(“语文成绩:%dn”,stud[i].score[1]);
printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]);
printf(“平均成绩:%dn”,stud[i].ave);
return 0;} }
printf(“此信息不存在!nn”);
return 1;
break;} default:
printf(“非法选择,请重新选择n”);}
int list()//列出学生成绩信息函数定义 { }
int i;
printf(“学生成绩列表n”);printf(“***********************************n”);
for(i=0;i
{
printf(“学号:%sn”,stud[i].num);
printf(“姓名:%sn”,stud[i].name);
printf(“班级:%sn”,stud[i].cla);
printf(“语文成绩:%dn”,stud[i].score[1]);
printf(“数学成绩:%dn”,stud[i].score[2]);printf(“英语成绩:%dn”,stud[i].score[3]);
printf(“平均成绩:%dn”,stud[i].ave);
printf(“***********************************n”);
}
return 0;}
//把数据写入到文件 void save(){
for(i=0;i
} printf(“文件
score.txt
打开失败”);exit(0);fprintf(fb,“%20s%8s%20s%4d%4d%4d%4dn”,stud[i].num,stud[i].name,stud[i].cla,stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].ave);
}
//从文件读入学生记录 void display(){
if(stud==NULL)int i;int total=4;FILE *fp;
fclose(fb);
printf(“文件成功保存到
score.txt 中!n”);getchar();
stud=(studs *)malloc(total *sizeof(studs));
fscanf(fp,“%20s%8s%20s%4d%4d%4d%4dn”,&stud[i].num,&stud[i].name,&stif((fp=fopen(“score.txt”,“r”))==NULL){
}
for(i=0;i
score.txt
打开失败“);exit(0);ud[i].cla,&stud[i].score[1],&stud[i].score[2],&stud[i].score[3],&stud[i].ave);
printf(”学号:%sn“,stud[i].num);
printf(”姓名:%sn“,stud[i].name);
printf(”班级:%sn“,stud[i].cla);
printf(”语文成绩:%dn“,stud[i].score[1]);
printf(”数学成绩:%dn“,stud[i].score[2]);printf(”英语成绩:%dn“,stud[i].score[3]);
printf(”平均成绩:%dn“,stud[i].ave);
printf(”***********************************n“);
} } fclose(fp);getchar();
六、实验结果
七、实验体会
(写出完成此次综合性实验的心得体会,字数在200字以上。)