哈希の学生管理系统optionsh.docx

上传人:b****5 文档编号:6640558 上传时间:2023-01-08 格式:DOCX 页数:11 大小:18.61KB
下载 相关 举报
哈希の学生管理系统optionsh.docx_第1页
第1页 / 共11页
哈希の学生管理系统optionsh.docx_第2页
第2页 / 共11页
哈希の学生管理系统optionsh.docx_第3页
第3页 / 共11页
哈希の学生管理系统optionsh.docx_第4页
第4页 / 共11页
哈希の学生管理系统optionsh.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

哈希の学生管理系统optionsh.docx

《哈希の学生管理系统optionsh.docx》由会员分享,可在线阅读,更多相关《哈希の学生管理系统optionsh.docx(11页珍藏版)》请在冰豆网上搜索。

哈希の学生管理系统optionsh.docx

哈希の学生管理系统optionsh

哈希の学生管理系统~~options.h

2009-12-2619:

58

#include

#include

#include

#include

#include

usingnamespacestd;

typedefstruct//定义一个课程结构体

{

charname[15];

intscore;

charteacher[15];

}CourseNode,*m_class;

typedefstruct

{

int  key;

charnumber[10];

charname[15];

int  age;

int  a,score;//a记录课程的个数

charsex;

m_classm_course[10];//指向课程的十个指针,不是链表结构

}StudentNode;

#defineSUCCESS   1

#defineERROR     0

#defineFALSE     0

#defineTRUE      1

intgirl=0,boy=0;//定义两个全局变量,统计总人数

intIntJudge(intup,intlow,intnum)//判断输入是否正确

{  if(num>up||num

     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]-'0')*10+(num[8]-'0');

cout<<"      姓名:

";

cin>>stu.name;

   cout<<"      性别(G/B):

";

cin>>stu.sex;

if(stu.sex=='B')

  boy++;

elseif(stu.sex=='G')

  girl++;

else{stu.key=-1;strcpy(stu.number,"");strcpy(stu.name,"");stu.sex='0';returnERROR;}

cout<<"      年龄:

";            cin>>stu.age;

cout<<"      是否有课程?

(Y/N):

";cin>>choice;

while

(1)

{

   if(choice=='Y')

   {stu.m_course[i]=newCourseNode;

         cout<<"      课程名:

";   cin>>stu.m_course[i]->name;

      cout<<"      教师:

";    cin>>stu.m_course[i]->teacher;

      cout<<"      分数:

";     cin>>stu.m_course[i]->score;

            i++;

      cout<<"      是否还有课程?

(Y/N):

";  cin>>choice;

   }

   elseif(choice=='N'){stu.a=i;break;}

   else{   cout<<"      输入有错!

!

!

是否输入课程?

(Y/N):

";    cin>>choice;}

}

for(intj=0;jscore;  stu.score=score;}

   returnSUCCESS;

}

voidShowStudent(StudentNodestu)//显示全部学生信息

