| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3132 人关注过本帖
标题:用 C语言编写一个程序实现学员成绩管理
只看楼主 加入收藏
ayx1984
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-4-7
收藏
 问题点数:0 回复次数:10 
用 C语言编写一个程序实现学员成绩管理

题目是:
用 C语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩.从键盘输入学员信息,包括学号 姓名 三门课的成绩
计算出学员的平均成绩,按学院平均成绩由大到小排序 另外需要增加下面的管理功能
1.插入功能,在排序后学员成绩表中插入一个学员的信息,要求、插入后仍然保持成绩表有排序,
2.删除功能.要求输入指定的学号.从学员信息表中删除该学员,删除后仍然保持成绩表有排序,

需要用到的知识点
1 数组
2 带参数的函数
3 字符串
4 结构

我做的是这样的~
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[20];
int cj1,cj2,cj3;
int pingjun;
}stu[50],temp;
int n=0;//学员个数
///////////////////////函数声明
void tianjia();
void shanchu();
void charu();
void chakan();
/////////////////////////////////
void main()
{
int i;
char c;
do
{
printf("学员信息管理系统v1.0\n");
printf(" 1.添加\n");
printf(" 2.插入\n");
printf(" 3.删除\n");
printf(" 4.查看\n");
printf(" 5.退出\n");
printf("请选择:\n");
scanf("%d",&i);
switch (i)
{
case 1: tianjia();break;
case 2: charu();break;
case 3: shanchu();break;
case 4: chakan();break;
default :exit(0);
}
printf("继续吗?Y.N\n");
fflush(stdin);
c=getchar();
}while(c=='y'||c=='Y');
}
void tianjia()//录入。
{
char a;
printf("请输入学号:");
scanf("%d",&stu[n].num);
fflush(stdin);
printf("请输入姓名:");
gets(stu[n].name);
printf("输入成绩1:");
scanf("%d",&stu[n].cj1);
printf("输入成绩2:");
scanf("%d",&stu[n].cj2);
printf("输入成绩3:");
scanf("%d",&stu[n].cj3);
stu[n].pingjun=(stu[n].cj1+stu[n].cj2+stu[n].cj3)/3;
n++;
// printf("%d",n);
}
void shanchu()//删除
{
int i,j,j1;
printf("请输入需要删除的学号:");
scanf("%d",&i);
for (j=0;j<n;j++)
{
if ((i)==stu[j].num)
j1=j;
}
/* printf("%d",j1);*/
for (j=j1;j<n;j++)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
n--;
chakan();
}
void charu()//插入
{
tianjia();
}
void chakan()//查看,按平均值排序(大到小)
{
int j,j1;
for (j=0;j<n;j++)
{
for (j1=j+1;j1<n;j1++)
{
if (stu[j].pingjun<stu[j1].pingjun)
{
temp=stu[j];
stu[j]=stu[j1];
stu[j1]=temp;
}
}
}
for (j=0;j<n;j++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[j].num,stu[j].name,stu[j].cj1,
stu[j].cj2,stu[j].cj3,stu[j].pingjun);
}
}

大家看看怎么能用这样的起头写完这个程序~!这个也写了一半了哦
#include <stdio.h>
#define N 3
#define M 50

struct student
{
int num;
char name[20];
float score[N],avr;
}s1[M];

struct student input();
void main()
{
int i=0;
char ch='y';
while(ch=='y'||ch=='Y')
{
stu[i] = input();
i++;
printf("是否继续输入:(y or n)");
fflush(stdin);
ch = getchar();
}
}
struct student input()
{
struct student s1;

printf("请输入学员信息:");
printf("学号:");
scanf("%d",&s1.num);
fflush(stdin);
printf("姓名:");
gets(s1.name);
printf("成绩:\n");
for(int i=0;i<N;i++)
{
printf("第%d门成绩:",i+1);
scanf("%f",&s1.score[i]);
}
s1.avr = (s1.score[0]+s1.score[1]+s1.score[2])/3;

return s1;
}

