第1个回答 2007-11-25
第一个:
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define MAX 50
void input();
void sort();
void display();
void insert();
void del();
void average();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()//主函数
{
char as;
start: printf("\t\t\t欢迎使用学生成绩管理系统\n\n");
//一下为功能选择模块
do{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
as=getch();
switch(as)
{
case '1':
system("cls");
input();
break;
case '2':
system("cls");
display();
break;
case '3':
system("cls");
sort();
break;
case '4':
system("cls");
insert();
break;
case '5':
system("cls");
del();
break;
case '6':
system("exit");
exit(0);
default:
system("cls");
goto start;
}
}while(1);
//至此功能选择结束
}
void input()//原始数据录入模块
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("%d",now_no);
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
system("cls");
}
void sort()//排序数据函数
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}}}
}
void display()//显示数据函数
{
int i;
char as;
float ave;
do
{
printf("\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩\t成绩\t成绩\t平均值\n");
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意键返回主菜单.");
as=getch();
goto exit;
}
while(as!='n');
exit: system("cls");
}
void insert()//插入数据函数
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
}
void del()//删除数据函数
{
int inum,i,j;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
for(j=i;j<now_no;j++)
{
stu[i]=stu[i+1];
}
now_no=now_no-1;
}
break;
}
system("cls");
}
第二个:
#include <stdio.h>//预处理头文件把<stdio.h>包含输入输出函数
#include <windows.h>//预处理头文件 改变背景色和延迟时间
/*定义一个结构体来存储学员信息*/
struct student
{
int num; //学号
char name[20]; //姓名
double c; //c成绩
double java; //java成绩
double sql; //sql成绩
double ave; //平均成绩
};
student input();//student input()录入函数原型声明
void output( student stu[],int n);//output()输出函数原型声明
void sort( student stu[],int n);//sort()排序函数原型声明
void insert( student stu[],int n);//insert()插入函数原型声明
void del( student stu[],int n);//del()删除函数原型声明
void Loading();//Loading()函数原型声明
/*主函数*/
void main()
{
//定义一个结构student 大小为50
student stu[50];
//定义一个ch用来接收输入是否继续
char ch;
//定义一个整型变量count为计数器 并赋值为0
int count=0;
//定义一个整型变量k用来接收用户选择功能时的输入
int _k;
//windows的调用
Loading();
//提示用户输入学员信息
printf("\n请输入学员信息");
//用do-while循环来控制是否继续
do
{
//把录入函数input赋值给计数器stu[count]
stu[count]=input();
//提示用户是否继续输入
printf("\n是否继续输入 (y/n)");
//清空缓存
fflush(stdin);
//接受输入并赋值给ch
ch=getchar();
//计数器递增
count++;
}while(ch=='y'||ch=='Y');//如果ch为y就继续输入学员信息
//提示排序前的学员信息
printf(" \n排序前的学员信息:\n ");
//显示排序前的学员信息
output(stu,count);
//提示排序后的学员信息
printf(" \n排序后的学员信息:\n");
//调用排序函数
sort(stu,count);
//显示排序后的学员信息
output(stu,count);
//用do-while来控制插入学员或删除学员并退出
do
{
//提示选择功能
printf("\n0.退出 1.插入学员 2.删除学员 \n");
printf("请选择功能:");
//接收输入选择的功能
scanf("%d",&_k);
//如果k==0就跳出循环
if(_k==0)
break;
//用switch来控制选择的功能
switch(_k)
{
case 1:insert(stu,count); //插入功能
//增加一个学员信息
count++;
//调用显示函数
output(stu,count);
break;
case 2:del(stu,count); //删除功能
//减少一个学员信息
count--;
//调用显示函数
output(stu,count);
break;
//不在0~2之间就提示有错
default : printf("\n输入有错,请在0~2之间选择。\n");
}
}while(1);
printf("\n\n程序结束,欢迎再次使用!\n\n\n");
}
student input()//录入函数
{
//定义一个变量num
student num;
//提示输入学号要是0~50之间
printf(" \n学号(0~50):");
//接收输入学号
scanf("%d",&num.num);
//如果学号小于0大于50或为字符就执行循环
while(num.num<=0||num.num>50)
{
getchar();
//显示你输入有错,请重新输入
printf("你输入有错,请重新输入");
//接受用户的重新输入学号
scanf("%d",&num.num);
}
//提示输入姓名
printf("姓名:");
//清空缓存
fflush(stdin);
//接收用户输入姓名
gets(num.name);
//提示输入C语言成绩在0到100之间
printf("C语言成绩(0~100):");
//接收输入C语言成绩
scanf("%lf",&num.c);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.c)<0||(num.c)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入C语言成绩
scanf("%lf",&num.c);
}
//提示输入JAVA语言成绩在0到100之间
printf("JAVA成绩(0~100):");
//接收输入JAVA语言成绩
scanf("%lf",&num.java);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.java)<0||(num.java)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入JAVA语言成绩
scanf("%lf",&num.java);
}
//提示输入SQL语言成绩在0到100之间
printf("SQL成绩(0~100):");
//接收输入SQL语言成绩
scanf("%lf",&num.sql);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.sql)<0||(num.sql)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入SQL语言成绩
scanf("%lf",&num.sql);
}
//计算3课成绩的平均值
num.ave=(num.c+num.java+num.sql)/3;
//返回平均值
return num;
}
void output( student stu[],int n)//显示学员信息
{
//定义一个整形变量i用于循环
int i;
//显示学员学号 姓名 平均成绩
printf("\n学号\t姓名\t平均成绩 \n");
//用循环来实现学员学号 姓名 平均成绩的输出
for(i=0;i<n;i++)
{
//显示学员学号 姓名 平均成绩
printf("%d\t%s\t%.1lf\n",stu[i].num,stu[i].name,stu[i].ave);
}
}
void sort( student stu[],int n)//冒泡排序
{
//定义变量i,j用于循环
int i,j;
//声明一个结构变量temp
struct student temp;
//表示参加的元素
for(i=0;i<n;i++)
{
//表示对比的次数递减
for(j=0;j<n-1-i;j++)
{
//如果stu[j].ave<stu[j+1].ave
if(stu[j].ave<stu[j+1].ave)
{
//交换元素
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
void insert( student stu[],int n)//插入学员信息
{
//定义变量i,j用于循环
int i;
int j;
//定义一个结构变量temp
struct student temp;
//提示请输入要插入的学员信息
printf("\n请输入要插入的学员信息:\n ");
//把录入值赋给temp
temp=input();
for(i=0;i<n;i++)//查找第一个大于要插入数的位置
{
//如果插入的平均值大于原来的学员平均值跳出循环
if(stu[i].ave<temp.ave)
break;
}
printf("%d",i);
for(j=n;j>i;j--)//为插入学员空一个位置
{
stu[j]=stu[j-1];
}
//将要插入的数保留在该位置
stu[i]=temp;
printf("\n插入新学员后的信息如下:\n");
}
void del( student stu[],int n)//删除学员信息
{
int i;//定义一个整形变量i用于循环
int _x;//定义一个x用于输入要删除的学号
printf("\n请输入要删除的学号:");
//接收输入数据
scanf("%d",&_x);
for(i=0;i<n;i++)
{
//如果stu[i].num==x跳出循环
if(_x==stu[i].num)
break;
}
for(;i<n;i++)
{
//删除学员
stu[i]=stu[i+1];
printf(" \n删除后学员的信息如下:\n");
}
}
void Loading()
{
int M=30;//定义一个常量来接收方块的个数
int i;
printf("\t\t\t学 员 成 绩 管 理 系 统\n");
printf("【程序装载中 ");
for(i=1;i<=M;i++)
{
printf("■");
Sleep(150);
}
printf("】");
printf("【载入完成】\n");
printf("【欢迎使用学生成绩管理系统,本程序启动代码为**原创... 】");
fflush(stdin);
Sleep(800);
printf("\t\t\t学 员 成 绩 管 理 系 统\n");
}