标题:小弟刚写的一个学生管理系统的程序。请个位大虾看看,提点意见
只看楼主
卡拉是只猫
Rank: 1
等 级:新手上路
威 望:1
帖 子:129
专家分:0
注 册:2005-12-7
 问题点数:0 回复次数:41 
小弟刚写的一个学生管理系统的程序。请个位大虾看看,提点意见

#include<stdio.h>
void q();
void w();
void e(); //定义函数
void r();
void t();
void ccha();
void zcha();
int n;
struct student //结构体
{
char sxm[10];//学生姓名
int sage;//学生年龄
int sxb;//学生性别
int sdate;//学生生日
int C;//C语言成绩
int html;//HTML成绩
int VB;//VB成绩
int SQL;//SQL成绩
}s[100];
void main()
{
int a;
while(a!=6)
{
printf("≡≡学员表≡≡\n");
printf("1.学员信息录入!\n");
printf("2.学员S1学员的成绩录入!\n");
printf("3.学员信息查询!\n");
printf("4.学员成绩查询!\n"); //主菜单!
printf("5.学员成绩排名!\n");
printf("6.退出\n");
printf("请输入一个数字: ");
scanf("%d",&a);
switch (a)
{
case 1: q(); break;
case 2: w(); break;
case 3: e(); break; // 函数的调用
case 4: r(); break;
case 5: t(); break;
case 6: break;
}
}
}
void q() //录入学生信息函数的实现
{
int i,j,m;
j=1;
n=1;
printf("≡≡≡这里是学员信息录入!≡≡≡\n");
printf("您要输入几位学生的信息: ");
scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("第%d个学员的ID号:%d\n",j,n);
printf("请输入第%d个学员的姓名:",j);
scanf("%s",&s[i].sxm);
printf("请输入第%d个学员的年龄:",j);
scanf("%d",&s[i].sage);
printf("请输入第%d个学员的性别:(1为男,2为女)",j);
scanf("%d",&s[i].sxb);
printf("请输入第%d个学员的出生年月:",j);
scanf("%d",&s[i].sdate);
printf("\n\n");
j++;
n++;
}

}
void w() //这里是学员成绩录函数的实现
{
int i,j;
j=1;
printf("≡≡≡这里是学员的成绩录入!≡≡≡\n");
for(i=0;i<n-1;i++)
{
printf("学号为%d的学员C语言的成绩:",j);
scanf("%d",&s[i].C);
printf("请输入学号为%d的学员HTML的成绩:",j);
scanf("%d",&s[i].html);
printf("请输入学号为%d的学员VB的成绩:",j);
scanf("%d",&s[i].VB);
printf("请输入学号为%d的学员SQL的成绩:",j);
scanf("%d",&s[i].SQL);
printf("\n\n");
j++;
}
printf("没有学员.\n\n\n");
}
void e()//查询学员信息(ID查询)
{
int a;
char ch;
printf("≡≡≡这里是学员信息查询!≡≡≡\n");
do
{
printf("请输入要查询学员的ID号: ");
scanf("%d",&a);
printf(" ID号为%d的学员信息!\n",a);
printf("姓名为%s\n",s[a-1].sxm);
printf("年龄为%d\n",s[a-1].sage);
if(s[a-1].sxb==1)
{
printf("性别为男!\n");
}
else if(s[a-1].sxb==2)
{
printf("性别为女!\n");
}
else
{
printf("性别为人妖!\n");
}
printf("出生年月为%d\n",s[a-1].sdate);
printf("需要继续查询吗(y/n)?");
getchar();
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
}
void r()//成绩查询(ID查询)
{
int a;
char ch;
printf("≡≡≡这里是学员成绩查询!≡≡≡\n");
do
{
printf("请输入要查询学员的ID号: ");
scanf("%d",&a);
printf(" ID号为%d的学员信息!\n",a);
printf("要查学生的姓名为%s\n",s[a-1].sxm);
printf("C语言成绩为%d\n",s[a-1].C);
printf("HTML成绩为%d\n",s[a-1].html);
printf("VB成绩为%d\n",s[a-1].VB);
printf("SQL成绩为%d\n",s[a-1].SQL);
printf("需要继续查询吗(y/n)?");
getchar();
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');
}
void t()//成绩排名函数
{
int b;
printf("≡≡≡这里是学员成绩排名!≡≡≡\n");
printf("1.按C语言排名!\n");
printf("2.按总分排名!\n");
printf("3.退出!\n");
printf("请输入:");
scanf("%d",&b);
switch (b)
{
case 1: ccha(); break;
case 2: zcha(); break;
case 3: break;
}
}
void ccha()//按C排名
{
struct student temp[100];
int i,j,m;
m=1;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(s[i].C<s[j].C)
{
temp[i]=s[i];
s[i]=s[j];
s[j]=temp[i];
}
}
}
for(i=0;i<n-1;i++)
{
printf("第%d名,姓名为%s,C语言成绩为%d\n\n",m,s[i].sxm,s[i].C);
m++;
}
}
void zcha()//按总分排名
{
struct student temp[100];
int i,j,m;
m=1;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(s[i].C+s[i].html+s[i].VB+s[i].SQL<s[j].C+s[j].html+s[j].VB+s[j].SQL)
{
temp[i]=s[i];
s[i]=s[j];
s[j]=temp[i];
}
}
}
for(i=0;i<n-1;i++)
{
printf("第%d名,姓名为%s\n",m,s[i].sxm);
printf("C语言成绩为%d\n",s[i].C);
printf("HTML成绩为%d\n",s[i].html);
printf("VB成绩为%d\n",s[i].VB);
printf("SQL成绩为%d\n",s[i].SQL);
printf("这位同学的总成绩为%d\n",s[i].C+s[i].html+s[i].VB+s[i].SQL);
printf("\n\n");
m++;
}
}

