课程设计

0、班级成绩管理

自动化专业12级有4个班,每班现假定有32名同学,本学期有6门课程考试(课程名你知道,我不知道),每门课程成绩是百分制。现规定每个同学的成绩记录包含以下数据,学号、姓名以及各门课程的成绩共8项,其中学号是一个10位的字符串,每个学生都有唯一的学号。完成以下操作要求:

⑴  编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩(因为学生太多,现在不要你输入真实成绩);

⑵  编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中;

⑶  对4个班的成绩按每个同学的平均成绩的以从大到小的递增方式进行班内排序;

⑷ 实现对某一个学生全部或某科成绩的查找功能。

⑸  实现统计分析功能:分班和分课程进行各个分数段(分几段自己定)的统计;

⑹ 实现学生成绩修改功能。

#include
#include
#include
#include
const int M = 20;
class stucopy
{
public:
	char id[20];
	char sex[10];
	char name[10];
	double grade[5];
	double sumsum;
	double average;
};
class student
{
friend class list;
public:
char id[20];
char sex[10];
char name[10];
double grade[6];

student()
{
	next=0;
	for (int i=0;i<20;i++)		id[i]=0;
	for (i=0;i<10;i++)		sex[i]=0;
	for (i=0;i<10;i++)		name[i]=0;
}
void s();
void setid(char id1[20])
{
	for(int i=0;i<20;i++)
		id[i]=id1[i];
}
void setsex(char sex1[10])
{
	for(int i=0;i<10;i++)
		sex[i]=sex1[i];
}
void setname(char name1[10])
{
	for(int i=0;i<10;i++)
		name[i]=name1[i];
}
void setgrade(double grade1[6])
{
	for(int i=0;i<6;i++)
		grade[i]=grade1[i];
}
student *next;
char * outid(){return id;};
char * outsex(){return sex;};
char * outname(){return name;};
double outsum()
{
	double sum=0;
	for(int i=0;i<6;i++)
		sum+=this->outgrade(i);
	return sum;
}
double outav(){return this->outsum()/6;}
double outgrade(int i){return grade[i];};
void intgrade(int);
};
void student::intgrade(int j)
{ 
	switch (j)
	{
	case 1:
			  cout<<" 请输入模电成绩:\n";
			  cin>>grade[0];break;
	case 2:
			  cout<<"请输入数电成绩:\n";
			  cin>>grade[1];break;
	case 3:
			  cout<<"请输入C++成绩:\n";
			  cin>>grade[2];break;
	case 4:
		  cout<<"请输入英语成绩:\n";
		  cin>>grade[3];break;
	case 5:
			  cout<<"请输入毛概成绩:\n";
			  cin>>grade[4];break;
    case 6:
			  cout<<"请输入体育成绩:\n";
			  cin>>grade[5];break;
	}
}
void student::s()
{
cout<<"请输入学号:\n";
cin>>id;
cout<<"请输入姓名:\n";
cin>>name;
cout<<"请输入性别:\n";
cin>>sex;
cout<<"请输入模电成绩:\n";
cin>>grade[0];
cout<<"请输入数电成绩:\n";
cin>>grade[1];
cout<<"请输入C++成绩:\n";
cin>>grade[2];
cout<<"请输入英语成绩:\n";
cin>>grade[3];
cout<<"请输入毛概成绩:\n";
cin>>grade[4];
cout<<"请输入体育成绩:\n";
cin>>grade[5];
}
class list
{
private:
double high[6],low[6];
public:
student *last,*first;
double totoal;
list(){last=0;first=0;};
~list();
void instu();
void outstu(char *);
int delstu(char *n);
void outstu1(char *);
int delstu1(char *n);
void outsum(char *);
void outsum1(char *);
void think();
void search(char s[10],int);
void search1(char s[20],int);
double hi(int i);
double lo(int i);
void av(int i);
void ev(int i);
void scanall();
};
list::~list()
{
if(first!=0)
{
student *p=first,*temp;
while(p!=NULL){
temp=p;
p=p->next;
delete temp;
cout<<"ok\n";
}}}
void list::instu()
{ student *p=new student();
p->s();
if(first==0){first=last=p;}else{last->next=p;last=p;}
}

