收藏 分销(赏)

C课设高校人员信息管理系统附全部代码.doc

上传人:精*** 文档编号:9779892 上传时间:2025-04-07 格式:DOC 页数:88 大小:572.50KB
下载 相关 举报
C课设高校人员信息管理系统附全部代码.doc_第1页
第1页 / 共88页
C课设高校人员信息管理系统附全部代码.doc_第2页
第2页 / 共88页
点击查看更多>>
资源描述
《基于C++的面向对象程序设计实例》 课程设计报告 报告题目: 高校人员信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2010年6月 《基于C++的面向对象程序设计实例》任务书 一.目的与要求 1、目的 (1)要求学生能够熟练掌握C++语言的基本知识和技能。 (2)基本掌握面向对象程序设计的基本思路和方法。 (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求 (1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计。 (2)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能,并且要建立清晰的类层次关系。 (3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员函数。 (4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。 (5) 程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。 对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。 3、创新要求 在基本要求达到后,可根据实际情况进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。 二.验收方式 完成设计内容之后,即可开始验收。验收时,首先由学生简要说明所做题目的思路、设计结构及实现过程,然后运行程序并进行测试,对输出结果作出解释,同时认真回答教师提出的问题。 三.课设报告 在完成验收之后,提交课设报告。其中报告中需包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等。另外,课设报告要严格遵守模板文件的格式要求,思路清晰,内容详实丰富。 四.成绩评定 课设总成绩=验收成绩(50%)+课程设计报告成绩(30%)+程序源代码(10%)+课设态度、考勤与遵守教学制度情况 (10%) 五.说明 1、每位同学在以下的题目中任选一个来完成。 2、学生应严格遵守课堂秩序,按时上机,认真完成各项任务。 3、上机前做好充分的准备,包括事先写好主要程序代码,以保证充分利用上机的时间调试程序。 4、每位同学各自独立完成自己的题目,禁止抄袭或拷贝。 5、必须按规定时间上交课设报告。 六.课设题目 题目1 “高校员工信息管理系统” 1、问题描述 某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。 2、功能要求 (1)基本功能 1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。 4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。 6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数, 或者统计男、女员工的数量,或者统计某年龄段人员的数量等。 7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。 8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。 (2)扩展功能 在完成以上基本功能的基础上,可自行进行扩展或完善,例如: 1) 添加人员记录时,考虑各种数据的有效性。 2)组合查询功能的实现。 3)可按人员的某些信息进行排序。 4)对文件的读写使用二进制信息。 3、问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤: 1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; 2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。 摘 要 在当前的学校人员管理体制下,高等学校不但要有浓厚的学风气息、雄厚的师资力量、先进精良硬件设备,与此同时,作为先进科学技术和优秀文化的承载者和传播者,更需要有一个执行效率高并且便于操作的现代信息化管理系统,以实现对高校各类人员进行添加、查找、修改、删除、统计、保存、读取等动态管理的目的。 本文利用Microsoft Visual C++6.0的ADO编写程序,实现了高校对实验员、教师、行政人员、教师兼行政人员的管理操作。 本系统主要有四个管理模块——实验员管理系统、教师管理系统、行政人员管理系统、教师兼行政人员管理系统。已经过全面的系统测试,能够很好的运行,达到了预期的效果。 关键词:系统设计 类 信息 人员管理 目 录 摘要 Ⅰ 第1章 绪 论 1 1.1 课程设计的目的 1 1.2 课程设计的背景和意义 1 1.1.1 课程设计的背景 1 1.1.2 课程设计的意义 1 1.3 课程设计环境 1 第2章 需求分析 2 2.1 问题描述 2 2.2 功能需求 2 2.3 问题的解决方案 3 第3章 系统设计 4 3.1 数据设计 4 3.1.1 类设计 4 3.1.2 类之间关系 5 3.2结构设计 6 3.2.1 系统流程图 6 3.2.2 界面设计 6 第4章 系统实现 9 4.1 类实现 9 4.2 函数实现 11 4.3 主函数实现 21 第5章 系统测试 23 5.1 模块测试 23 5.2 课程设计过程中遇到的问题 32 总结 33 致谢 34 参考文献 35 第1章 绪论 1.1 课程设计的目的 (1)要求学生能够熟练掌握C++语言的基本知识和技能。 (2)基本掌握面向对象程序设计的基本思路和方法。 (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 1.2 课程设计的背景和意义 1.2.1课程设计的背景 1. 理论研究基础 (1)综合C++编程知识,结合实际加以应用。 (2)参考课本对课本熟悉,应用类、数组等内容。 2. 技术层面的支持 安装Microsoft Visual C++ 6.0集成开发环境。 1.2.2 课程设计的意义 综合复习《C++面向对象程序设计》的所有知识点,进一步熟练面向对象程序的开发方法和流程,提高学生独立分析问题和解决问题的能力,培养学生的中、小型实践项目开发能力。 让我们提前感受到编写软件的过程和解决问题的方法。 1.3 课程设计环境 软件环境:Microsoft Visual C++ 6.0集成开发环境。 硬件环境:图书馆五楼机房,笔记本电脑。 第2章 需求分析 2.1 问题描述 某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等 2.2 功能要求 (1)基本功能 1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。 4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。 6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数, 或者统计男、女员工的数量,或者统计某年龄段人员的数量等。 7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。 8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。 (2)扩展功能 在完成以上基本功能的基础上,可自行进行扩展或完善,例如: 1) 添加人员记录时,考虑各种数据的有效性。 2)组合查询功能的实现。 3)可按人员的某些信息进行排序。 4)对文件的读写使用二进制信息。 2.3 问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤: 1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; 2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。 第3章 系统设计 3.1 数据设计 3.1.1 类设计 此系统共设计了九个类:基类(class Person),实验员类(class Experimenter),教师类(class Teacher),行政人员类(class Staff),教师兼行政人员类(class Tea_Sta) 基类中有 int num; 公用数据成员用于记录类成员的编号 int age; 公用数据成员用于记录类成员的年龄 string name; 公用数据成员用于记录类成员的姓名 string sex; 公用数据成员用于记录类成员的性别 virtual void Input(); 公有数据成员函数用于输入成员信息 virtual void Output(); 公有数据成员函数用于输出成员信息 int GetNum(); 公有数据成员函数用于获得成员编号 string GetName(); 公有数据成员函数用于获得成员姓名 实验员类中添加了 string library; 公有数据成员用于记录类成员的实验室 string zw; 公有数据成员用于记录类成员的职务 int choice2; 公有数据成员用于选择成员的性别 教师类中添加了 string depart; 公有数据成员用于记录类成员的部门 string spec; 公有数据成员用于记录类成员的专业 string title; 公有数据成员用于记录类成员的职称 int choice1; 公有数据成员用于选择成员的部门 int choice2; 公有数据成员用于选择成员的性别 行政人员类中添加了 string zzmm;; 公有数据成员用于记录类成员的政治面貌 string zc; 公有数据成员用于记录类成员的任职职称 int choice2; 公有数据成员用于选择成员的性别 教师兼行政人员类添加了 int choice1; 公有数据成员用于选择成员的部门 int choice2; 公有数据成员用于选择成员的性别 还有四个功能相同的功能函数类,其中有Exp_Manage 类Tea_Manage 类 Staf_Manage 类Tea_Staf_Manage类。分别实现不同的相应功能。 Tea_Sta Tea[TMAX]; TMAX为常量,为数组中可存储的教师记录的最大数; int top; top表示当前系统中存储的记录个数; Tea_Staf_Manage(){top=0;}初始时记录的个数为0,所以设置top=0; void Add(); 实现该类记录的添加; void Show(); 实现该类所有记录的显示; void Search(); 实现该类记录的查询; void Edit(); 实现该类记录的修改; void Delete(); 实现该类记录的删除; void Total(); 实现该类记录的统计; void Save(); 将该类记录保存到文件; void Read(); 可从文件中将记录读取到该类的数组中; 实验员、教师、行政人员管理类中函数都相同,在此略。 3.1.2 类之间的关系 基类:(class Person)派生类有:(class Experimenter),(class Teacher),(class Staff) (class Tea_Sta) 四个平行关系的类,实现不同类的功能:(class Exp_Manage)(class Tea_Manage)(class Staf_Manage)(class Tea_Staf_Manage) 3.1.3 函数设计 在四个管理类中定义了以下相同函数,功能如其后所说 void Add(); 实现该类记录的添加; void Show(); 实现该类所有记录的显示; void Search(); 实现该类记录的查询; void Edit(); 实现该类记录的修改; void Delete(); 实现该类记录的删除; void Total(); 实现该类记录的统计; void Save(); 将该类记录保存到文件; void Read(); 可从文件中将记录读取到该类的数组中; 3.2 结构设计 3.2.1 系统流程图 人员类 教师类 实验员类 行政人员类 教师兼行政人员类 图3―1 3.2.2 界面设计 主菜单界面 图3―2 主菜单界面图 实验员类菜单界面 图3―3 实验员类菜单界面图 教师类菜单界面 图3―4教师类菜单界面图 政人员管理菜单界面 图3―5 政人员管理菜单界面图 教师兼行政人员管理菜单界面 图3―6 教师兼行政人员管理菜单界面图 第4章 系统实现 4.1 类实现 对于基类的定义 class Person { public: int num; 公用数据成员用于记录类成员的编号 int age; 公用数据成员用于记录类成员的年龄 string name; 公用数据成员用于记录类成员的姓名 string sex; 公用数据成员用于记录类成员的性别 public: Person(int n=0,string nm="",string s="",int a=0):num(n),name(nm),sex(s),age(a){}; virtual void Input(){}; virtual void Output(){}; int GetNum(){return num;} 公有数据成员函数用于获得成员编号 string GetName(){return name;} 公有数据成员函数用于获得成员姓名 }; 对实验员派生类的定义 class Experimenter:public Person { public: string library; 公有数据成员用于记录类成员的实验室 string zw; 公有数据成员用于记录类成员的职务 int choice2; 公有数据成员用于选择成员的性别 public: Experimenter(int n=0,string nm="",string s="男",int a=0,string l="",string z="") :Person(num,name,sex,age),library(l),zw(z){}; void Input() 成员函数用于输入成员信息 void Output() 成员函数用于输出成员信息 }; 对于教师派生类的定义 class Teacher:virtual public Person { public: string depart; 公有数据成员用于记录类成员的部门 string spec; 公有数据成员用于记录类成员的专业 string title; 公有数据成员用于记录类成员的职称 int choice1; 公有数据成员用于选择成员的部门 int choice2; 公有数据成员用于选择成员的性别 public: Teacher(int n=0,string nm="",string s="男",int a=0,string d="电子系",string sp="",string t="") :Person(n,nm,s,a),depart(d),spec(sp),title(t){}; void Input() 成员函数用于输入成员信息 void Output() 成员函数用于输出成员信息 对于行政人员派生类的定义 class Staff:virtual public Person { public: string zzmm;; 公有数据成员用于记录类成员的政治面貌 string zc; 公有数据成员用于记录类成员的任职职称 int choice2; 公有数据成员用于选择成员的性别 public: Staff(int n=0,string nm="",string s="男",int a=0,string z="",string zc="") :Person(n,nm,s,a),zzmm(z),zc(zc){}; void Input() 成员函数用于输入成员信息 void Output() 成员函数用于输出成员信息 }; 对于教师兼行政人员类的定义 class Tea_Sta:public Teacher,public Staff { public: int choice1; 公有数据成员用于选择成员的部门 int choice2; 公有数据成员用于选择成员的性别 Tea_Sta(int n=0,string nm="",string s="男",int a=0,string d="电子系",string sp="",string t="",string z="",string zc="") :Person(n,nm,s,a),Teacher(n,nm,s,a,sp,t),Staff(n,nm,s,a,z,zc){}; void Input() 成员函数用于输入成员信息 void Output() 成员函数用于输出成员信息 }; 对于在四个管理类中函数功能都相同,以教师类为例 class Tea_Manage { Teacher Tea[TMAX]; TMAX为常量,为数组中可存储的教师记录的最大数; int top; top表示当前系统中存储的记录个数; public: Tea_Manage(){top=0;} 初始时记录的个数为0,所以设置top=0; void Add(); 实现该类记录的添加; void Show(); 实现该类所有记录的显示; void Search(); 实现该类记录的查询; void Edit(); 实现该类记录的修改; void Delete(); 实现该类记录的删除; void Total(); 实现该类记录的统计; void Save(); 将该类记录保存到文件; void Read(); 可从文件中将记录读取到该类的数组中; }; 4.2 函数实现 对于在四个管理类中定义了相同的函数,以教师类为例 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加 void Tea_Manage::Add() { if(top>=TMAX) { cout<<"用户已满"<<endl; return; } Teacher t; cout<<"输入新添加的人员的信息"<<endl; t.Input(); for(int i=0;i<top;i++) if (t.GetNum()==Tea[i].GetNum()) { cout<<"该编号的人员已存在"<<endl; return; } Tea[top]=t; top=top+1; cout<<"添加成功!"<<endl; } 显示功能:可显示当前系统中所有记录,每条记录占据一行。 void Tea_Manage::Show() { if(top==0) { cout<<"无数据!"<<endl; return; } cout<<setw(10)<<"编号" <<setw(10)<<"姓名" <<setw(10)<<"性别" <<setw(10)<<"年龄" <<setw(10)<<"系部" <<setw(10)<<"专业" <<setw(10)<<"职称" <<endl; for(int i=0;i<top;i++) Tea[i].Output(); } 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 void Tea_Manage::Search() { if(top==0) { cout<<"当前系统中没有存储记录"<<endl; return; } int choice; cout<<"请选择查找方式:1.按编号查找 2.按姓名查找."<<endl; cin>>choice; switch(choice) { case 1:{ cout<<"请输入要查找的编号:"<<endl; int num; cin>>num; for(int i=0;i<top;i++) { if(Tea[i].GetNum()==num) { Tea[i].Output(); return; } } cout<<"查无此人!"<<endl; }break; case 2:{ cout<<"请输入要查找的姓名"<<endl; string name; cin>>name; for(int i=0;i<top;i++) { if(Tea[i].GetName()==name) { Tea[i].Output(); } } for( i=0;i<top;i++) if(Tea[i].GetName()==name) return; cout<<"查无此人!"<<endl; }break; default :cout<<"无此选项!请重试!"<<endl;break; } } void Tea_Manage::Edit() { if(top==0) { cout<<"当前系统中没有存储记录!"<<endl; return; } int num; cout<<"请输入要查找的教编号:"<<endl; cin>>num; for(int i=0;i<top;i++) { if(Tea[i].GetNum()==num) { cout<<"请对这位教师的信息进行修改:"<<endl; Tea[i].Input(); cout<<"修改成功"<<endl;return; } } cout<<"查无此人"<<endl; } 删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。 void Tea_Manage::Delete() { if(top==0) { cout<<"当前系统中没有存储记录!"<<endl; return; } cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl; int choice; cin>>choice; switch(choice) { case 1: { cout<<"请输入编号:"; int num; cin>>num; for(int i=0;i<top;i++) { if(num==Tea[i].num) { cout<<"是否确认删除? 1、是 2、否 "<<endl; int choice; cin>>choice; switch(choice) { case 1: { for(int j=i;j<top-1;j++) Tea[j]=Tea[j+1]; cout<<"删除成功!"<<endl; top--; };break; case 2:return; default:cout<<"无此项,失败!"<<endl;break; }return; } } cout<<"无此人!"<<endl; } ;break; case 2: { cout<<"请输入姓名:"; string name; cin>>name; for(int i=0;i<top;i++) { if(name==Tea[i].name) { cout<<"是否确认删除? 1、是 2、否 "<<endl; int choice; cin>>choice; switch(choice) { case 1: { for(int j=i;j<top-1;j++) Tea[j]=Tea[j+1]; cout<<"删除成功!"<<endl; top--; };break; case 2:return; default:cout<<"无此项,失败!"<<endl;break; }return; } } cout<<"无此人!"<<endl; }; break; default:cout<<"没有此项,失败:"<<endl;break; } } 统计功能:能根据多种参数进行人员的统计。例如,统计类中人员数量以及总数, 或者统计男、女员工的数量,不同部门员工数量等。 void Tea_Manage::Total() { cout<<"1 按人数统计 2 按性别统计 3 按系别统计 "<<endl; int choice; cout<<"请输入你的选择"<<endl; cin>>choice; switch(choice) { case 1:cout<<"教师类人数为:"<<top<<endl;break; case 2: { int a=0,b=0; for(int i=0;i<top;i++) { if(Tea[i].sex=="男") a++; if(Tea[i].sex=="女") b++; } cout<<"男教师人数为"<<a<<endl; cout<<"女教师人数为"<<b<<endl; }break; case 3: { int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0; for(int i=0;i<top;i++) { if(Tea[i].depart=="电子系") a1++; if(Tea[i].depart=="机械系") a2++; if(Tea[i].depart=="经管系") a3++; if(Tea[i].depart=="建工系") a4++; if(Tea[i].depart=="计算机系") a5++; if(Tea[i].depart=="外语系") a6++; if(Tea[i].depart=="财会系") a7++; if(Tea[i].depart=="材料系") a8++; if(Tea[i].depart=="文法系") a9++; } cout<<"电子系教师人数为"<<a1<<endl; cout<<"机械系教师人数为"<<a2<<endl; cout<<"经管系教师人数为"<<a3<<endl; cout<<"建工系教师人数为"<<a4<<endl; cout<<"计算机系教师人数为"<<a5<<endl; cout<<"外语系教师人数为"<<a6<<endl; cout<<"财会系教师人数为"<<a7<<endl; cout<<"材料系教师人数为"<<a8<<endl; cout<<"文法系教师人数为"<<a9<<endl; }break; default:cout<<"输入错误。请重新输入"<<endl;break; } } 保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。 void Tea_Manage::Save() { ofstream out("D:\\ying2.txt",ios::out); if(!out) { cout<<"打开失败!"<<endl; return; } cout<<"打开成功!"<<endl; for(int i=0;i<top;i++) { out<<Tea[i].num<<" " <<Tea[i].name<<" " <<Tea[i].sex<<" " <<Tea[i].age<<" " <<Tea[i].depart<<" " <<Tea[i].spec<<" " <<Tea[i].title <<endl; } cout<<"写入成功!"<<endl; out.close(); } 读取功能:可将保存
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服