求一c语言课程设计学生成绩管理系统程序

2024-11-28 08:25:58
推荐回答(2个)
回答(1):

参考以下,部分代码改了即可: 首先将记录储存再TXT文件下,格式如下所示:学号 姓名 性别 等级 笔试 机试 类别
1 张三 男 二级 66 77
2 李四 男 三级 88 99
3 张二 男 二级 40 60
4 李二 女 二级 50 59
5 王五 女 三级 99 99
6 王三 男 二级 77 61
7 刘四 男 四级 60 59
8 刘五 女 二级 88 77
9 张五 女 二级 64 81
10 李六 女 二级 59 30-------------------------------------------------------------代码如下,本人亲自编写,无错误通过--------------------------------------------------------------------#include
#include
#include
#include
using namespace std;void add_information(string str);
void delete_information(string str);
void edit_information(string str);
void scanf_information(string str);
void score_scanf(string str);
void pingfen(string str);
void pass_total(string str);main()
{
cout<<"本程序完成学生信息管理"< cout<<"注意功能一定要按顺序执行,一旦平完分数,有些功能不能用,也是本系统的不完善之处!"< cout<<"当然可以改进,鉴于时间原因,我就不多加改了,整个模板你可以参考,基本符合要求。。"< cout< string str;
cout<<"请输入一个学生信息文件名: ";
getline(cin,str);
char ch;
cin.get(ch);
cout<<"(1)信息维护 (2)评分 (3)信息查询 (4)成绩合格统计"< cout<<"请输入你所要选择的功能编号: ";
int number;
cin>>number;
string name;//统计用的科目名
switch(number)
{
case 1:
cout<<"(1)增加学生信息 (2)删除学生信息 (3)修改学生信息 (4) 浏览信息"< cout<<"请输入你所要选择的功能编号: ";
cin>>number;
switch(number)
{
case 1:
add_information(str);
break;
case 2:
delete_information(str);
break;
case 3:
edit_information(str);
break;
case 4:
scanf_information(str);
break;
default:
cout<<"对不起,你的输入错误!";
break;
}
break;
case 2:
score_scanf(str);
break;
case 3:
pingfen(str);
break;
case 4:
pass_total(str);
break;
default:
cout<<"对不起,你的输入错误!";
break;
} cout< return 0;
}
void add_information(string str)
{
ofstream outstream;
outstream.open(str.data(),ios::ate|ios::app);
outstream< string name;
cout<<"请输入准考证号、姓名、性别、报考等级、笔试成绩、上机成绩,用空格分开 :"< string a,b,c,d,e,f;
cin>>a>>b>>c>>d>>e>>f;
outstream.precision(6);//显示精度
outstream< outstream.close();
}
void delete_information(string str)
{
ifstream instream;
instream.open(str.data());
string name_1,name_2;
cout<<"请输入需要删除人的准考证号: ";
cin>>name_1;
string a,b,c,d,e,f;
ofstream outstream;
//暂存的中间文件
outstream.open("temp.txt");
bool flag=0;//是否查找到
while(1)
{
//删除操作,自己感觉都有点麻烦
instream>>a>>b>>c>>d>>e>>f;
if(name_1!=a)
{
outstream< outstream< }
else if (name_1==a) flag=1;//查找到
if(instream.eof()) break;
}
if(!flag) cout<<"没有找到该记录"< instream.close();
outstream.close();
//将暂存的文件写回到原文件中
ifstream in;
ofstream out;
in.open("temp.txt");
out.open(str.data());
string line;
while(1)
{
getline(in,line);
out< out< if(in.eof()) break;
}
in.close();
out.close();
}
void edit_information(string str)
{
ifstream instream;
instream.open(str.data());
string name_1,name_2;
cout<<"请输入需要修改人的准考号: ";
cin>>name_1;
string a,b,c,d,e,f;
ofstream outstream;
//暂存的中间文件
outstream.open("temp.txt");
bool flag=0;//是否查找到
while(1)
{
//删除操作,自己感觉都有点麻烦
instream>>a>>b>>c>>d>>e>>f;
if(name_1==a)
{
//找到修改的记录
flag=1;
cout<<"请输入新的准考证号、姓名、性别、报考等级、笔试成绩、上机成绩,成绩类别,用空格分开:";
cin>>a>>b>>c>>d>>e>>f;
}
outstream< outstream< if(instream.eof()) break;
}
if(!flag) cout<<"没有找到该记录"< instream.close();
outstream.close();
//将暂存的文件写回到原文件中
ifstream in;
ofstream out;
in.open("temp.txt");
out.open(str.data());
string line;
while(1)
{
getline(in,line);
out< out< if(in.eof()) break;
}
in.close();
out.close();}
void scanf_information(string str)
{
ifstream instream;
instream.open(str.data());
string name_1,name_2;
string a,b,c,d,e,f;
string line;
getline(instream,line);
cout< while(1)
{
instream>>a>>b>>c>>d>>e>>f;
cout< cout< if(instream.eof()) break;
}
instream.close();}
void score_scanf(string str)
{
ifstream instream;
instream.open(str.data());
string name_1,name_2;
cout<<"请输入需要查看的类别: ";
cin>>name_1;
string a,b,c,d,e,f,g;
bool flag=0;//是否查找到
while(1)
{
//删除操作,自己感觉都有点麻烦
instream>>a>>b>>c>>d>>e>>f>>g;
if(name_1==g)
{
//找到修改的记录
flag=1;
cout<<"准考证号为:"< cout<<" 姓名 "< }
if(instream.eof()) break;
}
if(!flag) cout<<"没有找到该记录"< instream.close();
}
void pingfen(string str)
{
ifstream instream;
instream.open(str.data());
string a,b,c,d;
int e,f;
ofstream outstream;
outstream.open("temp.txt");
string line;
getline(instream,line);
outstream< outstream< while(1)
{ instream>>a>>b>>c>>d>>e>>f;
outstream< if(e>=85)
{
if(f>=85) outstream<<"优秀";
else if(f>=70 && f<=84) outstream<<"良好";
else if(f>=60 && f<=69) outstream<<"及格";
else outstream<<"不及格";
}
else if(e>=70 && e<=84)
{
if(f>=70) outstream<<"良好";
else if(f>=60 && f<=69) outstream<<"及格";
else outstream<<"不及格";
}
else if(e>=60 && e<=69)
{
if(f>=60) outstream<<"及格";
else outstream<<"不及格";
}
else outstream<<"不及格";
outstream< if(instream.eof()) break;
}
instream.close();
outstream.close();
ifstream in;
ofstream out;
in.open("temp.txt");
out.open(str.data());
line="";
while(1)
{
getline(in,line);
out< out< if(in.eof()) break;
}
in.close();
out.close();}
void pass_total(string str)
{
ifstream instream;
instream.open(str.data());
string a,b,c,d,e,f,g;
int count=0;
while(1)
{
//删除操作,自己感觉都有点麻烦
instream>>a>>b>>c>>d>>e>>f>>g;
if(g=="优秀" ||g=="良好" ||g=="及格")
count++;
if(instream.eof()) break;
}
cout<<"合格的人数为:"< instream.close();
}

