学生信息管理系统
的有关信息介绍如下:问题补充说明:1、 学生信息录入 a) 增加(录入)一个学生的数据信息,学生数据信息包括:学号、姓名、年龄、语文成绩、英语成绩、数学成绩、物理成绩、化学成绩; b) 姓名最大长度1-20位,只允许是字母或空格 c) 学号使用字符串,自动获得,最大长度3位,不足三位的用0补充,例如:006,099,100。 d) 对年龄进行限制范围10~20岁。对错误的输入进行提示,并提示用户进行修改 e) 对成绩进行限制范围0~100分。对错误的输入进行提示,并提示用户进行修改 f) 录入的数据去除左右空格 g) 以上所有信息必填,即不能为空 2、 打印学生记录 打印学生报表,报表格式如下:(添加一个平均分) -------------------------------------------------------------------------------------------------------- sno name age chinese english math phogric chemical total avg -------------------------------------------------------------------------------------------------------- 001 aa 17 68 77 89 78 56 345 002 bb 18 89 45 56 67 60 456 打印数据或者查询数据时,使用分页显示,每显示10条记录给客户一个提示。 平均分保留一位小数。分页处理也可以做成较复杂的,如有上一页,下一页,第一页,最后页,跳转到第几页的处理。 3、 记录排序 a) 对学号进行升、降序排序。 b) 对成绩总分进行升、降序排序。 c) 对各科成绩进行排序,提示用户选择需要进行排序的科目, 1) 选择按学号排序 2) 选择按成绩排序 4、 查询学生信息 a) 根据学员姓名和学号查询,并打印出来 b) 对学号进行精确查询,当用户输入错误的学号时提示用户重新输入。 c) 姓名查询时不区分大小写,并能够进行模糊查询。当未找到对应的信息时给出提示 d) 根据学生的成绩进行查询 5、 修改学员信息 a) 在查询功能里可以增加修改功能,定位到一条记录然后作修改的处理,提示:需要把原始记录的信息显示出来。修改后提示用户是否确认修改,确认以后才可以修改 6、 删除学员记录 a) 在查询功能里可以增加删除功能,删除前给客户一个提示,询问是否要删除,确认以后才可以删除 7、 统计成绩 a) 统计每门学科的平均分,打印各学科和总分的前三甲。打印一些关键信息。并显示其中不及格名单,优秀名单,及格人数,不及格人数。 8、 保存到文件 a) 将通过菜单功能1一一录入的数据保存到一个文件,用户如果选择了该功能,系统要让用户输入文件名,对文件名长度进行相应的判断,如果文件名已经存在给客户相应的提示,然后将数据保存到该文件; b) 文件名称命名规范:不能包含\ / : * ? “ < > | 文件名称左边如果有空格的话去除空格。在dos下文件名称不能超过8位 c) 请参照WORD的另存为功能。 d) 如果进度允许可以自行添加保存功能(参照WORD)。 9、 从文件读取数据 a) 请参照记事本的打开功能 10、 界面处理 a) 允许使用普通的DOS界面,但要求在使用新的每一个功能前对界面进行清屏处理,然后打出相关的标题。 开发平台Microsoft Visual Studio 2005 需要详细代码
/*我现在忙,没时间含停剂父抓殖吧持秋修菜帮你修改的完全符合要求,程序功矿攻居沿率相能基本实现,你自己对着改改。
程序功能:
能完成每位表班则利负策织字学生的某门课程的平时成绩和期末考试成绩的录扬入,
完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数发愿京得司热井门犯因据文件,
生成分数段统计文件沉(不及格人数,60-69数,70-79人数,80-89人数,90-100人数,及格率),
通过学生成绩的数据文件查询学生战办灯分花成绩(查询条件自定)煤发否年罪径并板女。
通过学生成绩的分段统计文件输出学生成绩分段情况和及格率。
越空挥身程序要求:
(1)能够完成300人以内任何人数的成绩处理。
(2)程序要有主控菜单
*/
#include<s种劳按蒸整伤云反肉政tdio.h>
#include<stdlib.h>
#include<string.h>
structstud
{
longnum;
charname[20];
doublescore;
};
typedefstructstucode
{
str连构策uctstudstudent;
structstucode*next;
}L;
voidmenu();
voi要手林妒任dcreatelist(structstucode**r);
voido块察见ut(structstucode*r);
voidsearch1(st兴架杆存见队ructstucode*r);
voidsea河群子花想贵粉烈rch2(structstucode*r);
voiddel(structstu请些衡很色半即随六code**r);
voidi足顺担仍nsert(structstucode**r);
voidsort(s望互顺析两而tructstucode**r);
voidmain()
{
charchoose;
intflag=1;
structstucode*r=NULL;
while(flag)
{
system("cls");
menu();
choose=getchar();
switch(choose)
{
case'1':
createlist(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'2':
search1(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'3':
search2(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'4':
del(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'5':
insert(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'6':
sort(&r);
out(r);
printf("Testingfunction1\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'7':
out(r);
printf("Testingfunction7\nPressanykeytocontinue\n");
getchar();
getchar();
break;
case'0':
flag=0;
printf("Theend.\n");
break;
default:printf("\nWrongSelection!(选择错误,请重选!)\n");getchar();getchar();
}
}
}
voidcreatelist(structstucode**r)
{
structstucode*p,*t;
longn;
chara[20];
doubles;
if(*r)*r=NULL;
printf("\n请输入:\n学号(请按学号升序排列)姓名分数(若要结束请输入三个为零)\n");
scanf("%ld%s%lf",&n,a,&s);
if(n==0)return;
p=(L*)malloc(sizeof(L));
p->student.num=n;
strcpy(p->***.name,a);
p->student.score=s;
p->next=NULL;
*r=p;
scanf("%ld%s%lf",&n,a,&s);
while(n)
{
t=p;
p=(L*)malloc(sizeof(L));
p->student.num=n;
strcpy(p->***.name,a);
p->student.score=s;
p->next=NULL;
t->next=p;
scanf("%ld%s%lf",&n,a,&s);
}
}
voidsearch1(structstucode*r)
{
longx;
if(!r)
{
printf("没有学生信息可查询!\n");
return;
}
printf("请输入要查询的学生信息的学生学号:\n");
scanf("%ld",&x);
while(r&&r->student.num!=x)
r=r->next;
if(r==NULL)
printf("Error!Nosuchstudent!\n");
else
printf("%ld%s%.2lf\n",r->student.num,r->***.name,r->student.score);
}
voidsearch2(structstucode*r)
{
charm[20];
if(!r)
{
printf("没有学生信息可查询!\n");
return;
}
printf("请输入要查询的学生信息的学生姓名:\n");
scanf("%s",m);
while(r&&strcmp(r->***.name,m))
r=r->next;
if(r==NULL)
printf("Error!Nosuchstudent!\n");
else
printf("%ld%s%.2lf\n",r->student.num,r->***.name,r->student.score);
}
voiddel(structstucode**r)
{
longk;
structstucode*p=*r,*t;
if(!(*r))
{
printf("没有学生信息可删除!\n");
return;
}
printf("请输入要删除的学生信息的学生学号:\n");
scanf("%ld",&k);
if(p->student.num==k)
*r=(*r)->next,free(p);
else
{
while(p->next&&p->next->student.num!=k)
p=p->next;
if(p->next==NULL)
printf("Error!Nosuchstudent!\n");
else
{
t=p->next;
p->next=p->next->next;
free(t);
}
}
}
voidinsert(structstucode**r)
{
longn;
chara[20];
doubles;
L*p,*t,*k;
printf("请输入要插入的学生信息的学生学号姓名分数:\n");
scanf("%ld%s%lf",&n,a,&s);
p=(L*)malloc(sizeof(L));
p->student.num=n;
p->student.score=s;
strcpy(p->***.name,a);
if(!(*r))
{
*r=p;
(*r)->next=NULL;
return;
}
if(p->student.num<(*r)->student.num)
p->next=(*r),(*r)=p;
else
{
t=*r;
k=t;
while(t->next&&t->next->student.num<=p->student.num)
t=t->next;
p->next=t->next;
t->next=p;
*r=k;
}
}
voidsort(structstucode**r)
{
structstucode*t,*p,*q,*z;
if(!r)
{
printf("没有学生信息可排序!\n");
return;
}
if(!(*r)||!(*r)->next)
return;
t=*r;
p=t->next;
t->next=NULL;
while(p)
{
q=p->next;
if(p->student.score>t->student.score)
{
p->next=t;
t=p;
}
else
{
z=t;
while(z->next&&z->next->student.score>=p->student.score)
z=z->next;
p->next=z->next;
z->next=p;
}
p=q;
}
*r=t;
}
voidout(structstucode*r)
{
printf("\n\n");
if(!r)
{
printf("没有学生信息可输出!\n");
return;
}
while(r)
{
printf("%ld%s%.2lf\n",r->student.num,r->***.name,r->student.score);
r=r->next;
}
printf("\n\n");
}
voidmenu()
{
printf("\n学生信息管理系统\n");
printf("\n菜单\n\n");
printf("\n1建立链表并显示\n");
printf("\n2查找某学号的学生信息\n");
printf("\n3查找某姓名的学生信息\n");
printf("\n4删除某学号的学生信息\n");
printf("\n5插入新的学生信息\n");
printf("\n6按分数降序排列输出\n");
printf("\n7输出\n");
printf("\n0退出\n");
printf("\n请选择您要执行的选项:\n");
}