理学学校人员信息管理系统精品文档Word格式文档下载.docx
《理学学校人员信息管理系统精品文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《理学学校人员信息管理系统精品文档Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
Student类——派生类
Teacher类——派生类
(3)数据基本功能:
增加数据:
AddData()函数。
删除数据:
DeleteData()函数。
根据学号(教工号),删除该人员的记录。
修改数据:
UpdateData()函数。
对学生,根据学号,能够修改3门课的成绩;
对教师,根据教工号,能够修改“职称”和“工资”。
查找功能:
1)SearchData()函数。
要求能够根据“学号(教工号)”、“姓名”、“性别”三项实现查询,并能在屏幕上显示满足条件的数据记录。
2)FindMaxData()函数。
对学生,查找“English”课程成绩最高的学生记录并打印;
对教师,查找“工资”最高的教师记录并打印。
要求:
采用函数模板实现。
显示功能:
DisplayData()函数。
在屏幕上打印所有的数据记录;
打印时,先打印学生的记录,后打印教师的记录。
并且按学生(教工号)升序打印。
(4)重载功能:
要求对“<<”和“>>”运算符进行重载。
考虑到输人学生(教工)姓名时,名字中可能引入空格,所以重载“>>”运算符时,需要满足这个要求。
(5)异常处理功能:
设置异常处理,对教师工资为负数的情况给出提示。
(6)文件的输入输出功能:
能够从文件中读入数据。
外部文件为Student_ext.dat,Teacher_ext.dat。
能够将数据保存到相应目录的文件中。
保存数据时,分两个文件分别保存Student.dat,Teacher.dat。
(7)参考系统界面如示:
1-增加一位人员(教师、学生)记录
2-删除一个人员记录
3-修改一个人员记录
4-根据“学号(教工号)”、“姓名”、“性别”查找记录
5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工资的教师
6-显示全部人员记录
7-从外部文件追加数据
8-将所有数据保存到磁盘文件
9-退出系统。
三、总体设计
1.系统类的程序关系
2.类的主要框架描述
***************************************************************************
基类:
classpeople{
public:
intnum;
charname[30];
charsex[15];
charmajor_or_department[50];
chardate[30];
intage;
people(intn,charnam[30],chars[15],charo[50],chard[30],inta)
{
num=n;
strcpy(name,nam);
strcpy(sex,s);
strcpy(major_or_department,o);
strcpy(date,d);
age=a;
}
};
***************************************************************************
教师类:
classteacher:
virtualpublicpeople
{
teacher(intn=0,charnam[30]="
"
chars[15]="
charo[50]="
chard[30]="
inta=0,charj[50]="
doublesa=0):
people(n,nam,s,o,d,a),salary(sa){strcpy(job,j);
}
charjob[50];
doublesalary;
friendistream&
operator>
>
(istream&
is,teacher&
tea);
//重载"
运算符函数声明
friendostream&
operator<
<
(ostream&
os,teacher&
tea);
voidAddData();
voidDisplayData();
}tea[10];
学生类:
classstudent:
student(intn=0,charnam[30]="
chard[15]="
inta=0,intc=0,inte=0,intm=0):
people(n,nam,s,o,d,a),score_chinese(c),score_english(e),score_mathematices(m){}
intscore_chinese;
intscore_english;
intscore_mathematices;
is,student&
stu);
friendostream&
os,student&
voidAddData();
}stu[10];
教师类功能函数
template<
typenameQ>
QMax(Q*x,intlen)
voidTAddData()//对教师类对象的添加功能函数
voidTDeleteData()//对教师类对象的删除功能函数
voidTUpdateData()//对教师类对象的修改功能函数
voidTSearchData_num()//按教工号查询教师类对象
voidTSearchData_nam()//按姓名查询教师类对象
voidTSearchData_sex()//按性别查询教师类对象
voidTFindMaxData()//对教师类对象的最高工资查询功能函数
voidTDisplayData()//对教师类对象按教工号升序排序打印功能函数
voidTsave()//对教师类对象的保存功能函数
voidTload()//对教师类对象的读取功能函数
学生类功能函数
voidSAddData()//对学生类对象的添加功能函数
voidSDeleteData()//对学生类对象的删除功能函数
voidSUpdateData()//对学生类对象的修改功能函数
voidSSearchData_num()//按学号查询学生类对象
voidSSearchData_nam()//按姓名查询学生类对象
voidSSearchData_sex()//按性别查询学生类对象
voidSFindMaxData()//对学生类对象的最高英语成绩查询功能函数
voidSDisplayData()//对学生类对象按学号升序排序打印功能函数
voidSsave()//对学生类对象的保存功能函数
voidSload()//对学生类对象的读取功能函数
功能函数
voidShowmenu()
voidMenu()
voidMenu1()
voidAddData()//添加功能函数
voidDeleteData()//删除功能函数
voidUpdateData()//修改功能函数
voidSearchData()//查询功能函数
voidFindMaxDataS()//英语成绩最高学生查询函数
voidFindMaxDataT()//工资最高教师查询函数
voidDisplayData()//显示全部人员记录函数
voidsave()//保存功能函数
voidload()//读取功能函数
intmain()
四、系统测试用例
主菜单界面
异常处理
教工号学号输入重复报错
按升序排列所有记录
保存记录
五、错误记录及原因分析
1.字符数组直接赋值发生错误
错误原因分析:
字符数组不可直接赋值,而要用stycpy函数进行赋值。
2.在派生类析构函数中初始化出现问题。
要给形参赋初值。
3.排序功能有错误
排序功能函数只有一个循环,当没有按顺序输入教工号或学号时,不能输出排序。
要在循环外再加一个循环进行控制。
4.添加记录输入重复教工号或学号时不会显示输入有误
当输入有误