C语言实例教程_C++编一个成绩管理课件
文章类别:
C语言程序设计 | 发表日期:2011-4-6 9:32:55
/**********************
作者:潘留芬
日期:2007年7月9日
描述:学员成绩管理。
**********************/
#include <stdio.h>
#define N 50
int NUM;
int x; //全局变量
struct student //定义并声明结构变量
{
int number;
char name[20];
float score[3];
float ave;
}stu[N];
void suan(int );
void insert(int ); //录入学员信息
void display(struct student *p,int ); //显示信息
void paixu(struct student stu[],int ); //冒泡排序
void add(int ); //增加学员信息
void del(struct student *p,int ); //删除学员信息
void tui(int ); //退出系统
void main()
{
int i=0;
printf("\n\n=======================欢迎进行学员成绩管理系统=======================\n\n\n");
suan(x);
//增加
//调用函数
}
void suan(int i)
{
char x;
printf(" \n\n 1、输入学员信息 2、增加学员信息 3、删除学员信息 4、退出\n");
printf("\n请输入选项:");
scanf("%d",&x);
switch (x)
{
case 1:
{
insert(i); //调用函数
break;
}
case 2:
{
add(NUM);
break;
}
case 3:
{
del(stu,NUM);
paixu(stu,NUM);
break;
}
case 4:
{
tui(NUM);
break;
}
default:
printf("\n输入有误\n\n");
}
}
void insert(int i)
{
int j;
float sum;
char ch;
do
{
sum=0;
printf("\n请输入学员信息:\n");
printf("\n学号:");
scanf("%d",&stu[i].number);
printf("\n姓名:");
scanf("%s",&stu[i].name);
printf("\n三门成绩:\n");
for (j=0;j<3;j++)
{
printf("\n成绩%d:",j+1);
scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].ave=sum/3;
i++;
printf("\n是否继续输入学员信息?(y/n)");
fflush(stdin);
ch=getchar();
}while(ch=='y' || ch=='Y');
printf("\n排序前学员信息:\n");
display(stu,i);
printf("\n排序后的学员信息如下:\n");
paixu(stu,i);
NUM=i;
suan(x);
}
void display(struct student *p,int n)
{
int i;
printf("\n学号\t姓名\t成绩:\n");
for (i=0;i<n;i++,p++)
{
printf("%d\t%s\t%lf\n",p->number,p->name,p->ave);
}
}
void paixu(struct student stu[],int n)
{
float temp;
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n-i-1;j++)
{
if (stu[j].ave<stu[j+1].ave)
{
temp=stu[j+1].ave;
stu[j+1].ave=stu[j].ave;
stu[j].ave=temp;
}
}
}
display(stu,n);
}
void add(int i)
{
char ch;
printf("\n是否需要插入新学员信息?(y/n)");
fflush(stdin);
ch=getchar();
if (ch=='y' || ch=='Y')
{
insert(i);
}
suan(x);
}
void del(struct student stu[],int n)
{
int num,i=0,j=0;
char ch;
printf("\n是否需要删除学员信息?(y/n)");
fflush(stdin);
ch=getchar();
while (ch=='y' ||ch=='Y')
{
printf("\n请输入删除学员的学号:");
scanf("%d",&num);
for (i=0;i<n;i++)
{
if (num==stu[i].number)
break;
}
if (i<n)
{
for (j=i;j<n;j++)
{
stu[j]=stu[j+1];
}
n--;
printf("\n删除后的学员信息如下:\n");
display(stu,n);
}
else
printf("\n对不起,没有这个学号!\n");
if (n==0)
break;
printf("\n是否要继续删除学员信息?(y/n)");
fflush(stdin);
ch=getchar();
}
suan(x);
}
void tui(int i)
{
char ch;
printf("\n退出?(y/n):");
fflush(stdin);
ch=getchar();
if (ch=='y' || ch=='Y')
{
printf("\n");
}
else
{
suan(x);
}
}