void list::outstu(char *n)
{
	if(first==0) {cout<<"班级无成员!查无此人!"<next)
		if(strcmp(temp->outname(),n)==0)
		{ 
			cout<outid()<outname()<outsex()<outgrade(0)<outgrade(1)<outgrade(2)<outgrade(3)<outgrade(4)<outgrade(5);return;}
		cout<<"查无此人!"<next)
		if(strcmp(temp->outid(),n)==0)
		{ 
			cout<outid()<outname()<outsex()<outgrade(0)<outgrade(1)<outgrade(2)<outgrade(3)<outgrade(4)<outgrade(5);return;}
		cout<<"查无此人!"<outname(),n)==0)
	{ first=first->next;delete temp;
	cout<<"\n删除成功\n";return 0;}
	else for(;temp->next!=NULL;temp=temp->next)
	{if(strcmp(temp->next->outname(),n)==0)
	{p=temp->next;temp->next=temp->next->next;delete p;
	cout<<"\n删除成功\n";return 0;}}
	
	cout<<"\n查无此人,删除失败\n";
	return 0;
}
int list::delstu1(char *n)
{
	if(first==0) {cout<<"无数据!"<outid(),n)==0)
	{ first=first->next;delete temp;
	cout<<"\n删除成功\n";return 0;}
	else while(temp->next!=NULL)
	{if(strcmp(temp->next->outid(),n)==0)
	{p=temp->next;temp->next=temp->next->next;delete p;
	cout<<"\n删除成功\n";return 0;}
	else temp=temp->next;}
	
	cout<<"\n查无此人,删除失败\n";
	return 0;
}
void list::think()
{
	if(first==0) {cout<<"无数据!"<next;
		i++;
	}
	totoal=i;
cout<<"人数:"<outgrade(i)>high[i])
high[i]=temp->outgrade(i);
temp=temp->next;
}
return high[i];
}
double list::lo(int i)
{
low[i]=100;
student *temp=first;while(temp!=0)
{if(temp->outgrade(i)outgrade(i);
temp=temp->next;
}
return low[i];
}
void list::av(int i)
{
	double aver=0;
	student *temp=first;
	while(temp!=NULL)
	{
		aver+=temp->outgrade(i);
		temp=temp->next;
	}
	cout<outgrade(i)/10)
{
case 10:a++;break;case 9:a++;break;
case 8:b++;break;case 7:c++;break;
case 6:d++;break;case 5:e++;break;
default:f++;
}
temp=temp->next;
}
cout<<"100-90的人数:"<next)
if(strcmp(temp->outname(),s)==0)temp->intgrade(n);
}

void list::search1(char s[20],int n)
{
	student *temp=first;for(;temp!=NULL;temp=temp->next)
		if(strcmp(temp->outid(),s)==0)temp->intgrade(n);
}
void list::outsum(char *n)
{
	if(first==0) {cout<<"无数据!"<next)
		if(strcmp(temp->outname(),n)==0)
		{
			cout<outid()<outname()<outsex()<outsum()<outav();
			return;
		}
		cout<<"查无此人!"<next)
		if(strcmp(temp->outid(),n)==0)
		{
			cout<outid()<outname()<outsex()<outsum()<outav();
			return;
		}
		cout<<"查无此人!"<next)
		cout<outid()<outname()<outsex()<outgrade(0)<outgrade(1)
		<outgrade(2)<outgrade(3)<outgrade(4)<outgrade(5)<outsum()<outav()<>m;