搜索更多相关主题的帖子: 大虾 提点 系统 
2005-12-10 01:43
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
得分:0 
8错
2005-12-10 03:34
卡拉是只猫
Rank: 1
等 级:新手上路
威 望:1
帖 子:129
专家分:0
注 册:2005-12-7
得分:0 

长这么大第一次被别人夸。。。
谢谢,大哥!

搞不懂就问人,搞得懂就答人。
2005-12-10 03:51
fabio210
Rank: 1
等 级:新手上路
威 望:1
帖 子:58
专家分:0
注 册:2005-11-6
得分:0 
写的不错,呵呵

2005-12-10 09:40
楠木头
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-10-18
得分:0 
很不错吗?!!!

2005-12-10 12:25
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 

和我前两天写的一个程序不谋而合呢!也贴一下!
/***********************************************/
#include<stdio.h>
#define N 4 //N为学科数
#define M 100//M为学生总人数

struct student
{
long int studynumber;//学号
int ages;//年龄
int sexs;//性别,0为女,1为男
float scores[N];//各科成绩
float totalscores;//总成绩
}stu[M];

void creat(void)//建立一个成绩表
{
int i=0,j;
float s;
printf("Input the informations of all the students:\n");
for(;i<M;i++)
{
printf("Input the information of the %d student:\n",i+1);
printf("Input the studynumber:");
scanf("%ld",&stu[i].studynumber);
printf("Input the age:");
scanf("%d",&stu[i].ages);
printf("Input the sex:");
scanf("%d",&stu[i].sexs);
printf("Input the scores of the %d subjects:",N);
s=0;
for(j=0;j<N;j++)
{
scanf("%f",&stu[i].scores[j]);
s=s+stu[i].scores[j];
}
stu[i].totalscores=s;
}
}

