| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:学生管理系统!如果我想程序更简便~应该怎样?
只看楼主 加入收藏
lovecookl
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-9-16
收藏
 问题点数:0 回复次数:1 
学生管理系统!如果我想程序更简便~应该怎样?

如果我要变的更简便``````````有方法吗
#include<stdio.h>
#include<string.h>
//定义结构体
struct student1//用于保存学生的数据
{
int className;//班级名称
int studentNO;//学生学号
char studentName[20];//学生姓名
int english;//英语成绩
int match;//数学
int chinese;//国语
int aveg;//用于合计总分数
int f;//用于判断数据是否显示0代表显示1代表不显示
}a[3000],student;
//输入学生成绩的函数并返回所输入学生的个数
int studentno()
{
int i,whileNO=0;

char c;

while(1)
{
//初始化结构体里的合计总分字段的数据
a[whileNO].aveg=0;

printf("请输入第%d个学生的班级名称",whileNO+1);
scanf("%d",&a[whileNO].className);
printf("请输入第%d个学生学号",whileNO+1);
scanf("%d",&a[whileNO].studentNO);
printf("请输入第%d个学生的姓名",whileNO+1);
fflush(stdin);
gets(a[whileNO].studentName);

printf("请输入第%d个学生的英语成绩",whileNO+1);
scanf("%d",&a[whileNO].english);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].english;
printf("请输入第%d个学生的数学成绩",whileNO+1);
scanf("%d",&a[whileNO].match);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].match;
printf("请输入第%d个学生的国语成绩",whileNO+1);
scanf("%d",&a[whileNO].chinese);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].chinese;

a[whileNO].f=0;

whileNO++;//用于统计总共所输入过学生的成绩

printf("是否要继续录入学生的成绩如果是请按任意键继续,退出请按N");
if((c=getchar())=='n'||(c=getchar()=='N'))
{
break;
}

}
//把刚才输入的学生成绩输出
printf("\n以下是你所输入的学生成绩\n");
printf("--------------------------------------\n");

for(i=0;i<whileNO;i++)
{
if(a[i].f==0)
{
printf("班级:%d",a[i].className);
printf(" 学号:%d",a[i].studentNO);
printf(" 姓名:%s",a[i].studentName);
printf(" 英语:%d",a[i].english);
printf(" 数学:%d",a[i].match);
printf(" 国语:%d",a[i].chinese);
printf(" 总分:%d",a[i].aveg);
printf("\n");
}

}



return(whileNO);
}
//用于操作用户数据添加
int add(int whileNO)//whileNO用来保存现在在结构体里学生的总人数
{
char c;
while(1)
{
//初始化结构体里的合计总分字段的数据
a[whileNO].aveg=0;

printf("请输入第%d个学生的班级名称",whileNO+1);
scanf("%d",&a[whileNO].className);
printf("请输入第%d个学生学号",whileNO+1);
scanf("%d",&a[whileNO].studentNO);
printf("请输入第%d个学生的姓名",whileNO+1);
fflush(stdin);
gets(a[whileNO].studentName);

printf("请输入第%d个学生的英语成绩",whileNO+1);
scanf("%d",&a[whileNO].english);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].english;
printf("请输入第%d个学生的数学成绩",whileNO+1);
scanf("%d",&a[whileNO].match);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].match;
printf("请输入第%d个学生的国语成绩",whileNO+1);
scanf("%d",&a[whileNO].chinese);
fflush(stdin);
a[whileNO].aveg+=a[whileNO].chinese;

a[whileNO].f=0;

whileNO++;//用于统计总共所输入过学生的成绩

printf("是否要继续录入学生的成绩请按任意键继续,如果退出请按N");
if((c=getchar())=='n'||(c=getchar()=='N'))
{
break;
}

}
return(whileNO);
}

