c++编程;这道题如何做
题三:学生成绩管理系统(全做)数据结构设计:1、常量定义#defineSIZE100对学生成绩的修改、删除、浏览等都需要程序把要操作的文件中的每条记录存放在数组当中,然后...
题三:学生成绩管理系统(全做)
数据结构设计:
1、常量定义
#define SIZE 100
对学生成绩的修改、删除、浏览等都需要程序把要操作的文件中的每条记录存放在数组当中,然后用一定的算法对该数组中的学生信息进行操作。这里用SIZE字符常量来定义数组的长度。
2、 学生的信息用结构体来表示。
struct stu{
int sno; //学号
char name[8]; //姓名
char sex[3]; //性别
char inclass[8]; //班级
float math; //数学成绩
float English; //英语成绩
float computer; //计算机成绩
}
系统结构图:
各功能模块用函数来实现,以下为各模块功能:
main()函数:
界面就是用输出语句。例如:
功能选择用switch语句
退出简单:exit(0);
创建学生成绩文件:
创建学生成绩信息文件,根据用户输入的文件名创建学生成绩信息文件,将用户输入的若干条学生成绩信息记录存入该文件并保存。输入学号为0,表示输入结束。最后列表显示文件内容。
学生成绩录入,应先将学生信息保存在数组中,再把数组写入到文件中。
增加记录:
根据用户输入的文件名打开学生成绩信息文件,进行添加记录操作,如没有文件存在,则创建。将用户输入的若干条学生成绩信息记录追加存入该文件并保存。输入学号为0,表示结束输入。
删除记录:
根据用户输入的文件名,打开学生成绩信息文件,进行删除记录操作,如没有文件存在,则提示打开失败。否则,提示用户输入要删除学生的学号,将对应学生的记录删除,并保存。可以继续删除,最后列表文件内容。
实现:用循环将文件中信息存入到结构体数组中,但是与删除的学生学号一致的项不写入数组,循环后,数组中就是去掉了删除记录后的剩余记录,然后再将数组写入文件中即可。
修改记录:
根据用户输入的文件名打开学生成绩信息文件,进行修改记录操作,如没有文件存在,则提示打开失败。否则,提示用户输入要修改学生的学号,将对应学生的记录各项内容修改为用记输入的内容,并保存。可以继续修改,最后列表文件内容。
信息查询:
根据用户输入的文件名打开学生成绩信息文件,按学号或班级或性别进行查询记录操作,如没有文件存在,则提示打开失败。否则,提示用记输入要查询的学生的学号(或班组或性别),循环匹配查找对应记录,如果找到,列表显示查找到的记录内容,并提示是否继续查询。
要定义一个临时结构体变量。
成绩排序:
根据用户输入的文件名打开学生成绩信息文件,按总成绩进行排序操作,如没有文件存在,则提示打开失败。否则,列表显示排序后的文件内容。
相关函数:
清屏:clrscr();
产生随机数函数:rand() 见课本P57
数据文件操作函数:fopen、fread、fwrite、fclose等
字符串拷贝函数:strcpy
退出:exit()
请自行查阅相关资料,了解这些函数的用法。
可自行补充其它功能或修饰,使程序更加完善! 展开
数据结构设计:
1、常量定义
#define SIZE 100
对学生成绩的修改、删除、浏览等都需要程序把要操作的文件中的每条记录存放在数组当中,然后用一定的算法对该数组中的学生信息进行操作。这里用SIZE字符常量来定义数组的长度。
2、 学生的信息用结构体来表示。
struct stu{
int sno; //学号
char name[8]; //姓名
char sex[3]; //性别
char inclass[8]; //班级
float math; //数学成绩
float English; //英语成绩
float computer; //计算机成绩
}
系统结构图:
各功能模块用函数来实现,以下为各模块功能:
main()函数:
界面就是用输出语句。例如:
功能选择用switch语句
退出简单:exit(0);
创建学生成绩文件:
创建学生成绩信息文件,根据用户输入的文件名创建学生成绩信息文件,将用户输入的若干条学生成绩信息记录存入该文件并保存。输入学号为0,表示输入结束。最后列表显示文件内容。
学生成绩录入,应先将学生信息保存在数组中,再把数组写入到文件中。
增加记录:
根据用户输入的文件名打开学生成绩信息文件,进行添加记录操作,如没有文件存在,则创建。将用户输入的若干条学生成绩信息记录追加存入该文件并保存。输入学号为0,表示结束输入。
删除记录:
根据用户输入的文件名,打开学生成绩信息文件,进行删除记录操作,如没有文件存在,则提示打开失败。否则,提示用户输入要删除学生的学号,将对应学生的记录删除,并保存。可以继续删除,最后列表文件内容。
实现:用循环将文件中信息存入到结构体数组中,但是与删除的学生学号一致的项不写入数组,循环后,数组中就是去掉了删除记录后的剩余记录,然后再将数组写入文件中即可。
修改记录:
根据用户输入的文件名打开学生成绩信息文件,进行修改记录操作,如没有文件存在,则提示打开失败。否则,提示用户输入要修改学生的学号,将对应学生的记录各项内容修改为用记输入的内容,并保存。可以继续修改,最后列表文件内容。
信息查询:
根据用户输入的文件名打开学生成绩信息文件,按学号或班级或性别进行查询记录操作,如没有文件存在,则提示打开失败。否则,提示用记输入要查询的学生的学号(或班组或性别),循环匹配查找对应记录,如果找到,列表显示查找到的记录内容,并提示是否继续查询。
要定义一个临时结构体变量。
成绩排序:
根据用户输入的文件名打开学生成绩信息文件,按总成绩进行排序操作,如没有文件存在,则提示打开失败。否则,列表显示排序后的文件内容。
相关函数:
清屏:clrscr();
产生随机数函数:rand() 见课本P57
数据文件操作函数:fopen、fread、fwrite、fclose等
字符串拷贝函数:strcpy
退出:exit()
请自行查阅相关资料,了解这些函数的用法。
可自行补充其它功能或修饰,使程序更加完善! 展开
3个回答
展开全部
用我的改一下吧,可能能行,给你个参考吧~
#include <iostream.h>
struct kecheng
{
int num2;
char name2[20];
double score;
};
struct student
{
char num[10];
char name[20];
kecheng lesson[5];
};
void sr(int a,student xs[]);
void sc1(int b,student xs[]);
void sc2(int c,student xs[]);
void main ()
{
student stu[4]={{"080901","Roy",01,"Wuli",0, 02,"English",0, 03,"Math",0, 04,"Sixiu",0, 05,"PE",0},
{"080902","Tom",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0},
{"080903","Lucy",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0},
{"080904","Lily",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0}};
for(;;)
{
cout<<"欢迎使用本系统"<<endl;
cout<<"请选择您要进行的操作"<<endl;
cout<<"1.输入学生成绩"<<endl;
cout<<"2.查询学生成绩"<<endl;
cout<<"0.退出本系统"<<endl;
int m;
cin>>m;
if(m==1)//成绩输入
{
cout<<"请选择您要输入的课程"<<endl;
for(int i=0;i<5;i++)
cout<<i+1<<'\t'<<stu[0].lesson[i].name2<<endl;
int m1;
cin>>m1;
sr(m1,stu);//函数调用
}
if(m==2)//成绩查询
{
cout<<"1.按学生查询成绩"<<endl;
cout<<"2.按课程查询成绩"<<endl;
int m2;
cin>>m2;
if(m2==1)//按学生查询
{
cout<<"请选择您要查询的学生"<<endl;
for (int i=0;i<4;i++)
cout<<i+1<<'\t'<<stu[i].name<<endl;
int n;
cin>>n;
sc1(n-1,stu);//函数调用
}
if(m2==2)//按课程查询
{
cout<<"请选择您要查询的课程"<<endl;
for(int i=0;i<5;i++)
cout<<i+1<<'\t'<<stu[0].lesson[i].name2<<endl;
int n;
cin>>n;
sc2(n-1,stu);//函数调用
}
}
if (m==0)
{
cout<<"谢谢您使用本系统"<<endl;
break;
}
}
}
void sr(int a,student xs[])//输入成绩函数
{
for(int i=0;i<4;i++)
{
cout<<xs[i].num<<'\t'<<xs[i].name<<'\t'<<"Grade=";
cin>>xs[i].lesson[a-1].score;
cout<<endl;
}
}
void sc1(int b,student xs[])//按学生查询函数
{
cout<<"查询"<<xs[b].name<<"的成绩如下"<<endl;
for (int i=0;i<5;i++)
cout<<xs[b].lesson[i].name2<<'\t'<<xs[b].lesson[i].score<<endl;
}
void sc2(int b,student xs[])//按课程信息查询函数
{
cout<<"查询"<<xs[0].lesson[b].name2<<"的成绩如下"<<endl;
for (int i=0;i<4;i++)
cout<<xs[i].name<<'\t'<<xs[i].lesson[b].score<<endl;
}
#include <iostream.h>
struct kecheng
{
int num2;
char name2[20];
double score;
};
struct student
{
char num[10];
char name[20];
kecheng lesson[5];
};
void sr(int a,student xs[]);
void sc1(int b,student xs[]);
void sc2(int c,student xs[]);
void main ()
{
student stu[4]={{"080901","Roy",01,"Wuli",0, 02,"English",0, 03,"Math",0, 04,"Sixiu",0, 05,"PE",0},
{"080902","Tom",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0},
{"080903","Lucy",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0},
{"080904","Lily",01,"Wuli",0,02,"English",0,03,"Math",0,04,"Sixiu",0,05,"PE",0}};
for(;;)
{
cout<<"欢迎使用本系统"<<endl;
cout<<"请选择您要进行的操作"<<endl;
cout<<"1.输入学生成绩"<<endl;
cout<<"2.查询学生成绩"<<endl;
cout<<"0.退出本系统"<<endl;
int m;
cin>>m;
if(m==1)//成绩输入
{
cout<<"请选择您要输入的课程"<<endl;
for(int i=0;i<5;i++)
cout<<i+1<<'\t'<<stu[0].lesson[i].name2<<endl;
int m1;
cin>>m1;
sr(m1,stu);//函数调用
}
if(m==2)//成绩查询
{
cout<<"1.按学生查询成绩"<<endl;
cout<<"2.按课程查询成绩"<<endl;
int m2;
cin>>m2;
if(m2==1)//按学生查询
{
cout<<"请选择您要查询的学生"<<endl;
for (int i=0;i<4;i++)
cout<<i+1<<'\t'<<stu[i].name<<endl;
int n;
cin>>n;
sc1(n-1,stu);//函数调用
}
if(m2==2)//按课程查询
{
cout<<"请选择您要查询的课程"<<endl;
for(int i=0;i<5;i++)
cout<<i+1<<'\t'<<stu[0].lesson[i].name2<<endl;
int n;
cin>>n;
sc2(n-1,stu);//函数调用
}
}
if (m==0)
{
cout<<"谢谢您使用本系统"<<endl;
break;
}
}
}
void sr(int a,student xs[])//输入成绩函数
{
for(int i=0;i<4;i++)
{
cout<<xs[i].num<<'\t'<<xs[i].name<<'\t'<<"Grade=";
cin>>xs[i].lesson[a-1].score;
cout<<endl;
}
}
void sc1(int b,student xs[])//按学生查询函数
{
cout<<"查询"<<xs[b].name<<"的成绩如下"<<endl;
for (int i=0;i<5;i++)
cout<<xs[b].lesson[i].name2<<'\t'<<xs[b].lesson[i].score<<endl;
}
void sc2(int b,student xs[])//按课程信息查询函数
{
cout<<"查询"<<xs[0].lesson[b].name2<<"的成绩如下"<<endl;
for (int i=0;i<4;i++)
cout<<xs[i].name<<'\t'<<xs[i].lesson[b].score<<endl;
}
参考资料: 原创
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询