厦门理工学院c课程设计学校人员信息管理系统Word文件下载.docx
《厦门理工学院c课程设计学校人员信息管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《厦门理工学院c课程设计学校人员信息管理系统Word文件下载.docx(63页珍藏版)》请在冰点文库上搜索。
(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、系统类的层次关系
people类——基类
包含的数据成员:
学号(教工号)、姓名、性别、出生时间、年龄。
student类——派生类
扩充的数据成员:
Chinese,English,Mathematics三门成绩,选修课成绩,选修课名称,专业。
teacher类——派生类
扩充的数据成员:
还包括职称(如教授/副教授/讲师),工资,所教课程,所属部门。
2、类的主要框架描述
1、基类:
classpeople{
public:
intnum;
stringname;
stringsex;
stringbirthday;
intage;
people(intnum1,stringname1,stringsex1,stringbirthday1,intage1)
{
num=num1;
name=name1;
sex=sex1;
birthday=birthday1;
age=age1;
}
};
2、学生类:
classstudent:
virtualpublicpeople{
stringmajor;
stringlesson;
intscore;
intChinese;
intEnglish;
intMathematics;
student(intnum1=0,stringname1="
"
stringsex1="
stringbirthday1="
intage1=0,
stringmajor1="
stringlesson1="
intscore1=0,intChinese1=0,intEnglish1=0,intMathematics1=0):
people(num1,name1,sex1,birthday1,age1)
major=major1;
lesson=lesson1;
score=score1;
Chinese=Chinese1;
English=English1;
Mathematics=Mathematics1;
}
voidAddData()
system("
cls"
);
cout<
<
请输入学号:
;
cin>
>
num;
for(intk=1;
k<
11;
k++)
if(num==k)
k=11;
if(k==11)
{
cout<
请输入10以内的学号:
endl;
AddData();
}
cout<
请输入学生姓名:
cin>
name;
请输入学生性别:
sex;
请输入学生专业:
major;
请输入学生出生时间:
birthday;
请输入学生年龄:
age;
请按顺序输入学生语文、英语、数学成绩:
Chinese;
English;
Mathematics;
请输入选修课名:
lesson;
请输入选修课成绩:
score;
voidDisplayData()
{
**************************************"
*"
学号"
"
姓名"
性别"
专业"
出生时间"
年龄"
语文"
英语"
数学"
选修课名"
选修课"
num<
name<
\t"
sex<
major<
\t"
birthday<
age<
Chinese<
English<
Mathematics<
lesson<
score<
}
voidsave(ofstream&
outf)
{
outf<
voidload(ifstream&
inf)
inf>
num>
name>
sex>
major>
birthday>
age>
Chinese>
English>
Mathematics>
lesson>
}stu[10];
3、教师类:
classteacher:
stringdepartment;
stringjob;
doublesalary;
teacher(intnum1=0,stringname1="
intage1=0,stringdepartment1="
doublesalary1=0,stringjob1="
):
department=department1;
salary=salary1;
job=job1;
voidAddData()
请按顺序输入教工号:
if(k==11)
请输入10以内的教工号"
AddData();
请输入教师姓名:
请输入教师性别:
请输入教师工作系别部门:
department;
请输入教师所教课程:
请输入教师出生时间:
请输入教师年龄:
请输入教师职称(如教授/副教授/讲师):
job;
请输入教师工资:
salary;
try//处理教师工资合法性
if(salary<
0)
throwsalary;
//抛出异常
catch(double)//捕获异常,异常类型是double型
输入有误,请重新输入"
//进行异常处理
main();
voidDisplayData()
{
cout<
************************************"
教工号"
工作部门"
职称"
工资"
课程"
*"
department<
job<
salary<
voidsave(ofstream&
voidload(ifstream&
department>
job>
salary>
}tea[10];
4、教师类功能函数:
template<
typenameQ>
QMax(Q*x,intlen)//求最大值模版
voidTAddData()//对教师类对象的添加功能函数
voidTDeleteData()//对教师类对象的删除功能函数
voidTUpdateData()//对教师类对象的修改功能函数
voidTSearchData_num()//按教工号查询教师类对象
voidTSearchData_nam()//按姓名查询教师类对象
voidTSearchData_sex()//按性别查询教师类对象
voidTSearchData_lesson()//按课程查询教师类对象
voidTFindMaxData()//对教师类对象的最高工资查询功能函数
voidTDisplayData()//对教师类对象按教工号升序排序打印功能函数
voidTsave()//对教师类对象的保存功能函数
voidTload()//对教师类对象的读取功能函数
5、学生类功能函数:
//求最大值模版
QMax(Q*x,intlen)
voidSAddData()//对学生类对象的添加功能函数
voidSDeleteData()//对学生类对象的删除功能函数
voidSUpdateData()//对学生类对象的修改功能函数
voidSSelectLesson()//学生进行选课
voidSSearchData_num()//按学号查询学生类对象
voidSSearchData_nam()//按姓名查询学生类对象
voidSSearchData_sex()//按性别查询学生类对象
voidSFindMaxData()//对学生类对象的最高英语成绩查询功能函数
voidSDisplayData()//对学生类对象按学号升序排序打印功能函数
voidSsave()//对学生类对象的保存功能函数
voidSload()//对学生类对象的读取功能函数
6、功能函数:
voidShowmenu()//主界面
voidMenu()//增加函数二级界面
voidMenu1()//查询函数二级界面
voidMenu2()//选课函数二级界面
voidMenu3()//查找工资最高和成绩最高二级界面
voidMenu4()//其他功能界面
voidSelectLesson()//选课功能函数
voidAddData()//添加功能函数
voidDeleteData()//删除功能函数
voidUpdateData()//修改功能函数
voidSearchData()//查询功能函数
voidFindMaxDataS()//英语成绩最高学生查询函数
voidFindMaxDataT()//工资最高教师查询函数
voidDisplayData()//显示全部人员记录函数
voidElsefunction()//其他功能函数
voidPassword()//密码功能函数
voidevaluate()//教师评分函数
voidTutoring()//辅导预约函数
voidFailsearch()//挂科查询功能函数
voidsave()//保存功能函数
voidload()//读取功能函数
intmain()//switch主体函数
四、系统测试用例
1、主界面显示
2、记录教师数据
3、教师工资数据异常处理
4、保存文件记录
文件保存在c:
\\根目录下后缀为dat可用记事本打开
5、选修课功能演示
6、显示所有人员记录
7、求教师工资最高或学生english最高
8、删除需要输入密码功能演示
9、其他功能演示
10、挂科查询
11、辅导预约功能
12、教师评分
五、错误记录及原因分析
六、源程序
见附件c++课程设计.cpp
#include<
iostream>
string>
fstream>
stdlib.h>
windows.h>
conio.h>
iomanip>
usingnamespacestd;
intmain();
voidShowmenu();
staticintT=0;
//用于标记老师类对象的个数
staticintS=0;
//用于标记学生类对象的个数
friendistream&
operator>
(istream&
is,student&
stu)//重载"
运算符函数声明
is>
stu.num;
stu.sex;
stu.major;
stu.birthday;
stu.age;
stu.lesson;
stu.score;
stu.Chinese;
stu.English;
stu.Mathematics;
returnis;
//退出函数
friendostream&
operator<
(ostream&
os,student&
os<
stu.num<
'
\n'
stu.name<
stu.sex<
stu.major<
stu.birthday<
stu.age<
stu.lesson<
stu.score<
stu.Chinese<
stu.English<
stu.Mathematics<
returnos;
charname1[20];