也就是说 第一种 成绩是没用数组 第二种是成绩是用数组的 但是第二种后面不会写了 大家帮帮忙 谢谢 了

搜索更多相关主题的帖子: C语言 学员 编写 管理 
2006-05-09 20:27
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

up


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-09 20:32
ayx1984
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-4-7
收藏
得分:0 

怎么没人来帮忙呀~~!!!我急着需要啊


2006-05-09 20:42
wdh86764930
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-20
收藏
得分:0 

#include <stdio.h>


struct student
{
int no; //学号
char name[15]; //姓名
int score[3]; //三门课程的成绩
double avr; //平均成绩
};

struct student stu[50]; //声明一个结构数组变量

struct student input(); //录入信息函数
void display(struct student stud[],int count); //显示信息函数
void sort(struct student stud[],int count); //排序函数
void insert(struct student stud[],int count); //插入函数
void del(struct student stud[],int count); //删除函数

void main()
{
int count;//计算输入人数
char ch;
ch='y';

printf("请输入学员信息。");
printf("\n");
count=0;
while ((ch=='y') || (ch=='Y'))
{

stu[count]=input(); //调用录入信息函数
count++;
printf("\n 是否继续?(y or n)");
scanf(" %c",&ch);
}
printf("\n排序前的学员信息如下:");
display(stu,count); //调用显示信息函数
sort(stu,count); //调用排序函数
printf("\n排序后的学员信息如下:");
display(stu,count);

printf("\n\n是否要插入新学员?(y or n)");
scanf(" %c",&ch);
if(ch=='y' || ch=='Y')
{
insert(stu,count); //调用插入信息函数
count++;
printf("\n插入新学员后的学员信息如下:");
display(stu,count);
}

printf("\n\n是否要删除某个学员?(y or n)");
scanf(" %c",&ch);
if(ch=='y' || ch=='Y')
{
del(stu,count); //调用删除信息函数
count--;
printf("\n删除后学员的信息如下:");
display(stu,count); //调用显示信息函数
}
}

struct student input() //录入信息函数
{
struct student studn;
int sum,j;
printf("\n学号:");
scanf("%d",&studn.no); //输入学号

printf("\n姓名:");
scanf("%s",studn.name); //输入姓名

printf("\n三门成绩:");
sum=0; //用来计算三门的总成绩
printf("\n");
for(j=0;j<3;j++)
{
printf("成绩%d: ",j+1);
scanf("%d",&studn.score[j]);
sum+=studn.score[j];
}
studn.avr=sum/3.0; //计算平均成绩
return studn;
}

void display(struct student stud[],int count) //显示信息函数
{
printf("\n学号\t姓名\t\t平均成绩");

printf("\n");
for(int i=0;i<count;i++)
{
printf("%-03d",stud[i].no);
printf("\t%-15s",stud[i].name);
printf("\t%-10.1f",stud[i].avr);
printf("\n");
}
}

void sort(struct student stud[],int count) //排序函数
{
int i,j;
struct student temp;//定义临时结构变量,用来替换
for(i=0;i<count;i++)
{
for(j=0;j<count-i-1;j++)
{
if(stud[j].avr<stud[j+1].avr)//用平均分的大小来排序
{
temp=stud[j+1];
stud[j+1]=stud[j];
stud[j]=temp;
}
}
}
}

void insert(struct student stud[],int count) //插入函数
{
struct student temp; //定义临时变量,用来接收输入的结构体变量
temp=input();
int i,j;
for(i=0;i<count;i++)
{
if (stud[i].avr<temp.avr) //
break;
}
for(j=count;j>i;j--)
{
stud[j]=stud[j-1];
}
stud[i]=temp;

}

