编写一个c程序,对一个班(不多于35人)的学生成绩进行管理,其中:每个学生的数据包括学号,姓名,三
程序功能要求:
1.数据输入。按一定格式输入若干名学生的数据(要求对输入格式有所提示)
2.数据输出。用比较美观的格式输出所有学生的数据。如果没有记录,输出提示信息。
3.数据排序。对输入的数据按学号进行由低到高的排序(冒泡法或选择法)
4.数据查找。查找指定学号的学生数据,并按照一定的格式输出查找结果,如果没有找到,输出提示信息。
5.数据插入。按学号插入一学生的数据,插入合适的位置,保证插入后的数据仍然按学号由大到小顺序排列,要求插入时发现已有该学号的数据,应提示拒绝插入信息,此外能够实现连续插入。
6.数据删除:删除指定学号的学生数据。(要求能够进行连续删除,如果没有找到该学生,输出提示信息)
7.数据统计。按平均分统计各个分数段的学生人数,输出统计结果。
0.退出:退出整个程序的运行
可能有些难,各位大神忙的话只要几个简单的功能也可的,很简陋也行的。 展开
这个要求比较多,我先给你个我以前写的,只有一部分的功能,你参考下吧
运行界面如下:
//2.C++学生成绩管理系统
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#define F "e:\\a.txt"
#define N 5
/*本程序需要在E盘根目录下创建一个a.txt的文件,文件内容格式为:
姓名 学号 语文成绩 数学成绩 英语成绩
以行为单位,比如第一行输入 张三 1 90 80 70
本程序就能对数据进行处理
*/
void caidan(); //菜单函数
void sum(); //(1)各门课程的总分﹑平均分
void find_name(); //(2)按姓名寻找记录并显示
void find_num(); //(3)按学号寻找记录并显示
void total_data(); //(4)查询全部学生成绩
void rank_display();//(5)按总分由高到低显示学生信息
typedef struct student
{
char name[10];
int num;
int chinese;
int math;
int english;
}S;
S s[10];
int main(void)
{
caidan();
return 0;
}
void caidan()
{
cout<<"\t\t\t"<<"《学生成绩管理系统》"<<endl;
cout<<"(1)各门课程的总分﹑平均分"<<endl;
cout<<"(2)按姓名寻找记录并显示"<<endl;
cout<<"(3)按学号寻找记录并显示"<<endl;
cout<<"(4)查询全部学生成绩"<<endl;
cout<<"(5)按总分由高到低显示学生信息"<<endl;
cout<<"(6)退出"<<endl;
while(1)
{
int i;
cout<<"请选择功能"<<endl;
cin>>i;
switch(i)
{
case 1: sum(); break;
case 2: find_name(); break;
case 3: find_num(); break;
case 4: total_data(); break;
case 5: rank_display(); break;
case 6: break;
default:cout<<"error"<<endl;break;
}
if(i==6)
{cout<<"退出"<<endl;break;}
}
}
//(1)各门课程的总分﹑平均分
void sum()
{
cout<<endl;
cout<<"各门课程的总分﹑平均分:"<<endl<<endl;
int i;
int sum_c=0,ave_c;
int sum_m=0,ave_m;
int sum_e=0,ave_e;
ifstream infile("e:\\a.txt");
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
sum_c += s[i].chinese; ave_c=sum_c/3;
sum_m += s[i].math; ave_m=sum_m/3;
sum_e += s[i].english; ave_e=sum_e/3;
}
cout<<"总分"<<"\t\t"<<"语文总分"<<"\t"<<"数学总分"<<"\t"<<"英语总分"<<endl;
cout<<"\t\t"<<sum_c<<"\t\t"<<sum_m<<"\t\t"<<sum_e<<endl;
cout<<"平均分"<<"\t\t"<<"语文平均分"<<"\t"<<"数学平均分"<<"\t"<<"英语平均分"<<endl;
cout<<"\t\t"<<ave_c<<"\t\t"<<ave_m<<"\t\t"<<ave_e<<endl;
infile.close();
}
//(2)按姓名寻找记录并显示
void find_name()
{
cout<<endl;
cout<<"按姓名寻找记录并显示:"<<endl<<endl;
int i;
char a[20];
cout<<"请输入学生姓名"<<endl;
cin>>a;
ifstream infile(F);
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
if(strcmp(a,s[i].name)==0)
{
cout<<"该学生信息如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
break;
}
}
infile.close();
}
//(3)按学号寻找记录并显示
void find_num()
{
cout<<endl;
cout<<"按学号寻找记录并显示:"<<endl<<endl;
int i;
int a;
cout<<"请输入学生学号"<<endl;
cin>>a;
int b;
ifstream infile(F);
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
b=s[i].num;
if(a==b)
{
cout<<"该学生信息如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
break;
}
}
infile.close();
}
//(4)查询全部学生成绩
void total_data()
{
cout<<endl;
cout<<"查询全部学生成绩:"<<endl<<endl;
int i;
ifstream infile(F);
cout<<"全部学生成绩如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
}
infile.close();
}
//(5)按总分由高到低显示学生信息
void rank_display()
{
cout<<endl;
cout<<"按总分由高到低显示学生信息:"<<endl<<endl;
int i,j,k;
int temp;
char tem[20];
int sum[20];
ifstream infile(F);
//cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<"\t"<<"总分"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
sum[i]=s[i].chinese + s[i].math + s[i].english;
//cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<"\t\t"<<sum[i]<<endl;
for(k=0;k<N-1;k++)
for(j=k+1;j<N;j++)
{
if(sum[k]<sum[j])
{
temp=sum[k];
sum[k]=sum[j];
sum[j]=temp;
temp=s[k].num;
s[k].num=s[j].num;
s[j].num=temp;
temp=s[k].chinese;
s[k].chinese=s[j].chinese;
s[j].chinese=temp;
temp=s[k].math;
s[k].math=s[j].math;
s[j].math=temp;
temp=s[k].english;
s[k].english=s[j].english;
s[j].english=temp;
strcpy(tem,s[k].name);
strcpy(s[k].name,s[j].name);
strcpy(s[j].name,tem);
}
}
}
cout<<"排序"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<"\t"<<"总分"<<endl;
for(i=0;i<N;i++)
{
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<"\t\t"<<sum[i]<<endl;
}
infile.close();
}