回答(2):

#include
#include
#include struct STU
{
long Num;
int mathScore;
int englishScore;
int computerScore;
int allScore;
int averageScore;
};void sort();
void cal();
void stuPrint();
void stuInput();
#define STUNUM 60/*定义学生数*/STU stu[STUNUM];int main(int argc, char* argv[])
{
stuInput();
cal();
sort();
stuPrint(); return 0;
}void stuInput()
{
int i = 0;

for (;i {
system("cls");

printf("请一个学生输入学号\n");
scanf("%d",&(stu[i].Num));

printf("请输入该学生数学成绩\n");
scanf("%d",&(stu[i].mathScore));

printf("请输入该学生英语成绩\n");
scanf("%d",&(stu[i].englishScore));

printf("请输入该学生计算机成绩\n");
scanf("%d",&(stu[i].computerScore));

}
}void cal()
{
int i = 0;
for (;i {
stu[i].allScore = stu[i].mathScore + stu[i].computerScore + stu[i].englishScore;
stu[i].averageScore = stu[i].allScore / 3;
}
}void sort()
{
STU temp;
int i = 0 , j =0;
for (;i {
for ( j = i+1;j< STUNUM ;j++)
{
if (stu[i].allScore {
memcpy(&temp,&stu[i],sizeof(STU));
memcpy(&stu[i],&stu[j],sizeof(STU));
memcpy(&stu[j],&temp,sizeof(STU));

}
}
}
}void stuPrint()
{
int i = 0;

printf("名次 学号 数学成绩 英语成绩 计算机成绩 总成绩 平均成绩\n");
for (;i {
printf("\n---------------------------------------------------------\n");

printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n",i+1,stu[i].Num,stu[i].mathScore,
stu[i].englishScore,stu[i].computerScore,
stu[i].allScore,stu[i].averageScore);
}}
其余的你自己弄弄