void del(struct student stud[],int count) //删除函数
{
int i,num;
printf("\n请输入要删除的学员的学号:");
scanf("%d",&num);
for(i=0;i<count;i++)
{
if(stud[i].no==num) //计算出要删除的数的下标i
break;
}
for(;i<count+1;i++)
{
stud[i]=stud[i+1];
}
}

2006-05-09 21:03
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

你要的是这样吧:
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct student
{
int num;
char name[20];
int cj[N];
int pingjun;
}stu[50],temp;
int n=0;/* 学员个数 */
/* /////////////////////函数声明 */
void tianjia();
void shanchu();
void charu();
void chakan();
/* /////////////////////////////// */
void main()
{
int i;
char c;
do
{
system("cls");/*我认为还是清一下屏为好*/
printf("学员信息管理系统v1.0\n");
printf(" 1.添加\n");
printf(" 2.插入\n");
printf(" 3.删除\n");
printf(" 4.查看\n");
printf(" 5.退出\n");
printf("请选择:\n");
scanf("%d",&i);
switch (i)
{
case 1: tianjia();break;
case 2: charu();break;
case 3: shanchu();break;
case 4: chakan();break;
default :exit(0);
}
printf("继续吗?Y.N\n");
fflush(stdin);
c=getchar();
}while(c=='y'||c=='Y');
}
void tianjia()/* 录入。 */
{
char a;
int i;
float sum;
printf("请输入学号:");
scanf("%d",&stu[n].num);
fflush(stdin);
printf("请输入姓名:");
gets(stu[n].name);
for(i=0;i<N;i++)
{
printf("第%d门成绩:",i+1);
scanf("%d",&(stu[n].cj[i]));
sum+=stu[n].cj[i];
}

stu[n].pingjun=sum/N;
n++;
/* printf("%d",n); */
}
void shanchu()/* 删除 */
{
int i,j,j1;
printf("请输入需要删除的学号:");
scanf("%d",&i);
for (j=0;j<n;j++)
{
if ((i)==stu[j].num)
j1=j;
}
/* printf("%d",j1);*/
for (j=j1;j<n;j++)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
n--;
chakan();
}
void charu()/* 插入 */
{
tianjia();
}
void chakan()/* 查看,按平均值排序(大到小) */
{
int j,j1;
int i;
for (j=0;j<n;j++)
{
for (j1=j+1;j1<n;j1++)
{
if (stu[j].pingjun<stu[j1].pingjun)
{
temp=stu[j];
stu[j]=stu[j1];
stu[j1]=temp;
}
}
}
for (j=0;j<n;j++)
{
printf("%d\t%s\t",stu[j].num,stu[j].name);
for(i=0;i<N;i++)printf("%d\t",stu[j].cj[i]);
printf("\n");
}
}

[此贴子已经被作者于2006-5-9 21:06:27编辑过]

2006-05-09 21:04
ayx1984
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-4-7
收藏
得分:0 
4楼的 对了 就是你那样了谢谢哈
5楼的 你似乎没看明白我说的意思哦!

2006-05-09 21:12
ayx1984
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-4-7
收藏
得分:0 
随便问句  4楼  是学生 还是做什么的呀?

2006-05-09 21:19
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用ayx1984在2006-5-9 21:12:00的发言:
4楼的 对了 就是你那样了谢谢哈
5楼的 你似乎没看明白我说的意思哦!

没看出什么不同啊?----不要告诉我是成绩数量的事!

2006-05-09 22:54
ayx1984
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-4-7
收藏
得分:0 

其实都是一样的意思 就是表达方式不同


2006-05-10 07:21
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用ayx1984在2006-5-9 21:12:00的发言:
4楼的 对了 就是你那样了谢谢哈
5楼的 你似乎没看明白我说的意思哦!

原来如此!
既然这样,你还把话说的那么严重!
再说你开始也没说要优化程序啊------冤枉

2006-05-10 07:27
快速回复:用 C语言编写一个程序实现学员成绩管理
数据加载中...
 
   



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

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