{  inti=0,n=1;

cout<<"->"<

for(;i

{  if(n>=3)cout<name<teacher<score;

  else  cout<<"||"<name<teacher<score;

  n++;

}

cout<

}

voidShowMenu()//显示学生信息导航

{

cout<

}

intKey(int&k,StudentNode*stu,char*number)

{

if(!

strcmp(stu[k].number,number))  {cout<<"      该记录已经存在!

!

!

";returnERROR;}

while(k<=11&&stu[k++].key!

=-1);

if(k>10){    cout<<"      存储已满!

!

!

";   returnERROR;   }

else{  --k;returnSUCCESS;}

}

voidDisplay(StudentNode*stu)//显示已有学生信息

{

   inti=0,j=0;//i是人数,j是结构体的下标

ShowMenu();

if((girl+boy)==0)  cout<<"      现在没有任何学生记录!

!

!

"<

while(i<(girl+boy))

{  for(;j<10;j++)if(stu[j].key!

=-1)  ShowStudent(stu[j]);

    i++;         

}

}

intNumSearch(StudentNode*stu,char*m_number)//按学号查找学生信息

{

inti=0,score=0,EveScore=0,n=0;

   ShowMenu();

for(;i<10;i++)   if(!

strcmp(m_number,stu[i].number))     {ShowStudent(stu[i]);n++;break;}

if(stu[i].a!

=0)

{

  cout<<"      总成绩:

"<

"<

  return  SUCCESS;

}

if(n==0){cout<<"      没有这样的记录!

!

!

"<

   return  SUCCESS;

}

voidNameSearch(StudentNode*stu)//按姓名查找学生信息

{

charm_name[15];

inti=0,n=0;

cout<<"   请输入您要查找的姓名:

";   cin>>m_name;   ShowMenu();

for(;i<10;i++)   if(!

strcmp(m_name,stu[i].name))     {ShowStudent(stu[i]);  n++;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

}

voidSexSearch(StudentNode*stu)//按性别查找学生信息

{

charm_sex;

inti=0,n=0;

cout<<"   请输入您要查找的学生的性别(G/B):

";   cin>>m_sex;

while

(1)

{

    if(m_sex=='G'||m_sex=='B')

    {   ShowMenu();

         for(;i<10;i++)   if(m_sex==stu[i].sex)     {  ShowStudent(stu[i]);  n++;}

         if(n==0)  cout<<"      没有这样的记录!

!

!

"<

    }

  else{cout<<"      输入有错!

!

!

重新输入(G/B):

";    cin>>m_sex;}

}

}

void  CourseSearch(StudentNode*stu)//按课程查找学生信息

{

charm_course[15];

inti=0,n=0;

cout<<"   请输入您要查找的课程:

";   cin>>m_course;    ShowMenu();

for(;i<10;i++)   

  for(intj=0;j

   if(!

strcmp(m_course,stu[i].m_course[j]->name))   {  ShowStudent(stu[i]);n++;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

//elsereturnn;

}

voidTeachSearch(StudentNode*stu)//按教师查找学生信息

{

charm_teacher[15];

inti=0,n=0;

cout<<"   请输入您要查找的教师姓名:

";   cin>>m_teacher;    ShowMenu();

for(;i<10;i++)   

  for(intj=0;j

   if(!

strcmp(m_teacher,stu[i].m_course[j]->teacher))   {  ShowStudent(stu[i]);n++;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

}

voidGradeSearch(StudentNode*stu)//按年级查找学生信息

{

charm_grade[5];

inti=0,n=0;

cout<

";   cin>>m_grade;    ShowMenu();

for(;i<10;i++)   

  if(stu[i].number[2]==m_grade[2]&&stu[i].number[3]==m_grade[3]&&stu[i].key!

=-1)   {  ShowStudent(stu[i]);n++;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

}

voidClassScore(StudentNode*stu)//统计课程平均成绩

{

   intscore=0,i=0,n=0;

charm_course[15];

cout<<"   请输入您要统计的课程的名字:

";   cin>>m_course;

for(;i<10;i++)

      for(intj=0;j

          if(!

strcmp(m_course,stu[i].m_course[j]->name))   {  score+=stu[i].m_course[j]->score;n++;break;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

else{cout<<"      这门课程的平均成绩:

";   score/=n;   cout<

}

voidAgeStat(StudentNode*stu)//统计年级平均年龄

{

   int  age=0,i=0,n=0;

charyear[5];

cout<<"   请输入您要统计的年级的年份:

(如2008)";  cin>>year;

for(;i<10;i++)   

  if(stu[i].key!

=-1&&stu[i].number[2]==year[2]&&stu[i].number[3]==year[3]){age+=stu[i].age;n++;}

if(n==0)  cout<<"      没有这样的记录!

!

!

"<

else{age/=n;  cout<<"      该年级的平均年龄为"<

      

}

  

voidAdd(StudentNode*stu)//添加一个学生的信息

{

   charm_number[10],choice='Y';

intk=0;//哈希地址

while

(1)

{  

    if(choice=='Y')

  {  cout<

";

        cin>>m_number;

        k=((m_number[6]-'0')*100+(m_number[7]-'0')*10+(m_number[8]-'0'))%11;

         if(Key(k,stu,m_number))

           if(InitStudent(stu[k],m_number,k))

                  {cout<<"      成功保存!

!

!

是否继续输入学生信息?

(Y/N):

";   cin>>choice;

              if(choice!

='Y'&&choice!

='N')

        {

         cout<<"      输入有错!

!

!

是否继续输入学生信息?

(Y/N):

";cin>>choice;

        }

                  }

           else

         {cout<<"      输入有错!

!

!

重新输入?

(Y/N):

";    cin>>choice;

             if(choice!

='Y'&&choice!

='N')        {cout<<"      输入有错!

!

!

重新输入(Y/N):

";cin>>choice;}

            }

    else{cout<<"      输入有错!

!

!

重新输入?

(Y/N):

";    cin>>choice;}

  }

  elseif(choice=='N')break;

  else  {cout<<"      输入有错!

!

!

重新输入?

(Y/N):

";    cin>>choice;}

}

}

void  Delete(StudentNode*stu)//删除一个学生全部信息

{

charm_number[10],choice;

int  i=0;

cout<

";        cin>>m_number;

if(NumSearch(stu,m_number))

{   cout<

(Y/N):

";   cin>>choice;

     while

(1)

  {if(choice=='Y')

   {  for(;i<10;i++)   if(!

strcmp(m_number,stu[i].number))     break;//找到该同学的下标记录

       stu[i].key=-1;       stu[i].a=0;  stu[i].age=0;

                strcpy(stu[i].name,"");    

    if(stu[i].sex='G')--girl;else--boy;

                stu[i].sex='0';

             strcpy(stu[i].number,"");

             for(intj=0;j<10;j++)  stu[i].m_course[j]=NULL;

    cout<

!

!

"<

    break;

   }

   elseif(choice=='N')    break;

   else{cout<<"      输入有误!

!

!

请重新选择:

";cin>>choice;}

  }

}

}

void  Modify(StudentNode*stu)//修改一个学生的信息

{

   charm_number[10],choice;

int  i=0,opt=0,k=0,j=0;

cout<<"   请输入要修改的同学的学号:

";        cin>>m_number;

if(NumSearch(stu,m_number))

{   cout<

(Y/N):

";   cin>>choice;

   while

(1)

  {if(choice=='Y')

   {  

    for(;i<10;i++)   if(!

strcmp(m_number,stu[i].number))     break;//找到该同学的下标记录

       

          cout<<"      以下是要修改的信息:

"<

    cout<

    cout<<"     1.学号   2.姓名   3.性别   4.年龄   5.课程   6.教师   7.成绩     "<

    cout<<"******************************************************************************"<

                cout<<"      请选择:

";      cin>>opt;

             if(IntJudge(7,1,opt))

       {

           switch(opt)

        {

            case1:

  cout<

";  cin>>m_number;

                                  k=((m_number[6]-'0')*100+(m_number[7]-'0')*10+(m_number[8]-'0'))%11;

                           if(Key(k,stu,m_number))

            {  strcpy(stu[k].number,m_number);

                stu[k].key=((m_number[6]-'0')*100+(m_number[7]-'0')*10+(m_number[8]-'0'));

               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;

                         for(intj=0;j<10;j++)  stu[k].m_course[j]=stu[i].m_course[j];

                                     stu[i].key=-1;      stu[i].a=0;stu[i].age=0;

                                     strcpy(stu[i].name,"");    stu[i].sex='0';

                                  strcpy(stu[i].number,"");

                                  for(j=0;j<10;j++)  stu[i].m_course[j]=NULL;

                                     cout<

!

!

"<

             }

         elsecout<<"      操作失败!

!

!

";break;

           case2:

  cout<

";  cin>>stu[i].name;cout<

!

!

"<

          case3:

  cout<

";  cin>>stu[i].sex;

            if(stu[i].sex=='G'){++girl;--boy;}  else{--girl;++boy;}

            cout<

!

!

"<

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1