分享:我用c写的简单学生管理系统
#include "stdio.h"#include "stdlib.h"
#define M 10
struct student
{
int num;
char name[20];
float score[3];
float avg;
};
int input(struct student a[]);//函数声明
void output(struct student a[],int);
void sort(struct student a[],int);
int insert(struct student a[],int);
int del(struct student a[],int);
void main()
{
int m,count=0;
struct student stu[M];
do
{
printf("\n\n\t***************************************\n");
printf("\t\t学 生 成 绩 管 理 系 统 \n");
printf("\t***************************************\n");
printf("\t1、录入\t2、输出\t3、排序\t4、插入\t5、删除\n\n");
scanf("%d",&m);
switch(m)
{
case 1:
count=input(stu);
break;
case 2:
//sort(stu,count);
output(stu,count);
break;
case 3:
sort(stu,count);
output(stu,count);
break;
case 4:
sort(stu,count);
count=insert(stu,count);
break;
case 5:
count=del(stu,count);
break;
default:
exit(0);
}
}while(m!=0);
}
int input(struct student a[])
{
int count=0;char c;
do
{
printf("请输入学号:\n");
fflush(stdin);
scanf("%d",&a[count].num);
printf("请输入姓名:\n");
fflush(stdin);
gets(a[count].name);
printf("请输入成绩1:\n");
fflush(stdin);
scanf("%f",&(a[count].score[0]));
printf("请输入成绩2:\n");
fflush(stdin);
scanf("%f",&(a[count].score[1]));
printf("请输入成绩3:\n");
fflush(stdin);
scanf("%f",&(a[count].score[2]));
a[count].avg=(a[count].score[0]+a[count].score[1]+a[count].score[2])/3;
count++;
if(count>M)
break;
printf("你还要继续输入吗?(y/Y或n/N)\n");
fflush(stdin);
c=getchar();
}while(c=='y'||c=='Y');
return count;
}
void output(struct student a[],int count)
{
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for(int i=0;i<count;i++)
{
printf("%d\t%s\t%4.1f\t%4.1f\t%4.1f\t%4.1f\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],a[i].avg);
}
}
void sort(struct student a[],int count)
{
struct student temp;
for(int i=0;i<count;i++)
for(int j=0;j<count-i-1;j++)
if(a[j].avg<a[j+1].avg)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
int insert(struct student a[],int count)
{
struct student temp;float sum=0;
printf("请输入你要插入的学生的信息:\n");
printf("学号:");
scanf("%d",&temp.num);
printf("姓名:");
scanf("%s",temp.name);
for(int i=0;i<3;i++)
{
printf("第%d门课成绩:\n",i+1);
scanf("%f",&temp.score[i]);
sum+=temp.score[i];
}
temp.avg=sum/3;
for(i=0;i<count;i++)
{
if(temp.avg>a[i].avg)
{
for(int j=count-1;j>=i;j--)
{
a[j+1]=a[j];
}
a[i]=temp;
break;
}
}
if(i==count)
a[count]=temp;
count++;
return count;
}
int del(struct student a[],int count)
{
int tempnum;
printf("请输入你要删除的学员的学号:\n");
scanf("%d",&tempnum);
for(int i=0;i<count;i++)
{
if(tempnum==a[i].num)
{
for(int j=i;j<count-1;j++)
a[j]=a[j+1];
// count--;
break;
}
}
if(i==count)
printf("对不起,找不到你要删除的学员!\n");
else
{
count--;
printf("删除成功!\n");
}
return count;
}
以前写的,大家共同学习,多多指正。。。
[[it] 本帖最后由 yanhaolang 于 2008-2-8 17:54 编辑 [/it]]