void update(int number,int classname,int studentno)//number用来接收现在在结构体里学生的总人数
{
int i,yf=0,zd;//YF用来保存是否存在这个记录ZD用来保存你要修改那个字段的字段值
char c;
for(i=0;i<number;i++)
{
if(a[i].className==classname&&a[i].studentNO==studentno&&a[i].f==0)
{
yf++;
break;
}
}

if(yf!=0)
{
printf("\n以下是你所要修改的学生成绩\n");
printf("--------------------------------------\n");
printf("班级:%d",a[i].className);
printf(" 学号:%d",a[i].studentNO);
printf(" 姓名:%s",a[i].studentName);
printf(" 英语:%d",a[i].english);
printf(" 数学:%d",a[i].match);
printf(" 国语:%d",a[i].chinese);
printf(" 总分:%d",a[i].aveg);
printf("\n");
while(1)
{
printf("---------------------------------\n");
printf("1.修改班级名称\n");
printf("2.修改学生学号\n");
printf("3.修改学生姓名\n");
printf("4.修改英语成绩\n");
printf("5.修改数学成绩\n");
printf("6.修改国语成绩\n");
printf("请选择你要修改的字段");
scanf("%d",&zd);
switch(zd)
{
case 1:
{
printf("请输入新的班级名称");
scanf("%d",&a[i].className);
break;
}
case 2:
{
printf("请输入新的学生学号");
scanf("%d",&a[i].studentNO);
break;
}
case 3:
{
printf("请输入新的学生姓名");
scanf("%s",&a[i].studentName);
break;
}
case 4:
{
printf("请输入新的英语成绩");
a[i].aveg-=a[i].english;//先减去成绩
scanf("%d",&a[i].english);
a[i].aveg+=a[i].english;//再加回成绩这样就达到了成绩的完整
break;
}
case 5:
{
printf("请输入新的数学成绩");
a[i].aveg-=a[i].match;
scanf("%d",&a[i].match);
a[i].aveg+=a[i].match;
break;
}
case 6:
{
printf("请输入新的国语成绩");
a[i].aveg-=a[i].chinese;
scanf("%d",&a[i].chinese);
a[i].aveg+=a[i].chinese;
break;
}
default:
printf("输入有误");
break;
}
printf("\n以下是你所要修改后的学生资料\n");
printf("--------------------------------------\n");
printf("班级:%d",a[i].className);
printf(" 学号:%d",a[i].studentNO);
printf(" 姓名:%s",a[i].studentName);
printf(" 英语:%d",a[i].english);
printf(" 数学:%d",a[i].match);
printf(" 国语:%d",a[i].chinese);
printf(" 总分:%d\n",a[i].aveg);
printf("--------------------------------------\n");

printf("修改完成了吗?如果完成请按Y否则按N");
if((c=getchar())=='y'||(c=getchar())=='Y')
{
break;
}
}

}
else
{
printf("-----------------------------------\n");
printf("记录不存在\n");
}
}

int del(int number,int classname,int studentno)//number用来接收现在在结构体里学生的总人数
{
int i;

for(i=0;i<number;i++)
{
if(a[i].className==classname&&a[i].studentNO==studentno&&a[i].f==0)
{
for(;i<number;i++)
{
a[i]=a[i+1];
a[number-1].f=1;
}
}
}
return (number-1);

}

void search(int number,int classname,int studentno)//用于精确查找学生的数据
{
int i,yjl=0;//yjl有记录
for(i=0;i<number;i++)
{
if(a[i].className==classname&&a[i].studentNO==studentno&&a[i].f==0)
{
yjl++;
break;
}
}
if(yjl!=0)
{
printf("\n以下是你要查找的学生资料\n");
printf("--------------------------------------\n");
printf("班级:%d",a[i].className);
printf(" 学号:%d",a[i].studentNO);
printf(" 姓名:%s",a[i].studentName);
printf(" 英语:%d",a[i].english);
printf(" 数学:%d",a[i].match);
printf(" 国语:%d",a[i].chinese);
printf(" 总分:%d\n",a[i].aveg);
printf("--------------------------------------\n");
}
else
{
printf("-----------------------------------\n");
printf("很对不起你找不到你所需要的记录\n");
}
}