void changeage(void)
{
int i=0,yes,age,number;
printf("输入要修改年龄学生的学号:");
lp:scanf("%ld",&number);yes=0;
for(;i<M;i++)
if (stu[i].studynumber==number)
{ yes=1;
printf("该生原来年龄是:%d,请输入新年龄:",stu[i].ages);
scanf("%d",&age);
stu[i].ages=age;
printf("操作成功!\n");
break;
}
if (!yes) {printf("Your input is error!请输入要修改年龄学生的学号:");goto lp;}
}

void printforstudynumber()//按学号打印第二门课程的成绩
{
int i=0;
for(;i<M;i++)
printf("学号:%ld,第二门课程成绩:%4.2f\n",stu[i].studynumber,stu[i].scores[1]);
}

void printforscore2()//按第二门课程成绩打印全部成绩
{
float score2[M];
int i=0,j;float k;
for(;i<M;i++) score2[i]=stu[i].scores[1];//将第二科成绩复制到数组score2
for (i=0;i<M-1;i++)
for (j=i+1;j<M;j++)
if(score2[i]<score2[j]) {k=score2[i];score2[i]=score2[j];score2[j]=k;}
for(i=0;i<M;i++) printf("%3.3f ",score2[i]);
printf("\n完成\n");
}

void paixu()//按总成绩排序
{
int i=0,j,x,h;float k;long int n;
for (;i<M-1;i++)
for(j=i+1;j<M;j++)
{
if(stu[i].totalscores<stu[j].totalscores)
{
k=stu[i].totalscores;stu[i].totalscores=stu[j].totalscores;stu[j].totalscores=k;
x=stu[i].ages;stu[i].ages=stu[j].ages;stu[j].ages=x;
x=stu[i].sexs;stu[i].sexs=stu[j].sexs;stu[j].sexs=x;
n=stu[i].studynumber;stu[i].studynumber=stu[j].studynumber;stu[j].studynumber=n;
for (h=0;h<N;h++)
{k=stu[i].scores[h];stu[i].scores[h]=stu[j].scores[h];stu[j].scores[h]=k;}
}
}
for(i=0;i<M;i++)
printf("学号:%10ld,年龄:%3d,性别:%2d,总成绩:%4.2f\n",stu[i].studynumber,stu[i].ages,stu[i].sexs,stu[i].totalscores);
printf("\n完成\n");
}

void main(void)
{ int funclage;
creat();
do{
printf("funcflag 1:修改单人年龄\n");
printf("funcflag 2:按学号显示全部第二门课成绩\n");
printf("funcflag 3:从大到小显示所有人第二门课成绩\n");
printf("funcflag 4:按总成绩排序\n");
printf("funclage 0:exit\n");
printf("Please input the funcflag:");//输入功能代号

scanf("%d",&funclage);
if (funclage==0) break;
else
{
switch(funclage){
case 1:
changeage();
break;
case 2:
printforstudynumber();
break;
case 3:
printforscore2();
break;
case 4:
paixu();
break;
default:
printf("Your input is error!Pleae input the funcflag:");
break;}
}
}while(1);
}


天行健,君子以自强不息!!QQ:68660681
2005-12-10 12:50
卡拉是只猫
Rank: 1
等 级:新手上路
威 望:1
帖 子:129
专家分:0
注 册:2005-12-7
得分:0 
上面的大哥,写的比我好多了。
我还要加油啊

搞不懂就问人,搞得懂就答人。
2005-12-10 13:04
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 
这也是前两天别人问的问题,
你也别夸我了,我那程序的不足之处多着了,
只是拿出来,相互指教,相互促进嘛

天行健,君子以自强不息!!QQ:68660681
2005-12-10 13:06
卡拉是只猫
Rank: 1
等 级:新手上路
威 望:1
帖 子:129
专家分:0
注 册:2005-12-7
得分:0 

搞不懂就问人,搞得懂就答人。
2005-12-10 13:15
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
得分:0 
我认为应该用动态链表,
M=100,如果M<100,那不是让费内存啊,

M>100,程序就要出错,不过一个班应该没那么多人...

用动态好点,我是菜鸟,请指教!!

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-10 13:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-37573-1-1.html




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

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