C++小型公司员工信息管理系统设计分析报告要点

合集下载

员工管理系统设计报告

员工管理系统设计报告

员工管理系统设计报告简介本文档旨在介绍一个基于Web的员工管理系统进行设计的整个过程,包括需求分析、系统构架设计、系统界面设计、数据存储与管理等方面的内容。

该系统旨在帮助企业管理其员工信息、薪资、部门、职位、考勤和绩效评估等,同时也可以协助企业决策者从可视化的报表中获得关键业务数据信息。

需求分析在进行系统设计前,首先需要明确系统的需求,简要列举如下: 1. 管理员可以登录系统,添加、删除和修改员工信息。

2. 管理员可以设置员工基本信息(姓名、性别、年龄、手机号)、薪资和奖金等等。

3. 管理员可以创建不同的部门和职位,将员工分配到对应的岗位前进行简单的评估和选举等。

4. 管理员可以查询员工的考勤情况和工作绩效得分情况等。

5. 系统需要能够生成各类统计报表以及数据可视化分析图表,帮助管理层了解公司的业务状况,并基于这些信息进行战略决策。

系统构架设计该系统的整体构架如下:系统构架设计图系统构架设计图1.前端页面部分使用了HTML5、CSS3和JavaScript三种语言进行前台网页开发,同时使用Bootstrap作为UI框架。

前端代码采用MVC架构模式进行设计,便于后期网站功能的扩展与维护。

2.请求处理部分请求处理模块使用了Flask Web框架技术。

Flask后端可以集成很多功能模块,例如:数据库操作模块和请求响应模块等等。

基于MVC的设计模式,请求处理部分可以处理单一的请求,实现简单、直接的功能,提高程序的执行效率。

3.MySQL数据库数据库使用了MySQL数据库,并使用了ORM(对象关系映射)模型完成数据操作管理。

通过MySQL数据库进行的数据存储与管理,可以更好地满足用户管理、查询、统计、分析等需求。

4.报表管理部分对于报表图表的生成和绘制,本系统使用了Echarts这个极为出色的开源JavaScript图表库。

Echarts库支持图表的多种展示方式,并可生成各类美观、直观和交互式的报表图表。

员工信息管理系统设计

员工信息管理系统设计

员工信息管理系统设计一、引言员工信息管理系统是为了帮助企业和公司更好地管理和维护员工的日常数据而开发的一款软件。

它主要解决了人力资源管理过程中,人员信息管理、数据统计、考核评价、报表输出等一系列问题,使得企业在人力资源管理方面能够更加高效和精准。

因此,本文旨在对员工信息管理系统的设计进行详细的说明和分析。

二、需求分析在设计员工信息管理系统之前,需要先做好需求分析工作,确保软件开发的准确性和用户的满意度。

1. 功能需求分析员工信息管理系统主要包括以下功能模块:(1)员工信息录入与修改:管理员可以录入和修改员工的个人信息和职业信息,例如:姓名、性别、民族、联系方式、职位、工资等,同时还能够上传员工照片。

(2)考勤管理:管理人员可以通过该系统进行员工考勤登记、请假申请、加班申请、旷工登记等操作,以便更好地管控员工的工作时间。

(3)绩效考核评价:管理人员可以通过该系统制定绩效目标、设定考核标准、进行绩效评估等操作,以便更好地评价员工的业绩和素质。

(4)数据统计分析:系统可以自动生成各类报表,如人员总数、员工离职率、薪资统计、绩效考核评分等报表,让管理员能够更加快捷地了解公司员工情况。

2.可行性分析在设计员工信息管理系统之前,还需要进行可行性分析,即检验该系统的设计是否符合实际情况,并落实设计思路和实现方法。

在可行性分析中,需要考虑以下几个方面:(1)技术可行性:该系统应符合企业信息化与数字化发展的趋势,并应考虑软件技术的实际操作和人性化操作设计。

(2)经济可行性:该系统的设计与开发应遵循合理的成本控制原则,并考虑到企业实际情况的资金来源和利润回报。

(3)社会可行性:该系统的设计应遵循经济、社会以及生态环境的可持续发展原则,并具有一定的社会意义,在整个社会环境中能够得到广泛认可。

三、系统设计1.系统架构设计在员工信息管理系统的设计中,我们选择使用Web-based 架构,采用B/S系统模式。

