| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 622 人关注过本帖
标题:[求助]一个学生管理系统的错误,请改之 !
取消只看楼主 加入收藏
依然饭后c
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-20
收藏
 问题点数:0 回复次数:3 
[求助]一个学生管理系统的错误,请改之 !

一个学生成绩管理系统,编译没错,可运行起来错误很多
收入3门成绩,用平均成绩排序,实现插入新学生和删除老学生
插入和删除后保持有序并输出。。
我写的这个可以一直删除,插入后不能排序等等的问题。。
哪位大大帮我看下啊!!!
#include<stdio.h>
struct student//结构数组
{
int num;
char name[20];
float c;
float java;
float dreamweare;
float avg;
}std1[50],std2;
//函数块

void display();//显示函数
void record();//录入新学员函数
void insert();//插入新学员函数
void del();//删除
void sort();//排序
void sortinsert(int);//插入后排序
void sortdel(int);//删除后排序
void Getavg();//平均成绩
void Getavg1(int);//插入后平均成绩
static int count = 0;

void main()
{
int in;
char ans;
printf("*=====================================*\n");
printf("* 欢迎使用! *\n");
printf("* 学生管理系统 *\n");
printf("*=====================================*\n");
printf(" 请添加学员.\n");
record();
display();

do
{
printf("*================================*\n");
printf("* 1.插入新学员. *\n");
printf("* 2.删除学员. *\n");
printf("* 3.退出. *\n");
printf("*================================*\n");
printf(" 请选择:");
scanf("%d",&in);
switch(in)
{
case 1:
insert();

break;
case 2:
del();

break;
case 3:
break;
default:
printf("您输入错误!");
break;
}
if(in == 3)
{
printf("*=======================*\n");
printf("* 谢谢对本软件的支持! *\n");
printf("*=======================*\n");
break;
}
printf("继续插入或者删除服务?(y/n)");
fflush(stdin);
ans = getchar();
if(ans == 'n')
{
printf("*=======================*\n");
printf("* 谢谢对本软件的支持! *\n");
printf("*=======================*\n");

}
}while(ans == 'y');

}

void display()
{
int i;
printf("学号\t姓名\tc成绩\tjava成绩\t网页编程成绩\t平均成绩\n");
for(i=0;i<count;i++)
{
printf("%d\t",std1[i].num);
printf("%s\t",std1[i].name);
printf("%.2f\t",std1[i].c);
printf("%.2f\t",std1[i].java);
printf(" %.2f\t",std1[i].dreamweare);
printf(" %.2f\t",std1[i].avg );
putchar('\n');
}

}

void record()
{

char ans;
printf("*=====================*\n");
printf("* 录入学员信息 *\n");
printf("*=====================*\n");
if(count<50)
{
do
{
printf("请输入学号:\n");
fflush(stdin);
scanf("%d",&std1[count].num);
printf("请输入姓名:\n");
fflush(stdin);
gets(std1[count].name);
printf("请输入c成绩:\n");
scanf("%f",&std1[count].c);
printf("请输入java成绩:\n");
scanf("%f",&std1[count].java);
printf("请输入网页编程成绩:\n");
scanf("%f",&std1[count].dreamweare);
count++;
printf("继续添加?(y/n)");
fflush(stdin);
ans = getchar();
}while(ans == 'y');
}
else
{
printf("超过了50个学员,退出!");
}
printf("添加后学员按成绩平均值排序为:\n");
Getavg();
sort();
}
void insert()
{

char ans;
printf("*=====================*\n");
printf("* 插入学员信息 *\n");
printf("*=====================*\n");
if(count<50)
{
do
{
printf("请输入学号:\n");
fflush(stdin);
scanf("%d",&std1[count].num);
printf("请输入姓名:\n");
fflush(stdin);
gets(std1[count].name);
printf("请输入c成绩:\n");
scanf("%f",&std1[count].c);
printf("请输入java成绩:\n");
scanf("%f",&std1[count].java);
printf("请输入网页编程成绩:\n");
scanf("%f",&std1[count].dreamweare);
Getavg1(count);
sortinsert(count);
count++;

printf("继续插入?(y/n)");
fflush(stdin);
ans = getchar();
}while(ans == 'y');
}
else
{
printf("超过50个学员,退出!");
}
printf("插入后学员按成绩平均值排序为:\n");
display();
}

void del() //这里可以一直删除,不论有没有这个人

{
int in;
int i=0,flag = 0;
char ans;
printf("*=====================*\n");
printf("* 删除学员信息 *\n");
printf("*=====================*\n");
do
{
printf("\n请输入您要删除学员的学号:");
scanf("%d",&in);
for(i=0;i<count;i++)
{
if(std1[i].num == in)
{
flag = 1;
break;
}
}
if(flag)
{
printf("删除成功!删除后学员按平均成绩排序为:\n");
sortdel(i);
display();
}
else
{
printf("输入错误或者无此学号学员!\n");
display();
}

printf("继续删除?(y/n)");
fflush(stdin);
ans = getchar();

}while(ans == 'y');


}

void sort()
{
int i,j;
for(i=0;i<count-1;i++)
{
for(j=count-1;j>=i+1;j--)
{
if(std1[j].avg>std1[j-1].avg)
{
std2 = std1[j];
std1[j] = std1[j-1];
std1[j-1] = std2;
}
}

}
}

void sortinsert(int i) //这里排序不对了。。。
{
int j,k;
for(j=0;j<=count;j++)
{
if(std1[i].avg>std1[j].avg)
{
break;
}
}
for(k=count+1;k>=j+1;k--)
{
std1[k] = std1[k-1];
}
std1[j] = std1[i];
}

void sortdel(int i)
{
for(;i<count-1;i++)
{
std1[i] = std1[i+1];
}
count--;
}

void Getavg()
{
int i;
float sum;
for(i=0;i<count;i++)
{
sum = std1[i].c + std1[i].java + std1[i].dreamweare;
std1[i].avg = sum / 3;
}

}
void Getavg1(int i)
{

float sum;


sum = std1[i].c + std1[i].java + std1[i].dreamweare;
std1[i].avg = sum / 3;

}

搜索更多相关主题的帖子: 系统 学生 管理 
2007-05-31 20:00
依然饭后c
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-20
收藏
得分:0 
编译是没有错
但是选择插入后输出的排序不正确
选择删除后不论输入什么都会删除一个人
我彻底的晕了。。。
看不出错在什么地方。。。

饭后听着杰伦的歌,就开始c......
2007-05-31 20:34
依然饭后c
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-20
收藏
得分:0 
我晕 !。。
我就是看不出来了。。。

饭后听着杰伦的歌,就开始c......
2007-05-31 21:51
依然饭后c
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-5-20
收藏
得分:0 
此问题已经解决  谢谢各位的关心和指导!!!!

饭后听着杰伦的歌,就开始c......
2007-06-06 22:42
快速回复:[求助]一个学生管理系统的错误,请改之 !
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024917 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved