logo资料库

C++学校人员信息管理系统课程设计.doc

第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
资料共28页,剩余部分请下载后查看
《程序设计实践学校人员信息管理实验报告》
(2018-2019学年 第3学期)
1.学校人员信息管理系统
1.1问题描述
1.2基本要求
(1)数据基本功能:
(2)重载功能:
(3)异常处理功能:
(4)文件的输入输出功能(选择):
(5)参考系统界面如示:
1.3整体框架
1.4模块划分
1.5源程序
1.6 测试数据及测试情况
图1.2 程序界面
图1.3 输入学生信息
图1.4 输入老师信息
图1.5 显示所有成员信息
图1.6 修改成员信息
图1.7 删除人员信息
图1.8 查找人员信息
图1.9 查找英语成绩最高和工资最高的人员
2.实验总结
3.日志
《程序设计实践学校人员信息管理实验报告》 (2018-2019 学年 第 3 学期) 姓名: 学号: 班 级: 指导教师: 开设时间: 2019.6.24-2019.7.12 报告日期: 评 分: 2019.7.12 计算机与信息工程学院 1
目录 1.学校人员信息管理系统......................................................................... 3 1.1 问题描述........................................................................................ 3 1.2 基本要求........................................................................................ 3 1.3 整体框架........................................................................................ 5 1.4 模块划分........................................................................................ 6 1.5 源程序............................................................................................ 6 1.6 测试数据及测试情况................................................................. 23 2.实验总结............................................................................................... 25 3.日志........................................................................................................27 2
1.学校人员信息管理系统 1.1 问题描述 近年来,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进 入人类社会的各个领域并发挥着越来越重要的作用,信息的自动处理以及网络 式的信息交互方式也越来越被人们认可和应用。学校人员信息管理系统是一个 学校单位不可缺少的部分。但一直以来人们使用传统人工的方式管理文件信息, 这种管理方式存在着许多缺点如:效率低、保密性差 ,而且时间一长 , 将产生 大量的文件和数据 , 这对于查找、更新和维护都带来了不少的困难。所以利用 计算机来管理学生的信息是现在各个学校都在积极进行的工作之一。 本程序针对这样的问题,使用计算机对学生信息进行管理,能够极大地提 高学生基本信息管理的效率。 1.2 基本要求 设计任务:设计一个学校人员信息管理系统,可以实现对学校人事的信息管理。 基本功能要求: (1)建立人员信息数据 包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。其 中, 对学生,还包括 3 门课的成绩(Chinese, English, Mathematics)。三门课的成绩为 int 型数据。 对教师,还包括职称(如教授/副教授/讲师),工资(如 1432.50)。工资为 double 型数据。 【英语命名提示】: 3
姓名:name; 性别:sex; 专业:major; 工作系别:department 教授:professor; 副教授:Associate Professor; 讲师:Lecturer 工资:salary (2)使用继承的方法构造 3 个类,对相应的对象放置 10 个学生(教师)信息。 People 类——虚基类 Student 类——派生类 Teacher 类——派生类 (1)数据基本功能: 增加数据:AddData()函数。 删除数据:DeleteData()函数。根据学号(教工号),删除该人员的记录。 修改数据: UpdateData()函数。对学生,根据学号,能够修改 3 门课的成绩;对教 师,根据教工号,能够修改“职称”和“工资”。 查找功能: 1)SearchData()函数。要求能够根据“学号(教工号)”、“姓名”、“性别”三项 实现查询,并能在屏幕上显示满足条件的数据记录。 2)FindMaxData()函数。对学生,查找“English”课程成绩最高的学生记录并打 印;对教师,查找“工资”最高的教师记录并打印。要求:采用函数模板实现。 显示功能:DisplayData()函数。在屏幕上打印所有的数据记录;打印时,先打印 学生的记录,后打印教师的记录。并且按学生(教工号)升序打印(选择)。 (2)重载功能: 要求对“<<”和“>>”运算符进行重载。考虑到输人学生(教工)姓名时, 名字中可能引入空格,所以重载“>>”运算符时,需要满足这个要求。 (3)异常处理功能: 设置异常处理,对教师工资为负数的情况给出提示。 (4)文件的输入输出功能(选择): 能够从文件中读入数据。外部文件为 Student_ext.dat, Teacher_ext.dat。 能够将数据保存到相应目录的文件中。保存数据时,分两个文件分别保存 Student.dat, Teacher.dat。 (5)参考系统界面如示: 4
参考系统界面如下: 1-增加一位人员(教师、学生)记录 2-删除一个人员记录 3-修改一个人员记录 4-根据“学号(教工号)”、“姓名”、“性别”查找记录 5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工 资的教师 6-显示全部人员记录 7-从外部文件追加数据 8-将所有数据保存到磁盘文件 9-退出系统。 如下例题所示: 1.3 整体框架 5
图 1.1 学校人员信息管理系统整体框架 1.4 模块划分 1)菜单函数 menu(),利用开关语句选择进入各功能函数。 2)增加人员函数 AddData(),可以选择增加一个学生或一个老师的信息。 3)删除成员函数 DeleteData(),可以输入学号或工号选择删除一个学生 或一个老师的信息 4)输出所有人员信息 DisplayData(),先输出所有学生,然后输出所有老 师。 5)查询学生中英语成绩最高分和查询所有老师中工资最高的人 FindMaxDataS()、FindMaxDataT()、TMax()函数、SMax()函数,利用模板函数, 对所有学生和老师进行成绩排序和工资排序最后输出。 6)读取信息函数 load()、Tload()、Sload(),通过 load()函数来选择读 取学生信息或者读取老师信息。 7)读取信息函数 save()、Tsave()、Ssave(),通过 save()函数来选择保 存学生信息或者保存老师信息。 8)查找人员信息 SearchData()函数,输入工号或学号以及姓名和性别查 询相应人员。 9)修改人员信息 UpdateDate()函数。,输入工号或学号来修改老师或者学 生的信息。 1.5 源程序 学校人员信息管理.cpp #include #include #include #include #include using namespace std; static int S=0;//储存学生的人数 static int T=0;//储存老师的人数 static int temp=0;//用来判断一段代码是否有运行过 int main(); class people { //基类 public: 6
int num; char name[10]; char sex; char major_or_department[20]; char date[11]; int age; char S[4],S1[2]; void setpeople(int &z) { A: ; if(z==1) { cout<<"学号(请输入 10 位学号):"; } else { cout<<"工号(请输入 10 位工号):"; } cin>>num; char temp[30]; itoa(num,temp,10); for(int i=0; temp[i]!='\0'; i++) { if(!(temp[i]>='0'&&temp[i]<='9')) { printf("输入格式错误!请输入有效数字字符!\n") ; goto A; } } if(strlen(temp)<10) { printf("输入长度过少!请输入 10 位有效数字字符!\n") ; goto A; } if(strlen(temp)>10) { printf("输入长度过多!请输入 10 位有效数字字符!\n") ; goto A; } fflush(stdin); cin.sync(); std: B: ; cout<<"名字:"; cin.getline(name,10,'\n'); for(int i=0; name[i]!='\0'; i++) { if(name[i]>=33&&name[i]<=64) { cout<<"输入格式错误!请输入有效字符!"<
} C: ; cout<<"性别(F 或 M):"; cin>>sex; if(sex!='M'&&sex!='F') { cout<<"输入格式错误!请输入有效字符!"<>major_or_department; D: E: ; int ans=0; cout<<"出生年月(输入格式为:XXXX/XX):"<>date; ; cout<<"年龄:"; cin>>age; if(age>100||age<5) { cout<<"年龄输入错误!"<>score_chinese; A: 8
分享到:
收藏