资源描述:
《本科生导师制问题设计方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本科生导师制问题设计方案1.问题描述 在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带领n个学生,如果老师还带研究生,那么研究生也可直接负责本科生。 本科生导师制问题中的数据元素具有如下形式:⑴导师带研究生:(老师,((研究生1,(本科生1,…,本科生m)),…))⑵导师不带研究生:(老师,(本科生1,…,本科生m))导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级。2.功能要求要求完成以下功能:⑴插入:将某位本科生或研究生插入到广义表的相应位置;⑵删除:将某本科
2、生或研究生从广义表中删除;⑶查询:查询导师、本科生(研究生)的情况;⑷统计:某导师带了多少个研究生和本科生;⑸输出:将某导师所带学生情况输出。3实现要点 对广义表采用头尾表示方的存储结构,在建立广义表时,由广义表的书写形式转化头尾存储结构,还要把人员信息的书面形式转化为具体的类。 人员信息的书面形式用这样的形式:高老师-教授-0、李刚-二班-1、李明-二班-2 人员信息中的姓名、职称、班级、人员类型用“-”隔开,如:高老师-教授-0,高老师表示姓名,教师表示职称,0表示人员的类型是教师;李刚表示姓名,二班表示班级,1表示人员的类型是研究生;李明表示姓名
3、,二班表示班级,2表示人员的类型是本科生4类定义为人员信息对象(存储学生、老师的姓名、班级或职称信息)建立Personnel类,其类定义如下:classPersonnel{public:Personnel(stringst);Personnel();stringGetPersonnelinfo();intGetTag();//返回人员类型stringGetPersonnelname();//返回人员姓名private:inttag;//标识人员的类型stringpersonnelinfo;//学生班级和教师职称stringpersonnelname;//人员
4、姓名};在Personnel类中,提供了如下成员函数:(1)函数声明:Personnel(stringst)完成的功能:有参构造函数,把st表示的信息转化为人员的相应信息(2)函数声明:Personnel()完成的功能:无参构造函数,初始化人员信息(3)函数声明:stringGetPersonnelinfo()完成的功能:返回学生班级和教师职称信息(4)函数声明:intGetTag()完成的功能:返回人员类型(5)函数声明:stringGetPersonnelname()完成的功能:返回人员姓名为广义表的节点信息建立GLNode类,其类定义如下:templa
5、testructGLNode{inttag;Tdata;structatom{GLNode*hp,*tp;}ptr;};为广义表建立GLists类,其类定义如下:templateclassGLists{public:GLists();GLists(stringst);GLists(GListsls1,GListsls2);~GLists(){delete[]ls;}intDepth();GLists*Head();GLists*Tail();voidPrnt();voidQueryInfo(GLNode*ls
6、,stringmanname);voidStatisticInfo(GLNode*ls,stringmannameg);voidStudentInfo(GLNode*ls,stringmannameg);boolDelStudent(GLNode*ls,stringmannameg);boolInsertStudent(GLNode*ls,stringmannameg,stringstuinfo);voidSetinfo();voidOutinfo();GLNode*Getls();voidOutStatisticinfo();
7、private:GLNode*ls;stringstprt;voidServer(string&st,string&hst);GLNode*Crtlists(stringst);voidEna(stringstr);voidPrt(GLNode*ls);intNumberStudent;intNumbergraduate;booloutflag;};在GLists类中,提供了如下成员函数:(1)函数声明:GLists()完成的功能:初始化为空的广义表(2)函数声明:GLists(stringst)完成的功能:按广义表的书面格式建立广义表的存
8、储结构截图:(3)函数声明:GLists(GList