switch(m)
{
case 1:
will.instu();
break;
case 2:
	cout<<"1.根据学号查询     2.根据姓名查询"<>n;
	switch(n){	
	case 1:
		cout<<"请输入学号\n";
		cin>>id;
		will.outstu1(id);
		cout<<"\n";break;
	case 2:
		cout<<"请输入姓名\n";
		cin>>name;
		will.outstu(name);
		cout<<"\n";break;}break;
case 3:
		cout<<"1.根据学号查询     2.根据姓名查询"<>n;
		switch(n){
		case 1:
			cout<<"请输入学号\n";
			cin>>id;
			will.outstu1(id);
			cout<<"\n";
			cout<>j;
			will.search1(id,j);break;
		case 2:
			cout<<"请输入姓名\n";
			cin>>name;
			will.outstu(name);
			cout<<"\n";
			cout<>j;
			will.search(name,j);break;}break;
case 4:
	cout<<"1.根据学号删除     2.根据姓名删除"<>n;
	switch(n){
	case 1:
		cout<<"请输入学号\n";
		cin>>id;
		will.outstu1(id);
		will.delstu1(id);break;
	case 2:
		cout<<"请输入姓名\n";
		cin>>name;
		will.outstu(name);
		will.delstu(name);break;}break;
case 5:
will.think();
break;
case 6:
	cout<<"1.根据学号查询     2.根据姓名查询"<>n;
	switch(n){
	case 1:
		cout<<"请输入学号\n";
		cin>>id;
		will.outsum1(id);break;
	case 2:
		cout<<"请输入姓名\n";
		cin>>name;
		will.outsum(name);break;}break;

case 7:
			cout<>file;
		input.open(file);
		if (input.fail())
		{
			cout<<"File does not exist"<>id>>name>>sex1>>grade1[0]>>grade1[1]>>grade1[2]>>
			grade1[3]>>grade1[4];
		input>>temp;
		input>>temp;
		p1->setid(id);
		p1->setname(name);
		p1->setsex(sex1);
		p1->setgrade(grade1);
		will.first=p1;
		will.last=will.first;

		while(!input.eof())
		{
		p=new student();
		q=will.last;
        will.last->next=p;
		will.last=p;
		input>>id>>name>>sex1>>grade1[0]>>grade1[1]>>grade1[2]>>
			grade1[3]>>grade1[4];
		will.last->setid(id);
		will.last->setname(name);
		will.last->setsex(sex1);
		will.last->setgrade(grade1);
		input>>temp;
		input>>temp;
		}
		will.last=q;
		will.last->next=NULL;
		input.close();break;
case 9:
	p=will.first;
	for(i=0;i<20&&p!=NULL;i++,p=p->next)
	{
		for (j=0;j<20;j++)
		{
			stu[i].id[j]=p->id[j];
		}
		for (j=0;j<10;j++)
		{
			stu[i].name[j]=p->name[j];
		}
		for (j=0;j<10;j++)
		{
			stu[i].sex[j]=p->sex[j];
		}
		stu[i].sumsum=p->outsum();
		stu[i].average=p->outav();
	}
	for(n=0;nnext)
	{
		for (j=0;j<20;j++)
		{
			stu[i].id[j]=p->id[j];
		}
		for (j=0;j<10;j++)
		{
			stu[i].name[j]=p->name[j];
		}
		for (j=0;j<10;j++)
		{
			stu[i].sex[j]=p->sex[j];
		}
		stu[i].sumsum=p->outsum();
		stu[i].average=p->outav();
		for(j=0;j<5;j++)
			stu[i].grade[j]=p->grade[j];
	}
	for(n=0;nstu[j].id)
			{
				stutemp=stu[j];
				stu[j]=stu[n];
				stu[n]=stutemp;
			}
		}
			cout<>m;
		if (m==1)
		{
			cout<<"请输入文件名:"<>file;
			cout<<"请输入班级名称:"<>classname;
			output.open(file);
			output<>m;
}while(m==1);
}
课程设计_第1张图片

你可能感兴趣的:(课程设计)