长春大学课程设计面向对象程序设计人事管理系统.docx
- 文档编号:4753580
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:32
- 大小:98.85KB
长春大学课程设计面向对象程序设计人事管理系统.docx
《长春大学课程设计面向对象程序设计人事管理系统.docx》由会员分享,可在线阅读,更多相关《长春大学课程设计面向对象程序设计人事管理系统.docx(32页珍藏版)》请在冰点文库上搜索。
长春大学课程设计面向对象程序设计人事管理系统
一、设计目的…………………………………………………………………2
二、功能介绍…………………………………………………………………2
三、程序流程…………………………………………………………………3
四、设计步骤(不用加过多代码)…………………………………………4
五、设计总结…………………………………………………………………9
六、程序清单…………………………………………………………………9
七、参考文献…………………………………………………………………22
一、设计目的
(1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
(5)用文件进行管理
二、功能介绍
(1)数据录入功能
(2)查询功能:
分为姓名查询和应缴税款查询两种
(3)统计功能:
输入一个部门,统计该部门的人员应缴税款总和并显示数据。
(4)排序功能:
能实现选择按月薪升序或降序排序并显示数据。
三、程序流程
四、设计步骤
1.登陆界面设计
登录界面如图1所示:
图1登录界面
在登录界面中,实现进入系统和退出系统功能。
算法描述:
用jiemian1()函数判断用户输入的字符,如果是“j”或“J”字符,则进入人事管理系统,如果是“t”或“T”字符,则退出人事管理系统,如果是其他字符则提示错误并请求重新输入。
2.添加模块设计
添加模块界面如图2所示:
图2添加模块界面
在添加模块中,实现新建和追加的功能。
算法描述:
利用YunSuan类中的成员函数workerdata()来进入添加模块,再通过函数workerdata()中的loop_1和loop_1i的执行来实现新建和追加功能。
再通过if语句进行判断用户输入的字符,如果是“1”字符,则执行新建功能,如果是“2”字符,则执行追加功能。
classYunSuan(定义YunSuan声明)
voidworkerdata()(YunSuan类中成员函数的声明)
3.显示模块设计
显示模块界面如图3所示:
图3显示模块界面
在显示设计中,实现显示(输出)员工的编号、姓名、年龄、职位、联系电话和联系地址的功能。
算法描述:
利用YunSuan类中的成员函数workerdata()来进入显示模块,再通过YunSuan类中的disp()函数来实现显示员工对象的数据的功能。
classYunSuan(定义YunSuan声明)
voidworkerdata()(YunSuan类中成员函数的声明)
voiddisp()
{for(inti=0;i<=top;i++)
{if(man[i].GetOnoff()==0)
if(i%5==0)
cout< man[i].pprintn();}}(成员函数disp()的定义) 4.查找模块设计 查找模块界面如图4所示: 图4查找模块界面 在查找模块中,实现按编号查找、按姓名查找和按职位查找员工对象的功能。 算法描述: 利用YunSuan类中的成员函数workerdata()来进入查找模块,再利用workerdata()函数中的switch(xz3)语句来进行具体的查询操作并输出查询结果。 classYunSuan(定义YunSuan声明) voidworkerdata()(YunSuan类中成员函数的声明) switch(xz3) w->pprintn() 5.修改模块设计 修改模块界面如图5所示: 图5修改模块界面 在修改模块中,实现按员工编号和按员工姓名来修改员工资料的功能。 算法描述: 利用YunSuan类中的成员函数workerdata()来进入修改模块,再利用man[in].printw();w->pprintn;w->deldate();以及do语句来实现按员工编号和按员工姓名修改的功能。 classYunSuan(定义YunSuan声明) voidworkerdata()(YunSuan类中成员函数的声明) man[in].printw(); w->pprintn(); w->deldate(); addperson(worherbh,m,k,workern,addr,postt); 6.删除模块设计 删除模块界面如图6所示: 图6删除模块界面 在删除模块中,实现逐个删除和全部删除员工数据的功能 算法描述: 利用YunSuan类中的成员函数workerdata()来进入删除模块,再利用workerdata()函数loop_5和loop_52中的switch(xz5)语句来执行功能,用w->deldate()来达到删除员工数据的目的。 classYunSuan(定义YunSuan声明) voidworkerdata()(YunSuan类中成员函数的声明) w->deldate(); 7.退出模块设计 退出模块界面如图7所示: 图7退出模块界面 在退出模块中,实现退出人事管理系统的功能。 算法描述: 利用jiemian3()函数来输出退出模块界面,提示退出系统。 8. (1)员工类成员函数: 构造函数Worker(){}; 设置姓名函数voidSetName(charna[]); 设置地址函数voidSetAdr(chardizhi[]); 设置员工职位函数voidSetPost(charzhiwei[]); 设置联系电话函数intGetTelp(){returntelp; (1)员工类数据成员: intbianha;intonoff;charname[5];intage;;inttelp;charadr[15];charpost[10] 9. (1)yunsuan类成员函数: 构造函数yunsuan(); 删除函数voidclear(); 比较编号函数Worker*query(intpersonid); 比较姓名函数Worker*qu(charna[]);Worker*qw(charna[]) 比较年龄函数Worker*pq(intqxid); 输出函数voiddisp();voiddisp2(); 输出界面函数voidjiemian1();voidjiemian3() 析构功能函数voidworkerdata(); 对yunsuan类数据成员的类外声明函数voidYunSuan: : workerdata(); (2)Yunsuan类数据成员: Inttop;intin;workerman[10000]; 五、设计总结 这次的课程设计基本上涵盖了我们大一学习的C++语言的知识点,本次课程设计题目不仅要求了我们对课本知识有较深刻的了解,同时要求我们有较强的动手能力。 这次课程设计使我了解了一些编程思想和编程技巧,也认识了程序开发的各个环节,包括构思、设计、编写、调试、发布、文档化、维护和修订。 如果我们只关心程序运行的结果,而对程序代码的结构的良好丝毫不在意,这是非常不可取的。 我们一定要抱着严谨的态度来编程。 这次做课程设计不仅让我复习了以前学过的内容,也让我知道一个道理: 编程需要兴趣和实际动手。 这应该可以借鉴在老师的教学工作上。 创新思维至关重要,这不仅让我们写出精简的代码,也有助于开发出高效的程序。 六、程序清单 #include #include #include #include #include classWorker//员工类 { intonoff;//开关数据,当其为0时表示员工存在,为1时表示不存在 intbianh;//编号 charname[5];//姓名数组 intage;//年龄 inttelp;//联系电话 charadr[15];//地址 charpost[10];//职位 public: Worker(){}//构造函数 char*GetName(){returnname;}//获得姓名 intGetOnoff(){returnonoff;}//获得开关 intGetNo(){returnbianh;}//获得编号 intGetTelp(){returntelp;}//获得联系电话 intGetAge(){returnage;}//获得年龄 char*GetAdr(){returnadr;}//获得地址 char*GetPost(){returnpost;}//获得职位 voidSetNum(intnum){bianh=num;}//用num给编号赋值 voidSetAge(intpxid){pxid=age;}//用age给年龄赋值 voidSetName(charna[])//用数组na[]给姓名赋值 { strcpy(name,na); } voidSetAdr(chardizhi[])//用数组dizhi[]给地址赋值 {strcpy(adr,dizhi); } voidSetPost(charzhiwei[])//用数组zhiwei[]给地址赋值 {strcpy(post,zhiwei); } voiddeldate(){onoff=1;}//删除指定的单个员工的资料 voidaddperson(intb,inta,longintt,char*na,char*dizhi,char*zhiwei)//将输入的资料赋值给相映的数据 { onoff=0; bianh=b; strcpy(name,na); strcpy(adr,dizhi); strcpy(post,zhiwei); age=a; telp=t; } voidprintw()//输出函数,输出文字 { cout< <<"年龄"< } voidpprintn()//输出所有员工的资料 { if(GetOnoff()==0) cout< < } }; classYunSuan//YunSuan类 { inttop,in; Workerman[10000];//将员工类的对象作为YunSuan类的私有成员 public: YunSuan()//YunSuan类的构造函数 { Workers; top=-1; fstreamfile("worker.dat",ios: : in);//将文件以输入的方式打开 while (1)//用s给所有员工资料赋初值 { file.read((char*)&s,sizeof(s)); if(! file)break; top++; man[top]=s; } file.close();//关闭文件 } voidclear()//删除所有的员工资料 { top=-1; } intaddperson(intn,intm,intk,char*na,char*dizhi,char*zhiwei) { Worker*p=query(n),*q=query(m),*j=query(k); if(p==NULL) { top++; man[top].addperson(n,m,k,na,dizhi,zhiwei); return1; } return0; } Worker*query(intpersonid)//将系统中的编号与输入的编号比较 { for(inti=0;i<=top;i++) { if(man[i].GetNo()==personid&&man[i].GetOnoff()==0) {return&man[i];in=i;} } returnNULL; } Worker*qu(charna[])//将系统中的姓名与输入的姓名比较 { for(inti=0;i<=top;i++) { if(strcmp(man[i].GetName(),na)==0&&man[i].GetOnoff()==0) {return&man[i];in=i;} } returnNULL; } Worker*qw(charna[])//将系统中的姓名与输入的姓名比较 { for(inti=0;i<=top;i++) { if(strcmp(man[i].GetName(),na)==0&&man[i].GetOnoff()==0) {return&man[i];in=i;} } returnNULL; } Worker*pq(intqxid)//将系统中的年龄与输入的年龄比较 { for(inti=0;i<=top;i++) { if(man[i].GetAge()==qxid&&man[i].GetOnoff()==0) { cout< man[i].pprintn(); } } returnNULL; } Worker*qp(charzhiwei[]) {cout< "< cout< <<"年龄"< < for(inti=0;i<=top;i++) { if(strcmp(man[i].GetPost(),zhiwei)==0&&man[i].GetOnoff()==0) { cout< man[i].pprintn(); } } returnNULL; } voiddisp()//输出所有员工的资料 { for(inti=0;i<=top;i++) { if(man[i].GetOnoff()==0) if(i%5==0) cout< man[i].pprintn(); } } voiddisp2()//输出指定的单个员工的资料 { cout< man[in].pprintn(); } voidjiemian1()//界面1,进入程序时输出 { cout< cout<<"※欢迎使用人事管理系统※"< cout< cout<<"J: 进入系统"< cout<<"T: 退出系统"< cout<<"\n"<<"\n"<<"\n"<<"\n"; cout<<"指导老师: 李之玲"< cout<<"班级: 网络09406"< cout<<"学生: 尹馨宁"< cout<<"电话: 2786482"< cout<<"地址: 长大学生宿舍1公寓218寝室"< < } voidjiemian3()//界面3,程序结束后输出 { cout< cout<<"忠心感谢您对本系统的支持! "< cout<<"指导老师: 李之玲"< cout<<"班级: 网络09406"< cout<<"学生: 尹馨宁"< cout<<"输入任意键退出"; do { exit(0); }while (1); } voidworkerdata(); ~YunSuan()//YunSuan类的析构函数,作用: 释放空间,并将数据存入文件中 { fstreamfile("worker.dat",ios: : out); for(inti=0;i<=top;i++) if(man[i].GetOnoff()==0) file.write((char*)&man[i],sizeof(man[i])); file.close(); } }; voidYunSuan: : workerdata()//对YunSuan类的成员函数workerdata的类外声名 { charchoice='0'; charch,workern[20],addr[40],postt[30]; intworherbh; intm; intk; Worker*w; while(choice! ='6') { cout< cout<<"★功能菜单★"< cout< cout<<"1: 新增"< cout<<"2: 显示"< cout<<"3: 查找"< cout<<"4: 修改"< cout<<"5: 删除"< cout<<"6: 退出"< cout< "; loop_0: cin>>choice; if(choice=='6') { //clear(); break; } switch(choice) { case'1': charch1; cout< "< cout<<"1.新建(删除原有的记录): "< cout<<"2.追加(保留原有的记录): "< cout< "; loop_1: cin>>ch1; if(ch1=='1') {charchi; cout<<"<新建将删除原有记录>确定新建? (Y/N)"< loop_1i: cin>>chi; switch(chi) { case'Y'|'y': clear();break; case'N'|'n': gotoloop_1b; default: cout<<"错误: 输入错误,请重新输入! "< gotoloop_1i; } } if(ch1! ='1'&&ch1! ='2') {cout<<"错误: 输入错误,请重新输入! "< gotoloop_1; } do { do { cout< "< cin>>worherbh; w=query(worherbh); if(w! =NULL) cout<<"错误: 该编号资料已存在,请重新输入。 "< }while(w! =NULL); cout<<"请输入员工姓名: "< cin>>workern; cout<<"年龄: "< cin>>m; cout<<"职位: "< cin>>postt; cout<<"联系电话: "< cin>>k; cout<<"联系地址: "< cin>>addr; addperson(worherbh,m,k,workern,addr,postt); cout<<"是否还要继续录入(Y/N)? "; cin>>ch; }while(ch=='y'||ch=='Y'); loop_1b: break; case'2': cout< "< cout< <<"年龄"< disp(); cout< break; case'3': charxz3; intpxid; charna[10]; charzhiwei[15]; do {cout< cout<<'\t'<<"欢迎进入查询系统! "< cout<<"1.按编号查找: "< cout<<"2.按姓名查找: "< cout<<"3.按年龄查找: "< cout<<"4.按职位查找: "< cout<<"请输入相应的数字选择: "< loop_3: cin>>xz3; switch(xz3) { case'1': cout<<"请输员工编号: "; cin>>worherbh; w=query(worherbh); if(w==NULL) { cout<<"该编号员工不存在! "< break; } cout< "< cout< <<"年龄"< < w->pprintn(); cout< break; case'2': cout<<"请输入姓名: "; cin>>na; w=qu(na); if(w==NULL) { cout
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 长春 大学 课程设计 面向 对象 程序设计 人事管理系统