哈希の学生管理系统optionshWord文档下载推荐.docx
《哈希の学生管理系统optionshWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《哈希の学生管理系统optionshWord文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
intgirl=0,boy=0;
//定义两个全局变量,统计总人数
intIntJudge(intup,intlow,intnum)//判断输入是否正确
{
if(num>
up||num<
low)
returnFALSE;
else
returnTRUE;
}
intInitStudent(StudentNode&
stu,char*num,intk)//增加学生的信息
charchoice='
Y'
;
inti=0,score=0;
strcpy(stu.number,num);
stu.key=(num[6]-'
0'
)*100+(num[7]-'
)*10+(num[8]-'
);
cout<
<
"
姓名:
cin>
>
stu.name;
cout<
性别(G/B):
stu.sex;
if(stu.sex=='
B'
)
boy++;
elseif(stu.sex=='
G'
girl++;
else{stu.key=-1;
strcpy(stu.number,"
strcpy(stu.name,"
stu.sex='
returnERROR;
}
年龄:
cin>
stu.age;
是否有课程?
(Y/N):
choice;
while
(1)
if(choice=='
{stu.m_course[i]=newCourseNode;
课程名:
stu.m_course[i]->
name;
教师:
teacher;
分数:
score;
i++;
是否还有课程?
elseif(choice=='
N'
){stu.a=i;
break;
else{
输入有错!
!
是否输入课程?
for(intj=0;
j<
stu.a;
j++){score+=stu.m_course[j]->
stu.score=score;
returnSUCCESS;
voidShowStudent(StudentNodestu)//显示全部学生信息
inti=0,n=1;
->
setw(12)<
stu.number<
setw(9)<
stu.name<
setw(3)<
stu.sex<
setw(4)<
for(;
i<
i++)
if(n>
=3)cout<
endl<
||"
name<
teacher<
else
||"
n++;
endl;
voidShowMenu()//显示学生信息导航
学号
姓名性别年龄||课程
老师
成绩||课程
成绩
"
intKey(int&
k,StudentNode*stu,char*number)
if(!
strcmp(stu[k].number,number))
{cout<
该记录已经存在!
while(k<
=11&
&
stu[k++].key!
=-1);
if(k>
10){
存储已满!
else{
--k;
voidDisplay(StudentNode*stu)//显示已有学生信息
inti=0,j=0;
//i是人数,j是结构体的下标
ShowMenu();
if((girl+boy)==0)
现在没有任何学生记录!
while(i<
(girl+boy))
for(;
10;
j++)if(stu[j].key!
=-1)
ShowStudent(stu[j]);
intNumSearch(StudentNode*stu,char*m_number)//按学号查找学生信息
inti=0,score=0,EveScore=0,n=0;
ShowMenu();
if(!
strcmp(m_number,stu[i].number))
{ShowStudent(stu[i]);
if(stu[i].a!
=0)
{
总成绩:
stu[i].score;
EveScore=stu[i].score/stu[i].a;
平均成绩:
EveScore<
return
SUCCESS;
if(n==0){cout<
没有这样的记录!
voidNameSearch(StudentNode*stu)//按姓名查找学生信息
charm_name[15];
inti=0,n=0;
请输入您要查找的姓名:
m_name;
strcmp(m_name,stu[i].name))
if(n==0)
voidSexSearch(StudentNode*stu)//按性别查找学生信息
charm_sex;
请输入您要查找的学生的性别(G/B):
m_sex;
if(m_sex=='
||m_sex=='
{
if(m_sex==stu[i].sex)
ShowStudent(stu[i]);
if(n==0)
else{cout<
重新输入(G/B):
void
CourseSearch(StudentNode*stu)//按课程查找学生信息
charm_course[15];
请输入您要查找的课程:
m_course;
for(intj=0;
stu[i].a;
j++)
strcmp(m_course,stu[i].m_course[j]->
name))
//elsereturnn;
voidTeachSearch(StudentNode*stu)//按教师查找学生信息
charm_teacher[15];
请输入您要查找的教师姓名:
m_teacher;
strcmp(m_teacher,stu[i].m_course[j]->
teacher))
voidGradeSearch(StudentNode*stu)//按年级查找学生信息
charm_grade[5];
请输入您要查找年级的年份(如2008):
m_grade;
if(stu[i].number[2]==m_grade[2]&
stu[i].number[3]==m_grade[3]&
stu[i].key!
voidClassScore(StudentNode*stu)//统计课程平均成绩
intscore=0,i=0,n=0;
请输入您要统计的课程的名字:
i++)
score+=stu[i].m_course[j]->
else{cout<
这门课程的平均成绩:
score/=n;
score<
分"
voidAgeStat(StudentNode*stu)//统计年级平均年龄
int
age=0,i=0,n=0;
charyear[5];
请输入您要统计的年级的年份:
(如2008)"
year;
if(stu[i].key!
=-1&
stu[i].number[2]==year[2]&
stu[i].number[3]==year[3]){age+=stu[i].age;
else{age/=n;
该年级的平均年龄为"
age<
岁"
voidAdd(StudentNode*stu)//添加一个学生的信息
charm_number[10],choice='
intk=0;
//哈希地址
学号:
m_number;
k=((m_number[6]-'
)*100+(m_number[7]-'
)*10+(m_number[8]-'
))%11;
if(Key(k,stu,m_number))
if(InitStudent(stu[k],m_number,k))
成功保存!
是否继续输入学生信息?
if(choice!
='
choice!
{
else
重新输入?
)
重新输入(Y/N):
}
)break;
Delete(StudentNode*stu)//删除一个学生全部信息
charm_number[10],choice;
i=0;
请输入要删除的同学的学号:
if(NumSearch(stu,m_number))
确定要删除该同学的信息吗?
while
(1)
{if(choice=='
)
//找到该同学的下标记录
stu[i].key=-1;
stu[i].a=0;
stu[i].age=0;
strcpy(stu[i].name,"
if(stu[i].sex='
)--girl;
else--boy;
stu[i].sex='
strcpy(stu[i].number,"
j++)
stu[i].m_course[j]=NULL;
操作成功!
输入有误!
请重新选择:
Modify(StudentNode*stu)//修改一个学生的信息
charm_number[10],choice;
i=0,opt=0,k=0,j=0;
请输入要修改的同学的学号:
确定要修改该同学的信息吗?
以下是要修改的信息:
******************************************************************************"
1.学号
2.姓名
3.性别
4.年龄
5.课程
6.教师
7.成绩
请选择:
opt;
if(IntJudge(7,1,opt))
switch(opt)
{
case1:
学号修改为:
strcpy(stu[k].number,m_number);
stu[k].key=((m_number[6]-'
));
stu[k].a=stu[i].a;
stu[k].age=stu[i].age;
strcpy(stu[k].name,stu[i].name);
stu[k].sex=stu[i].sex;
stu[k].m_course[j]=stu[i].m_course[j];
stu[i].a=0;
stu[i].age=0;
strcpy(stu[i].name,"
stu[i].sex='
strcpy(stu[i].number,"
for(j=0;
stu[i].m_course[j]=NULL;
elsecout<
操作失败!
break;
case2:
姓名修改为:
stu[i].name;
case3:
性别修改为:
stu[i].sex;
if(stu[i].sex=='
){++girl;
--boy;
}
else{--girl;
++boy;
end