![长春大学课程设计――面向对象程序设计(人事管理系统)_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-6/26/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf1.gif)
![长春大学课程设计――面向对象程序设计(人事管理系统)_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-6/26/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf2.gif)
![长春大学课程设计――面向对象程序设计(人事管理系统)_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-6/26/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf3.gif)
![长春大学课程设计――面向对象程序设计(人事管理系统)_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-6/26/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf4.gif)
![长春大学课程设计――面向对象程序设计(人事管理系统)_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-6/26/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf/b561cc96-adc9-4c7f-8b6b-3a8e312b62bf5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录一、 设计目的2二、 功能介绍2三、 程序流程3四、 设计步骤(不用加过多代码)4五、 设计总结9六、 程序清单9七、 参考文献22一、设计目的(1) 只能使用C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块(视情况可另外加分)(4) 写出课程设计报告,具体要求见相关说明文档(5) 用文件进行管理二、功能介绍(1)数据录入功能(2)查询功能:分为姓名查询和应缴税款查询两种(3)统计功能:输入一个部门,统计该部门的人员应缴税款总和并显示数据。(4)排序功能:能实现选择按月薪升序或降序排序并显示数据。三、
2、程序流程 开始(J/T)进入系统J新增显示查找退出修改删除 结束T新建追加按编号查按姓名查按年龄查按职位查按编号按姓名逐个删除全部删除四、设计步骤1.登陆界面设计登录界面如图1所示:图1 登录界面 在登录界面中,实现进入系统和退出系统功能。 算法描述:用 jiemian1() 函数判断用户输入的字符,如果是“ j”或“J” 字符,则进入人事管理系统,如果是“t”或“T”字符,则退出人事管理系统,如果是其他字符则提示错误并请求重新输入。2添加模块设计 添加模块界面如图2所示:图2 添加模块界面 在添加模块中,实现新建和追加的功能。 算法描述:利用YunSuan类中的成员函数workerdata(
3、)来进入添加模块,再通过函数workerdata()中的loop_1和loop_1i的执行来实现新建和追加功能。再通过if语句进行判断用户输入的字符,如果是“1”字符,则执行新建功能,如果是“2”字符,则执行追加功能。class YunSuan (定义YunSuan声明)void workerdata() (YunSuan类中成员函数的声明) 3.显示模块设计 显示模块界面如图3所示:图3 显示模块界面 在显示设计中,实现显示(输出)员工的编号、姓名、年龄、职位、联系电话和联系地址的功能。 算法描述:利用YunSuan类中的成员函数workerdata()来进入显示模块,再通过YunSuan类
4、中的disp()函数来实现显示员工对象的数据的功能。class YunSuan (定义YunSuan声明)void workerdata() (YunSuan类中成员函数的声明)void disp() for(int i=0;i=top;i+) if(mani.GetOnoff()=0) if(i%5=0) coutpprintn() 5.修改模块设计 修改模块界面如图5所示:图5 修改模块界面在修改模块中,实现按员工编号和按员工姓名来修改员工资料的功能。 算法描述:利用YunSuan类中的成员函数workerdata()来进入修改模块,再利用manin.printw(); w-pprintn
5、;w-deldate();以及do语句来实现按员工编号和按员工姓名修改的功能。class YunSuan (定义YunSuan声明)void workerdata() (YunSuan类中成员函数的声明)manin.printw();w-pprintn();w-deldate();addperson(worherbh,m,k,workern,addr,postt); 6.删除模块设计 删除模块界面如图6所示:图6 删除模块界面 在删除模块中,实现逐个删除和全部删除员工数据的功能 算法描述:利用YunSuan类中的成员函数workerdata()来进入删除模块,再利用workerdata()函数
6、loop_5和loop_52中的switch(xz5)语句来执行功能,用w-deldate()来达到删除员工数据的目的。class YunSuan (定义YunSuan声明)void workerdata() (YunSuan类中成员函数的声明)w-deldate(); 7.退出模块设计 退出模块界面如图7所示:图7 退出模块界面 在退出模块中,实现退出人事管理系统的功能。 算法描述:利用jiemian3()函数来输出退出模块界面,提示退出系统。8(1)员工类成员函数:构造函数 Worker();设置姓名函数 void SetName(char na);设置地址函数 void SetAdr(c
7、har dizhi);设置员工职位函数void SetPost(char zhiwei);设置联系电话函数int GetTelp()return telp; (1)员工类数据成员:int bianha; int onoff; char name5; int age; ;int telp; char adr15; char post109(1)yunsuan类成员函数:构造函数 yunsuan();删除函数void clear();比较编号函数Worker *query(int personid);比较姓名函数Worker *qu(char na);Worker *qw(char na)比较年龄
8、函数Worker *pq(int qxid);输出函数void disp() ;void disp2();输出界面函数void jiemian1();void jiemian3()析构功能函数void workerdata();对yunsuan类数据成员的类外声明函数void YunSuan:workerdata(); (2)Yunsuan类数据成员:Int top ; int in; worker man10000;五、设计总结这次的课程设计基本上涵盖了我们大一学习的C+ 语言的知识点,本次课程设计题目不仅要求了我们对课本知识有较深刻的了解,同时要求我们有较强的动手能力。这次课程设计使我了解
9、了一些编程思想和编程技巧,也认识了程序开发的各个环节,包括构思、设计、编写、调试、发布、文档化、维护和修订。如果我们只关心程序运行的结果,而对程序代码的结构的良好丝毫不在意,这是非常不可取的。我们一定要抱着严谨的态度来编程。这次做课程设计不仅让我复习了以前学过的内容,也让我知道一个道理:编程需要兴趣和实际动手。这应该可以借鉴在老师的教学工作上。创新思维至关重要,这不仅让我们写出精简的代码,也有助于开发出高效的程序。六、程序清单#include#include #include #include#include class Worker/员工类 int onoff;/开关数据,当其为0时表示员工
10、存在,为1时表示不存在 int bianh;/编号 char name5;/姓名数组 int age;/年龄 int telp;/联系电话 char adr15;/地址 char post10;/职位public: Worker()/构造函数 char *GetName()return name;/获得姓名 int GetOnoff()return onoff;/获得开关 int GetNo()return bianh;/获得编号 int GetTelp()return telp;/获得联系电话 int GetAge()return age;/获得年龄 char *GetAdr()return
11、 adr;/获得地址 char *GetPost()return post;/获得职位 void SetNum(int num)bianh=num;/用num给编号赋值 void SetAge(int pxid)pxid=age;/用age给年龄赋值 void SetName(char na)/用数组na给姓名赋值 strcpy(name,na); void SetAdr(char dizhi)/用数组dizhi给地址赋值 strcpy(adr,dizhi); void SetPost(char zhiwei)/用数组zhiwei给地址赋值 strcpy(post,zhiwei); void
12、deldate()onoff=1;/删除指定的单个员工的资料 void addperson(int b,int a,long int t,char *na,char *dizhi,char *zhiwei)/将输入的资料赋值给相映的数据 onoff=0; bianh=b; strcpy(name,na); strcpy(adr,dizhi); strcpy(post,zhiwei); age=a; telp=t; void printw()/输出函数,输出文字 coutsetw(10)编号setw(10)姓名setw(10) 年龄setw(10)职位setw(15)联系电话setw(15)联系
13、地址endl; void pprintn()/输出所有员工的资料 if(GetOnoff()=0) coutsetw(10)bianhsetw(10)namesetw(10)agesetw(10) postsetw(15)telpsetw(15)adrendl; ;class YunSuan/ YunSuan类 int top,in; Worker man10000;/将员工类的对象作为YunSuan类的私有成员public: YunSuan()/YunSuan类的构造函数 Worker s; top=-1; fstream file(worker.dat,ios:in);/将文件以输入的方式
14、打开 while(1)/用s给所有员工资料赋初值 file.read(char *)&s,sizeof(s); if(!file)break; top+; mantop=s; file.close();/关闭文件 void clear()/删除所有的员工资料 top=-1; int addperson(int n,int m,int k,char *na,char *dizhi,char *zhiwei) Worker *p=query(n),*q=query(m),*j=query(k); if(p=NULL) top+; mantop.addperson(n,m,k,na,dizhi,zh
15、iwei); return 1; return 0; Worker *query(int personid) /将系统中的编号与输入的编号比较 for(int i=0;i=top;i+) if(mani.GetNo()=personid&mani.GetOnoff()=0) return &mani;in=i; return NULL; Worker *qu(char na)/将系统中的姓名与输入的姓名比较 for(int i=0;i=top;i+) if(strcmp(mani.GetName(),na)=0&mani.GetOnoff()=0) return &mani;in=i; ret
16、urn NULL; Worker *qw(char na)/将系统中的姓名与输入的姓名比较 for(int i=0;i=top;i+) if(strcmp(mani.GetName(),na)=0&mani.GetOnoff()=0) return &mani;in=i; return NULL; Worker *pq(int qxid) /将系统中的年龄与输入的年龄比较 for(int i=0;i=top;i+) if(mani.GetAge()=qxid&mani.GetOnoff()=0) coutendl; mani.pprintn(); return NULL; Worker *qp
17、(char zhiwei) coutendlsetw(11)所找员工资料:endlendl; coutsetw(10)编号setw(10)姓名setw(10) 年龄setw(10)职位setw(15)联系电话 setw(15)联系地址endl; for(int i=0;i=top;i+) if(strcmp(mani.GetPost(),zhiwei)=0&mani.GetOnoff()=0) coutendl; mani.pprintn(); return NULL; void disp()/输出所有员工的资料 for(int i=0;i=top;i+) if(mani.GetOnoff()
18、=0) if(i%5=0) coutendl; mani.pprintn(); void disp2()/输出指定的单个员工的资料 coutendl; manin.pprintn(); void jiemian1()/界面1,进入程序时输出 coutendl; cout 欢迎使用人事管理系统endlendl; coutendl; cout J:进入系统endlendl; cout T:退出系统endlendl; coutnnnn; cout 指导老师:李之玲endl; cout 班 级:网络09406endl; cout 学 生:尹馨宁endl; cout 电 话:endl; cout 地 址
19、:长大学生宿舍1公寓218寝室endl endl; void jiemian3()/界面3,程序结束后输出 coutendlendl; cout 忠心感谢您对本系统的支持!endlendlendlendl; cout 指导老师:李之玲endl; cout 班 级:网络09406 endl; cout 学 生:尹馨宁 endlendlendlendlendlendl; cout 输入任意键退出; do exit(0); while(1); void workerdata(); YunSuan()/YunSuan类的析构函数,作用:释放空间,并将数据存入文件中 fstream file(worke
20、r.dat,ios:out); for(int i=0;i=top;i+) if(mani.GetOnoff()=0) file.write(char *)&mani,sizeof(mani); file.close(); ;void YunSuan:workerdata()/对YunSuan类的成员函数workerdata的类外声名 char choice=0; char ch,workern20,addr40,postt30; int worherbh; int m; int k; Worker *w; while(choice!=6) coutendlendl; cout 功能菜单 en
21、dl; coutendl; cout 1:新增endl; cout 2:显示endl; cout 3:查找endl; cout 4:修改endl; cout 5:删除endl; cout 6:退出endl; coutendlchoice; if(choice=6) /clear(); break; switch(choice) case 1: char ch1; coutendlt欢迎进入新增系统!endlendl; cout1.新建(删除原有的记录):endlendl; cout2.追加(保留原有的记录):endlendl; coutendlch1; if(ch1=1) char chi;
22、cout确定新建?(Y/N)chi; switch(chi) case Y|y:clear();break; case N|n:goto loop_1b; default:cout错误:输入错误,请重新输入!endl; goto loop_1i; if(ch1!=1&ch1!=2) cout错误:输入错误,请重新输入!endl; goto loop_1; do do coutendl请输入员工编号:worherbh; w=query(worherbh); if(w!=NULL) cout错误:该编号资料已存在,请重新输入。endl; while(w!=NULL); cout请输入员工姓名:wo
23、rkern; cout年龄:m; cout职位:postt; cout联系电话:k; cout联系地址:addr; addperson(worherbh,m,k,workern,addr,postt); coutch; while(ch=y|ch=Y); loop_1b: break; case 2: coutendlsetw(11)所有员工资料:endlendl; coutsetw(10)编号setw(10)姓名setw(10) 年龄setw(10)职位setw(15)联系电话setw(15)联系地址endl; disp(); coutendl; break; case 3: char xz
24、3; int pxid; char na10; char zhiwei15; do coutendl; coutt欢迎进入查询系统!endlendl; cout1.按编号查找:endl; cout2.按姓名查找:endl; cout3.按年龄查找:endl; cout4.按职位查找:endl; cout请输入相应的数字选择:xz3; switch(xz3) case 1: coutworherbh; w=query(worherbh); if(w=NULL) cout该编号员工不存在!endlendl; break; coutendlsetw(11)所找员工资料:endlendl; couts
25、etw(10)编号setw(10)姓名setw(10) 年龄setw(10)职位setw(15)联系电话setw(15)联系地址 pprintn(); coutendl; break; case 2: coutna; w=qu(na); if(w=NULL) cout该姓名员工不存在!endlendl; break; coutendlsetw(11)所找员工资料:endlendl; coutsetw(10)编号setw(10)姓名setw(10) 年龄setw(10)职位setw(15)联系电话setw(15)联系地址pprintn(); coutendl; break; case 3: co
26、utpxid; pq(pxid); coutendl; break; case 4: coutzhiwei; w=qp(zhiwei); coutendl; break; default: cout错误:输入错误,请重新输入!endl; goto loop_3; cout是否还要继续查找(Y/N):endlch; while(ch=y|ch=Y); break; case 4: char choice,workern10; do coutendl; coutt欢迎进入修改系统!endl; coutendl;loop_4: cout1.按员工编号修改:endl; cout2.按员工姓名修改:en
27、dl; coutchoice; switch(choice) /int num; case 1: coutworherbh; w=query(worherbh); if(w=NULL) cout该员工资料不存在!pprintn(); w-deldate(); do do coutendl请输入新员工编号:worherbh; w=query(worherbh); if(w!=NULL) cout错误:该编号资料已存在,请重新输入。endl; while(w!=NULL); cout请输入员工姓名:workern; cout年龄:m; cout职位:postt; cout联系电话:k; cout联
28、系地址:addr; addperson(worherbh,m,k,workern,addr,postt); coutch; while(ch=y|ch=Y); break; case 2: coutworkern; w=qw(workern); if(w=NULL) cout该员工资料不存在!pprintn(); w-deldate(); do do coutendl请输入员工新编号:worherbh; w=query(worherbh); if(w!=NULL) cout错误:该编号资料已存在,请重新输入.endl; while(w!=NULL); cout请输入员工姓名:workern; cout年龄:m; cout职位:postt; cout联系电话:k; cout联系地址:addr; addperson(worherbh,m,k,workern,addr,postt); coutch; while(ch=y|ch=Y); /break; default: cout错误:输入错误,请重新输入!endl; goto loop_4; coutch; cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智研咨询-电机行业市场调查、产业链全景及市场需求规模预测报告(2025版)
- 2025年01月中国贸促会直属单位公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 体格检查课件
- 人类的生殖系统课件
- Unit+3+Weather+Part+B 人教PEP版英语四年级下册
- Unit 1 Keeping Healthy Lesson 1【知识精研】五年级英语下学期同步备课(人教新起点版)
- Recycle Mike's happy days Day 7 Day 8 【知识精研】人教PEP版英语六年级下册
- 生活在大自然的怀抱里课件
- 6.1法律保护下的婚姻 课件 【知识精研】高中政治统编版选择性必修二法律与生活
- 合理安排文章结构课件
- 2024年山东公务员考试申论试题(B卷)
- 化工产品加工协议书范本
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 2024年中考语文(云南卷)真题详细解读及评析
- 2025年上半年山东气象局应届高校毕业生招考易考易错模拟试题(共500题)试卷后附参考答案
- 电梯消防安全与维护
- 文化差异下的家庭教育与亲子关系探讨
- 2025年中国棕榈粕行业市场现状、前景分析研究报告(智研咨询发布)
- 【大学课件】工程伦理与社会
- 2025届江苏省南京市、盐城市高三语文一模调研作文题目解析及范文:直路、陡坡、弯道
- 第二单元 主题活动三《世界那么大我想去看看》(说课稿)-2023-2024学年六年级下册综合实践活动内蒙古版
评论
0/150
提交评论