它的好处在于用户可以藉由浏览器来使用系统,不必安装Office软件或数据库来支持系统的运行,大大降低了用户的使用成本。

职工信息管理系统设计报告

职工信息管理系统设计报告

职工信息管理系统设计报告1. 引言职工信息管理系统是一种用于存储和管理公司员工信息的工具。

它可以提供开发和维护员工数据库的功能,包括基本信息、薪资、岗位等。

本文将介绍职工信息管理系统的设计和实现过程。

2. 功能需求分析在设计职工信息管理系统之前,我们首先需要确定系统的功能需求。

根据用户需求和预期目标,我们将系统的功能需求分为以下几个方面:2.1 基本信息管理系统需要提供一个界面,用于录入和管理员工的基本信息,包括姓名、性别、年龄、联系方式等。

管理员可以通过该界面添加、修改和删除员工信息。

2.2 工资管理系统需要能够记录和计算员工的工资信息。

在录入员工信息时,管理员可以填写员工的工资基数、加班时长等信息,并通过系统生成工资明细。

系统还需要支持工资条的导出和打印功能。

2.3 岗位管理系统需要提供一个界面,用于管理员工的岗位信息。

管理员可以设置员工的职位、部门和工作地点等信息,并可以根据这些信息进行查询和统计。

3. 系统设计在确定了系统的功能需求之后,我们可以开始设计职工信息管理系统的架构和模块。

3.1 数据库设计系统的核心是一个员工数据库,用于存储和管理员工的信息。

我们可以设计一个关系型数据库,包含员工表、工资表和岗位表等。

3.2 用户界面设计系统需要提供一个用户界面,使管理员能够方便地进行员工信息的录入、修改和查询。

界面的设计应简洁明了,操作流程应该清晰易懂。

3.3 数据处理和计算系统需要能够对员工的工资信息进行计算和处理。

我们可以使用编程语言来实现工资的计算和生成工资明细的功能。

4. 系统实现在完成系统设计之后,我们可以开始实现职工信息管理系统。

具体的实现过程将涉及到数据库的建立和管理、用户界面的开发以及工资计算和处理的编程等。

5. 系统测试完成系统的实现后,我们需要对系统进行测试,以确保其功能的正确性和稳定性。

测试过程可以包括单元测试、功能测试和性能测试等。

6. 总结通过本文的介绍,我们了解了职工信息管理系统的设计和实现过程。

c语言职工信息管理系统设计报告

c语言职工信息管理系统设计报告

c语言职工信息管理系统设计报告一、引言职工信息管理系统是一种常用的企业信息化系统,旨在帮助企业更好地管理员工信息,提高管理效率和信息安全性。

本文介绍的是一种基于C语言的职工信息管理系统的设计与实现。

二、系统需求分析1.系统功能(1)员工信息录入:可以录入员工的个人信息,包括姓名、性别、出生日期、身份证号码、联系电话、职务等信息。

(3)员工信息修改:可以修改员工的个人信息。

(5)员工信息统计:可以对员工的信息进行统计分析,统计人数、性别比例等。

2.系统开发环境本系统需要运行在Windows 7及以上操作系统上,开发工具使用Dev-C++。

三、系统设计与实现2.系统模块设计(1)员工信息录入模块:1)输入员工的各项信息;2)自动生成员工编号;3)将员工信息写入文件保存。

1)按照不同的条件进行查询;2)查询后输出符合条件的员工信息。

2)修改员工信息;1)对员工信息进行统计分析;2)输出统计结果。

(6)系统菜单模块:1)显示系统功能菜单;2)接收用户输入进行相应操作。

3.代码实现(1)主函数模块:{system("color 3f"); //设置控制台颜色menu(); //调用主菜单函数return 0;}void insert()employee emp;ofstream fout("employee.txt", ios::app);cout << "请输入员工姓名:";cin >> ;emp.no = rand() % 1000 + 1;fout << emp.no << " " << << " " << emp.gender << " " << emp.birthday << " " << emp.id << " " << emp.phone << " " << emp.job << endl;cout << "添加成功!" << endl;fout.close();int choice;cout << "请选择查询条件(1.姓名 2.性别 3.出生日期 4.身份证号码 5.联系电话 6.职务):";case 1:break;default:cout << "编号\t\t姓名\t性别\t出生日期\t身份证号码\t\t联系电话\t职务" << endl;if (choice == 1 && == ) //按照姓名查询if (no == emp.no)elseint manCount = 0;womanCount++;四、系统测试与评估我们采用黑盒测试,使用不同的测试用例进行测试。

简单的职工信息管理系统报告

简单的职工信息管理系统报告

淮阴工学院算法设计技能训练实习报告题目:简单的职工管理系统系(院):计算机工程学院专业: 计算机科学与技术(微软合作)班级: 计算机 1137学号:姓名指导教师: 周海岩学年学期:2014 ~2015 学年第1 学期2014年12月31日算法设计技能训练任务书指导教师(签章):年月日摘要在当今社会,互联网的发展,给人的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本提高工作效率的首选。

随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度已经远远跟不上公司的需求。

而且,人工方式来管理职工信息,存在着许多缺点,如:效率低、保密性差,对信息的查找、更新和维护不便。

计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识。

本文对职工管理系统进行设计,主要为了企业职工的信息进行集中管理和快捷查询。

本职工信息管理系统包括新增、删除、查询、修改、排序等常用功能.整个系统用C++语言设计,用户可轻松管理企业员工信息.关键词职工管理系统职工信息管理 C++ 数据结构目录1 引言 (5)1。

1 设计目的 (5)1.2 设计意义 (5)2 需求分析............................................. (6)2。

1 设计题目描述 (6)2。

2 设计要求 (6)2.3 实现提示 (6)2。

4 选做内容 (6)2。

5 软硬件运行环境及开发工具 (6)3 课程设计报告内容............................................................ (6)3.1 系统设计思想 (7)3.2 系统概要设计 (7)3.3 系统详细设计 (9)3.3。

1 结构体设计...................................................... (9)3.3。

C++小型公司员工信息管理系统设计报告要点

C++小型公司员工信息管理系统设计报告要点

高职学院C++程序设计语言上学期课程设计报告(2011 -2012第1学期)课程设计类型:C语言程序设计题目:人员信息管理系统学号:姓名:专业:计算机应用基础指导教师:课程设计日期:2012.12.23-2012.12.27.目录1. 问题分析 (1)2. 总体设计 (1)2.1 功能分析 (1)3. 详细设计 (2)3.1 程序结构图 (2)3.2 程序类结构图 (2)3.3 程序类结构图 (3)4. 功能测试 (4)4.1 本系统的主界面 (4)4.2 录入功能的主界面 (4)4.3 显示功能的主界面 (5)4.4 查找功能的主界面 (5)4.5 修改功能的主界面 (6)4.6 删除功能的主界面 (6)4.7 清理功能的主界面 (7)4.8 退出功能的主界面 (7)5. 课设小结 (7)参考文献 (8)附录:源代码清单 (8)1. 问题分析1.1 问题描述1.题目《人员信息管理系统》设计2.设计说明与要求(1)公司主要有4类人员:经理、技术人员、销售员、销售经理,要求存储这些人的姓名、年龄、工资信息。

(2)工资的计算方法A、经理:固定为8000元;B、技术员:工作时间*每小时酬金(100RMB);C、销售员:4%提成;D、销售经理:1%提成+固定工资(5000RMB);(3)实现功能①录入:输入各种数据,并录入TXT文件保存;②显示:显示员工的数据信息;③查找:查找员工的数据信息;④修改:修改员工的数据信息;⑤删除:删除员工的数据信息;⑥退出:退出本系统;⑦清理存储文件:清理系统产生的TXT文件;2. 总体设计2.1 功能分析使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。

所以系统主要涉及两个大类:公司类business、人员类person。

系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。

C语言课程设计报告:职工信息管理系统程序设计

C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。

(2)职工信息录入功能(职工信息用文件保存)。

(3)职工浏览功能。

(4)职工信息查询功能,查询方式可按学历查询或者工号查询。

(5)职工信息的删除、修改功能(可选项)。

2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。

3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。

2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。

流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。

显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。

流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。

职工信息管理系统设计报告

职工信息管理系统设计报告
prin tf("\n");
printf("请输入姓名:");
sca nf("%s",em[i]. name);
getchar();
printf("请输入性别(f--女m--男):");scanf("%c",&em[i].sex); printf("请输入年龄:");
{
case 1:del();break;
case 0:break;
default:break;
}
}
void add()
{FILEຫໍສະໝຸດ fp;int n;int coun t=0;
int i;
int m=load();
printf("\n原来的职工信息:\n");
display();
prin tf("\n");
进入查询信息:则屏幕会出现两个对话框一一 按员工,工号查找,查处相应的所需信息,当查询不 能显示需要时进入修改程序,把所输入的信息进行修 改,使之正确能够正常运行或进入删除信息中,重新 输入自己所要的信息。
当信息输入正确,进入你所需要的菜单程序中: 员工信息:显示员工工作号、性别、学历、等。
#in elude <stdio.h>
prin tf("\n%d\t\t%s\t%c\t\t%d\t\ n",em[i]. nu m,em[i]. name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
prin tf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++小型公司员工信息管理系统设计报告要点————————————————————————————————作者:————————————————————————————————日期:高职学院C++程序设计语言上学期课程设计报告(2011 -2012第1学期)课程设计类型:C语言程序设计题目:人员信息管理系统学号:姓名:专业:计算机应用基础指导教师:课程设计日期:2012.12.23-2012.12.27.目录1. 问题分析 (1)2. 总体设计 (1)2.1 功能分析 (1)3. 详细设计 (2)3.1 程序结构图 (2)3.2 程序类结构图 (2)3.3 程序类结构图 (3)4. 功能测试 (4)4.1 本系统的主界面 (4)4.2 录入功能的主界面 (4)4.3 显示功能的主界面 (5)4.4 查找功能的主界面 (5)4.5 修改功能的主界面 (6)4.6 删除功能的主界面 (6)4.7 清理功能的主界面 (7)4.8 退出功能的主界面 (7)5. 课设小结 (7)参考文献 (8)附录:源代码清单 (8)1. 问题分析1.1 问题描述1.题目《人员信息管理系统》设计2.设计说明与要求(1)公司主要有4类人员:经理、技术人员、销售员、销售经理,要求存储这些人的姓名、年龄、工资信息。

(2)工资的计算方法A、经理:固定为8000元;B、技术员:工作时间*每小时酬金(100RMB);C、销售员:4%提成;D、销售经理:1%提成+固定工资(5000RMB);(3)实现功能①录入:输入各种数据,并录入TXT文件保存;②显示:显示员工的数据信息;③查找:查找员工的数据信息;④修改:修改员工的数据信息;⑤删除:删除员工的数据信息;⑥退出:退出本系统;⑦清理存储文件:清理系统产生的TXT文件;2. 总体设计2.1 功能分析使用面向对象的程序设计思想进行分析,整个系统涉及两大类信息和操作,公司,人员。

所以系统主要涉及两个大类:公司类business、人员类person。

系统的总体框架就是公司类,人员类的定义;主函数中定义一个公司对象,循环显示主菜单并根据用户选择调用公司类的相应方法(成员函数)。

3. 详细设计3.1 程序结构图3.2 程序类结构图雇技术经销售销售Person类charname[20];charSell类int phpay; int Technician类inthourlyRaBusiness类inttime;Sell类intphpay;intBagman类intphpay;void in;3.3 程序类结构图开始输入SwitcCa结束删除员CaCa Ca Ca Ca Ca 修改员查找员显示员录入员删除存4. 功能测试4.1 本系统的主界面4.2 录入功能的主界面4.4 查找功能的主界面4.6 删除功能的主界面4.7 清理功能的主界面4.8 退出功能的主界面5. 课设小结根据课程设计的要求,我思考出了自己的课题,我用本学期所学的C++面向对象的知识来编写程序。

我利用面向对象的方法以及C++的编程思想来完成系统的设计,在设计的过程中,建立清晰的层次,当然在调试过程中我也遇到了许多问题。

本程序由雇员这个基类派生出多个派生类,并且调用多个函数。

主函数主要运用选择结构。

派生类中的保护类数据要通过定义公有类型的函数来从类外调用。

和一些相当复杂的算法,自己看了都乱,头都晕。

不过,我相信,不经历风雨怎么能见彩虹。

在解决了这一切后,我有一种:天将降大任于斯人也,必先劳其筋骨,饿其体肤的感觉!参考文献1.钱能主编,C++程序设计教程,清华大学出版社,2000.112.戴锋编著,Visual C++程序设计基础,清华大学出版社,2001.43.施平安主编,C++程序设计教程(第四版),清华大学出版社,2004.34.林丽闽主编,标准C++程序设计教程,电子工业出版社,2003.6.15.谭浩强主编,C++程序设计,清华大学出版社,2004.6附录:源代码清单#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>class person{public:char name[20],post[20],hour[20];int age,number;};class business :public person{public :int time;};//经理class mgr : public person{public:int monthpay;mgr :: mgr(){monthpay=8000 ;}void out(){cout<<"请输入职工的编号:";cin>>number ;cout<<"请输入职工的姓名:";cin>>name ;cout<<"请输入职工的年龄:";cin>>age ;cout<<"该职工的月薪为:"<<monthpay<<endl;}void in(){cout<<"编号:"<<number<<' '<<"姓名:"<<name<<' '<<"年龄:"<<age<<' '<<"职称:"<<"经理"<<' '<<"月薪:"<<monthpay<<endl;}};//技术人员class technician :public person{public:int hourlyRate ;//每小时酬金int workHours ;//当月工作时数int pay;technician :: technician(){hourlyRate=100 ;};void in(){cout<<"编号:"<<number<<' '<<"姓名:"<<name<<' '<<"年龄:"<<age<<' '<<"职称:"<<"技术人员"<<' '<<"月薪:"<<pay<<endl ;}void out(){cout<<"请输入职工的编号:";cin>>number ;cout<<"请输入职工的名字:";cin>>name ;cout<<"请输入工作的小时:";cin>>workHours ;cout<<"请输入职工的年龄:";cin>>age ;pay=hourlyRate*workHours;cout<<"该职工的月薪为:"<<pay<<endl;}};//销售经理class sell :public business{public:int phpay,monthpay;sell :: sell(){phpay=1,monthpay=5000;}void in(){cout<<"编号:"<<number<<" "<<"姓名:"<<name<<" "<<"销售额:"<<time<<" "<<"年龄:"<<age<<" "<<"职称:"<<"销售经理"<<" "<<"月薪:"<<pay()<<endl ;}int pay(){return(phpay*time+monthpay);}void out(){cout<<"请输入职工的编号:";cin>>number ;cout<<"请输入职工的名字:";cin>>name ;cout<<"请输入销售额:";cin>>time ;cout<<"请输入职工的年龄:";cin>>age ;cout<<"职工的月薪为:"<<pay()<<endl;}};//推销员class bagman :public business{public:int phpay ;bagman :: bagman(){phpay=4;}void in(){cout<<"编号:"<<number<<" "<<"姓名:"<<name<<" "<<"销售额:"<<time<<" "<<"年龄:"<<age<<" "<<"职称:"<<"推销员"<<" "<<"年薪:"<<pay()<<endl ;}int pay(){return(phpay*time);}void out(){cout<<"请输入职工的编号:";cin>>number ;cout<<"请输入职工的名字:";cin>>name ;cout<<"请输入销售额:";cin>>time ;cout<<"请输入职工的年龄:";cin>>age ;cout<<"该职工的月薪为:"<<pay()<<endl;}};//输入函数void write1(){mgr p;p.out();ofstream myfile("f1.txt",ios :: binary|ios :: ate);myfile.write((char*)&p,sizeof p);myfile.close();}void write2(){technician p;p.out();ofstream myfile("f2.txt",ios :: binary|ios :: ate);myfile.write((char*)&p,sizeof p);myfile.close();}void write3(){sell p;p.out();ofstream myfile("f3.txt",ios :: binary|ios :: ate);myfile.write((char*)&p,sizeof p);myfile.close();}void write4(){bagman p;ofstream myfile("f4.txt",ios :: binary|ios :: ate);p.out();myfile.write((char*)&p,sizeof p);myfile.close();}void build(){cout<<endl;cout<<" ******************请选择职工的信息****************** "<<endl;cout<<" ** 1.经理** "<<endl;cout<<" ** 2.技术人员** "<<endl;cout<<" ** 3.销售经理** "<<endl;cout<<" ** 4.推销员** "<<endl;cout<<" **************************************************** "<<endl;cout<<"请输入选择:"<<endl;char ch;cin>>ch;while(ch!='N'&&ch!='n'){switch(ch){case '1' :write1();break ;case '2' :write2();break ;case '3' :write3();break ;case '4' :write4();break ;default :cout<<"ERROR!!"<<endl;break ;}cout<<"是否继续使用录入功能:(Y/N)?";cin>>ch;if(ch=='Y'||ch=='y'){cout<<"请输入选择:"<<endl;cin>>ch;}}}//显示函数void show1(){ifstream myfile("f1.txt",ios :: binary|ios :: out|ios :: in);mgr p;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeof p);}myfile.close();}void show2(){ifstream myfile("f2.txt",ios :: binary|ios :: out|ios :: in);technician p;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeof p);}myfile.close();}void show3(){ifstream myfile("f3.txt",ios :: binary|ios :: out|ios :: in);sell p ;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeof p);}myfile.close();}void show4(){ifstream myfile("f4.txt",ios :: binary|ios :: out|ios :: in);bagman p ;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){p.in();myfile.read((char*)&p,sizeof p);}myfile.close();}void show0(){show1();show2();show3();show4();}void show(){cout<<" **********************你正在显示********************"<<endl;cout<<" ** 0.全部显示**"<<endl;cout<<" ** 1.经理**"<<endl;cout<<" ** 2.技术人员**"<<endl;cout<<" ** 3.销售经理**"<<endl;cout<<" ** 4.推销员**"<<endl;cout<<" ****************************************************"<<endl;cout<<"请选择你要显示的职工类:"<<endl;char c;cin>>c ;while(c!='N'&&c!='n'){switch(c){case '0' :show0();break;case '1' :show1();break;case '2' :show2();break;case '3' :show3();break;case '4' :show4();break;default :cout<<"ERROR!!"<<endl;break;}cout<<"是否继续使用显示功能(Y/N)?"<<endl;cin>>c;if(c=='Y'||c=='y'){cout<<"请选择你要显示的职工类:"<<endl;cin>>c;}}}//查找函数void search1(){int m=1;cout<<"请输入你要查找的编号:"<<endl;int number;cin>>number;ifstream myfile("f1.txt",ios :: binary|ios :: out|ios :: in);mgr p;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){if(number==p.number){p.in();myfile.close();m=0;}myfile.read((char*)&p,sizeof p);}if(m)cout<<"查无此人!!!"<<endl;}void search2(){int m=1;cout<<"请输入你要查找的编号:"<<endl;int number;cin>>number;ifstream myfile("f2.txt",ios :: binary|ios :: out|ios :: in);technician p;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){if(number==p.number){p.in();myfile.close();m=0;}myfile.read((char*)&p,sizeof p);}if(m)cout<<"查无此人!!!"<<endl;}void search3(){int m=1;cout<<"请输入你要查找的编号:"<<endl;int number;cin>>number;ifstream myfile("f3.txt",ios :: binary|ios :: out|ios :: in);sell p ;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){if(number==p.number){p.in();myfile.close();m=0;}myfile.read((char*)&p,sizeof p);}if(m)cout<<"查无此人!!!"<<endl;}void search4(){int m=1;cout<<"请输入你要查找的编号:"<<endl ;int number;cin>>number;ifstream myfile("f4.txt",ios :: binary|ios :: out|ios :: in);bagman p ;myfile.read((char*)&p,sizeof p);while(!myfile.eof()){if(number==p.number){p.in();myfile.close();m=0;}myfile.read((char*)&p,sizeof p);}if(m)cout<<"查无此人!!!"<<endl;}void search(){cout<<" *********************你正在查找*********************"<<endl;cout<<" ** 1.经理**"<<endl;cout<<" ** 2.技术人员**"<<endl;cout<<" ** 3.销售经理**"<<endl;cout<<" ** 4.推销员**"<<endl;cout<<" ****************************************************"<<endl;cout<<"请选择你的职称类型:"<<endl;char c;cin>>c;while(c!='N'&&c!='n'){switch(c){case '1' :search1();break;case '2' :search2();break;case '3' :search3();break;case '4' :search4();break;default :cout<<"ERROR!!"<<endl;break;}cout<<"是否继续使用查找功能(Y/N)?";cin>>c;if(c=='Y'||c=='y'){cout<<"请选择你的职称类型:"<<endl;cin>>c;}}}//修改函数void repair1(void){int num,i=0,k=0;mgr*p1=new mgr[50];cout<<"请输入你要修改的编号:";cin>>num ;ifstream h1("f1.txt",ios :: binary|ios :: in);h1.read((char*)&p1[i],sizeof p1[i]);while(!h1.eof()){i++;h1.read((char*)&p1[i],sizeof p1[i]);}h1.close();k=i ;for(i=0;i<k;i++){if(num==p1[i].number){p1[i].out();cout<<"修改完毕!"<<endl ;}}ofstream h2("f1.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){h2.write((char*)&p1[i],sizeof p1[i]);h2.close();delete[]p1 ;}void repair2(void){int num,i=0,k=0;technician*p2=new technician[50];cout<<"请输入你要修改的编号:";cin>>num;ifstream h2("f2.txt",ios :: binary|ios :: in);h2.read((char*)&p2[i],sizeof p2[i]);while(!h2.eof()){i++;h2.read((char*)&p2[i],sizeof p2[i]);}h2.close();k=i ;for(i=0;i<k;i++){if(num==p2[i].number){p2[i].out();cout<<"修改完毕!"<<endl;}}ofstream h1("f2.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){h1.write((char*)&p2[i],sizeof p2[i]);}h1.close();delete[]p2;}void repair3(void){int num,i=0,k=0;sell*p6=new sell[50];cout<<"请输入你要修改的编号:";cin>>num ;fstream h6("f3.txt",ios :: binary|ios :: out|ios :: in);h6.read((char*)&p6[i],sizeof p6[i]);while(!h6.eof())i++;h6.read((char*)&p6[i],sizeof p6[i]);}k=i ;h6.close();for(i=0;i<k;i++){if(num==p6[i].number){p6[i].in();cout<<"修改完毕!"<<endl;}}ofstream h1("f6.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){h1.write((char*)&p6[i],sizeof p6[i]);}h1.close();delete[]p6;}void repair4(void){int num,i=0,k=0 ;bagman*p7=new bagman[50];cout<<"请输入你要修改的编号:";cin>>num;fstream h7("f4.txt",ios :: binary|ios :: out|ios :: in);h7.read((char*)&p7[i],sizeof p7[i]);while(!h7.eof()){i++;h7.read((char*)&p7[i],sizeof p7[i]);}k=i;h7.close();for(i=0;i<k;i++){if(num==p7[i].number){p7[i].out();cout<<"修改完毕!"<<endl;}ofstream h1("f7.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){h1.write((char*)&p7[i],sizeof p7[i]);}h1.close();delete[]p7;}void repair(){cout<<" *********************你正在修改*********************"<<endl;cout<<" ** 1.经理**"<<endl;cout<<" ** 2.技术人员**"<<endl;cout<<" ** 3.销售经理**"<<endl;cout<<" ** 4.推销员**"<<endl;cout<<" ****************************************************"<<endl;cout<<"请输入你要修改的职称类型:"<<endl ;char c;cin>>c;while(c!='N'&&c!='n'){switch(c){case '1' :repair1();break;case '2' :repair2();break;case '3' :repair3();break;case '4' :repair4();break;default :cout<<"ERROR!!"<<endl;break;}cout<<"是否继续修改(Y/N)?"<<endl;cin>>c;if(c=='Y'||c=='y'){cout<<"请输入你要修改的职称类型:"<<endl;cin>>c;}}}void delete1(){int i=0,number;ifstream myfile("f1.txt",ios :: binary|ios :: in);mgr p[30];myfile.read((char*)(p+i),sizeof*p);cout<<"请输入你要删除的对象的编号:"<<endl;cin>>number;while(!myfile.eof()){if(number==p[i].number){i--;}i++;myfile.read((char*)(p+i),sizeof*p);}int k=i;myfile.close();ofstream file2("f1.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){file2.write((char*)(p+i),sizeof*p);}}void delete2(){int i=0,number ;ifstream myfile("f2.txt",ios :: binary|ios :: in);technician p[30];myfile.read((char*)(p+i),sizeof*p);cout<<"请输入你要删除的对象的编号:"<<endl ;cin>>number ;while(!myfile.eof()){if(number==p[i].number){i--;}i++;myfile.read((char*)(p+i),sizeof*p);}int k=i;myfile.close();ofstream file2("f2.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){file2.write((char*)(p+i),sizeof*p);}}void delete3(){int i=0,number;ifstream myfile("f3.txt",ios :: binary|ios :: in);sell p[30];myfile.read((char*)(p+i),sizeof*p);cout<<"请输入你要删除的对象的编号:"<<endl ;cin>>number ;while(!myfile.eof()){if(number==p[i].number){i--;}i++;myfile.read((char*)(p+i),sizeof*p);}int k=i;myfile.close();ofstream file2("f3.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){file2.write((char*)(p+i),sizeof*p);}}void delete4(){int i=0,number;ifstream myfile("f4.txt",ios :: binary|ios :: in);bagman p[30];myfile.read((char*)(p+i),sizeof*p);cout<<"请输入你要删除的对象的编号:"<<endl;cin>>number ;while(!myfile.eof()){if(number==p[i].number){i--;}i++;myfile.read((char*)(p+i),sizeof*p);}int k=i;myfile.close();ofstream file2("f4.txt",ios :: binary|ios :: out);for(i=0;i<k;i++){file2.write((char*)(p+i),sizeof*p);}}void delet(){cout<<" *********************你正在删除*********************"<<endl;cout<<" ** 1.经理**"<<endl;cout<<" ** 2.技术人员**"<<endl;cout<<" ** 3.销售经理**"<<endl;cout<<" ** 4.推销员**"<<endl;cout<<" ****************************************************"<<endl;cout<<"请输入你要删除对象的类型:"<<endl;char c;cin>>c;while(c!='N'&&c!='n'){switch(c){case '1' :delete1();break;case '2' :delete2();break;case '3' :delete3();break;case '4' :delete4();break;default :cout<<"ERROR!!"<<endl;break;}cout<<"是否继续使用删除功能(Y/N)?"<<endl;cin>>c;if(c=='Y'||c=='y'){cout<<"请输入你要删除对象的类型:"<<endl;cin>>c;}}}void manag(){remove("f1.txt");remove("f2.txt");remove("f3.txt");remove("f4.txt");cout<<"文件已经删除,请返回管理系统!!!"<<endl;}void manage(){char c;cout<<" *********************你正在删除*********************"<<endl;cout<<" ** 1.经理**"<<endl;cout<<" ** 2.技术人员**"<<endl;cout<<" ** 3.销售经理**"<<endl;cout<<" ** 4.推销员**"<<endl;cout<<" ** 5.全部删除**"<<endl;cout<<" ****************************************************"<<endl;cout<<"请输入你要删除的对象:"<<endl;cin>>c;while(c!='N'&&c!='n'){switch(c){case '1' :remove("f1.txt");cout<<"删除成功!!!"<<endl;break;case '2' :remove("f2.txt");cout<<"删除成功!!!"<<endl;break;case '3' :remove("f3.txt");cout<<"删除成功!!!"<<endl;break;case '4' :remove("f4.txt");cout<<"删除成功!!!"<<endl;break;case '5' :manag();break;default :cout<<"ERROR!!"<<endl;break;}cout<<"是否继续使用清理功能(Y/N)?"<<endl;cin>>c;if(c=='Y'||c=='y'){cout<<"请输入你要删除的对象:"<<endl;cin>>c;}}}void main(){system("cls");cout<<" *****************人员信息管理系统*****************"<<endl;cout<<" ** **"<<endl;cout<<" ** 1.录入**"<<endl;cout<<" ** 2.显示**"<<endl;cout<<" ** 3.查找**"<<endl;cout<<" ** 4.修改**"<<endl;cout<<" ** 5.删除**"<<endl;cout<<" ** 6.退出**"<<endl;cout<<" ** 0.清理存储文件**"<<endl;cout<<" ** **"<<endl;cout<<" **************************************************"<<endl;cout<<"请输入你要选择的功能(1-6):"<<endl;char c;cin>>c ;while(c!='N'&&c!='n'){switch(c){case '1' :{system("cls");build();}break;case '2' :{system("cls");show();}break;case '3' :{system("cls");search();}break;case '4' :{system("cls");repair();}break;case '5' :{system("cls");delet();}break;case '6' :exit(0);break;case '0' :{system("cls");manage();}break;default:break;}cout<<"是否继续使用管理系统:(Y/N)?";cin>>c;if(c=='Y'||c=='y')main();else exit(0);}}。

相关文档
最新文档