//利用泡程序实现数据值排序
void mp(int number,int classname)
{
int i,j;
for(i=0;i<number-1;i++)
{
for(j=0;j<number-i-1;j++)
{
if(a[j].aveg<a[j+1].aveg)
{
student=a[j];
a[j]=a[j+1];
a[j+1]=student;
}
}
}

for(i=0;i<number;i++)
{
if(a[i].f==0&&a[i].className==classname)
{
printf("班级:%d",a[i].className);
printf(" 学号:%d",a[i].studentNO);
printf(" 姓名:%s",a[i].studentName);
printf(" 英语:%d",a[i].english);
printf(" 数学:%d",a[i].match);
printf(" 国语:%d",a[i].chinese);
printf(" 总分:%d",a[i].aveg);
printf("\n");
}

}

}

//条件分支用于判断用户操作然后,调用相应的函数实现相关的功能
int select(int inputtype,int number)//传入一个inputtype的整型参数,然后对不同的数字进行不同的选择
//number用来接收现在在结构体里学生的总人数
{
int classname;
int studentno;
int selectno;//保存选择操作的值
char c;
switch(inputtype)
{
case 1://学生信息的添加与修改,删除
{
while(1)
{
printf("-------------------------\n");
printf("1.添加学生信息\n");
printf("2.修改学生信息\n");
printf("3.删除学生信息\n");
printf("4.返回上级菜单\n");
printf("请选择你要执行的操作:");
scanf("%d",&selectno);

switch(selectno)
{
case 1:
{
number=add(number);
break;
}
case 2:
{
printf("请输入你要修改同学的班名:");
scanf("%d",&classname);
printf("请输入你要修改同学的学号:");
scanf("%d",&studentno);
update(number,classname,studentno);
break;
}
case 3:
{
printf("请输入你要删除同学的班名:");
scanf("%d",&classname);
printf("请输入你要删除同学的学号:");
scanf("%d",&studentno);
number=del(number,classname,studentno);
break;
}
case 4:
{
break;
}
default:
printf("---------------------------------------\n");
printf("你输入有误\n");
break;
}
printf("---------------------------------------\n");
printf("是否返回上一级菜单Y返回N不返回\n");
if((c=getchar())=='y'||(c=getchar())=='Y')
{
break;
}
}


break;
}
case 2://查找某位学生的详细信息
{
printf("请输入班级名称");
scanf("%d",&classname);
printf("请输入学生学号");
scanf("%d",&studentno);
search(number,classname,studentno);
break;
}
case 3://查看某班成绩排名
{
printf("请输入班级名称");
scanf("%d",&classname);
mp(number,classname);
break;
}
default:break;
}
return(number);
}

void main()
{
int number;//用来接用户输入的学生总数

int selectno=0;//用来保存选项的数字

printf("欢迎使用Dot NET地球人学生管理系统\n");

number=studentno();

while(1)
{
printf("---------------------------------------\n");

printf("1.学生信息添加,修改,删除\n");

printf("2.查找某位学生的详细信息\n");

printf("3.查看某班成绩排名\n");

printf("4.退出学生管理系统\n");

printf("请选择你要执行的操作:");

scanf("%d",&selectno);

if(selectno>0&&selectno<=3)
{
number=select(selectno,number);
}
else if(selectno==4)
{
break;
}
else
{
printf("---------------------------------------\n");
printf("对不起你输入有误,请重新选择\n");
continue;
}
}
}

搜索更多相关主题的帖子: 系统 学生 管理 
2006-09-28 16:15
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

把所有你认为重复了的代码,尽量想办法去掉或者简短。

把所有你认为一个功能有点凌乱的函数改成几个函数,分工合作。

把所有你认为具有共同特性的函数(操作的数据基本统一)封装在一个类中,操作的数据做为数据成员,函数作为成员函数。

这样清晰点


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-28 17:02
快速回复:学生管理系统!如果我想程序更简便~应该怎样?
数据加载中...
 
   



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

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