欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    小型公司工资管理系统C课程设计报告.doc

    • 资源ID:35095066       资源大小:77KB        全文页数:24页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    小型公司工资管理系统C课程设计报告.doc

    C+程序设计课程设计报告课 题: 小型公司工资管理系统专业班级: xxxxx 学 号: xxxxxxxx 姓 名: xxxxx 评阅意见:评定成绩: 指导老师签名: 2012 年 6 月 12 日指导教师: xxxxx 目录目录一、课程设计内容31.1课程设计的目的31. 2设计题目及要求3二、设计思路4三、程序清单72. 1程序源代码7四、运行结果304.1程序运行313. 2备份文本信息34五、程序使用说明36六、总结及心得体会36(要求:给出一级目录,宋体加粗,四号字, 1.5倍行距)一:课程设计内容1.1、课程设计的目的 此次课程设计的目的是以程序设计语言(C/C+)为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2、设计题目及要求(1) 题目:小型公司工资管理系统 设计(2) 设计题目及要求:1.公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。其中 (1)职工编号在输入人员信息时生成,每输入一个人员信息编号顺序加1。(2)程序对所有人员有提升级别的功能。   (3)能够按照不同身份进行月薪的计算。   (4)能按姓名或者编号查找各类人员的信息。(5)能够修改/删除各类人员的信息。(6)能够显示所有人员的信息。2.工资的计算办法:经理:固定月薪为8000;技术员:工作时间小时工资(100元每小时);销售员:销售额4%提成;销售经理:底薪(5000)所辖部门销售额总额0.5%;3)类的层次结构大体如下: 雇员类技术员类经理类销售员类销售经理类1.3 课程设计步骤与方法 1.需求分析:对用户提出的问题提出解决的办法和思路。 2.根据需求,设计系统功能模块,并设计相应的类和界面。 3.根据基本思路,确定输入和输出,设计程序的算法。 4.确定用到的所有类的描述和定义,并设计测试程序来对类进行测试。 6.在计算机上编译程序,检验程序的可运行性。1.4 课程设计报告内容 写设计报告(要求正规打印,A4幅面),内容包括:题目系统功能模块结构图数据结构设计及用法说明程序结构(画流程图)各模块的功能试验结果(包括输入数据和输出结果)体会参考文献附录:源程序清单二、设计思路1、整体考虑程序应该实现的功能,有员工信息管理、职务管理、月薪计算、查找信息、显示所有人员的信息和退出系统6个。2、首先定义一个Employee的雇员基类,然后由此派生出Manager、Seller、Tech三个分别为经理类、销售员类、技术员类;再由Seller派生出销售经理类Xmanager。每个类中的成员都是public型的,所有的继承都是公有继承,基类中定义有数据输入和输出函数。3、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个switch语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操作,1对应信息管理,2对应职务管理,3对应月薪计算,4对应查找信息,5对应显示所有人员的信息,0对应退出系统。4、case中调用了五个无参的函数allSave()Exit();dataManagement() ;postManaMenu() ;calculateSal() ;findMenu() ;allDisplay() ;五个函数均用了模板函数的实例化分别进行输入、职务管理、计算月薪、显示全部信息。如输入中的一个:template <class T , class Ti > void showMember(T & t , Ti * ti )if(t.n <= 0 ) return ; for(t.p = t.head ; t.p != NULL ; t.p = t.p -> next ) t.p -> show() ;showMember()函数在各个类中都定义,并且同名,这样能简化程序。5、在进行信息输入时,在基类中定义了一个虚函数,避免了值的副本,首先给出提示语句,首先选择要输入的职工类型,然后依次调用saveFile(),首先创建类的对象指针,如Seller * t ;ofstream cout ("S.txt"),建立文件流,创建链表,将所输入的数据都保存至文件,并且对备份文件进行命名,同时确定存储位置。以便之后的查找和删除功能的实现。6、在进行工资计算时,每个类都定义了各自的calcuSalary()函数,依次计算出每一种职工的工资,由提示语句选择是否输出。7、职务管理功能的实现,是通过编号来查找要提升职位的人员,选择要升为哪一种职位,然后将多余的数据成员删除,在提升后的成员中将工资重新进行计算,予以赋值。8、查找时,建立函数模板,参数为class T , class Ti,需要在哪一个类中查找就将模板实例化为哪一个类,每一次查找时,指针都是先指向文件的起始位置,然后用for循环来控制,先要输入编号,如t.p != NULL && t.p -> num != no;若当前对象的编号与输入的编号不相等,则指针移向下一个对象继续查找,若相等则停止查找,并将所找到的信息全部输出。9、考虑各种数据类型还有所需的C+内的函数,要引用<iostream><cstring><fstream><iomanip>这四个头文件。<fstream>用于数据保存至文件。 10、修改和删除的功能都是按照编号、利用模板函数实例化来实现的,找到后由switch控制,1.姓名 2.性别 3.年龄 4.编号 5.工资,先选择要修改的属性,然后输入新信息,将原有信息替换;删除时,首先在每一个类中由指针找到要删除的职工,然后将这个对象的每一个数据成员用NULL覆盖,即清零处理,该职工的信息就被删除了。11、整体构思比较简单,基本能够实现各项功能源程序清单:#include<iostream>#include<cstring>#include<fstream>#include<iomanip>using namespace std ;class Employeepublic:Employee * next ; char name50; int num; int age; char sex8; double salary;char post30;char * getName()return name ;int getNum()return num ;int getAge()return age ;char * getSex()return sex ;double getSalary()return salary ;char * getPost()return post ;virtual void get()cout<<"t姓名:"cin>>name;cout<<"t性别:"cin>>sex;cout<<"t年龄:"cin>>age;cout<<"t编号:"cin>>num;Employee()salary = 0.0 ;virtual void show()cout<<"t"<<name<<"t"<<sex<<"t"<<age<<"t"<<num<<"t"<<salary<<"t"<<post<<endl ;class Tech:virtual public Employeepublic:int hour ;Tech * next ;void get()Employee:get(); cout<<"t工作时间(小时):" ;cin>>hour ;double gethour()return hour ;double calcuSalary() salary = 100 * hour ;return salary;class Seller:virtual public Employeepublic:Seller *next ;double income ;void get()Employee:get();cout<<"t请输入营业额:"cin>>income ;double calcuSalary()salary = income * 0.04 ;return salary ;double getIncome() return income ; class Manager:virtual public Employeepublic:Manager * next ;void calcuSalary()salary = 8000.00 ;class SellerListpublic :int n ;Seller * head , *p ;SellerList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; S ;template <class TT , class Ti > void addMember(TT & t , Ti * ti )Ti * p = t.head ;t.head = ti ;if(p = NULL) t.head -> next = NULL ;t.head -> next = p ;t.n + ;void SellerList:inputFile()Seller * t;char na50 ;ifstream cins ("S.txt") ;while(cins >> na )t = new Seller() ;t -> next = NULL ;strcpy(t -> name , na ) ;cins >> (t -> post ) >> (t -> sex) >> (t -> num) >> (t -> age) >> (t -> salary) >> (t -> income) ;addMember(S , t ) ;void SellerList:saveFile() Seller * t ;ofstream cout ("S.txt") ;for(t = S.head ; t != NULL ; t = t ->next )cout<< (t -> name)<<' ' << (t -> post ) <<' '<< (t -> sex) <<' '<< (t -> num)<<' '<< (t -> age) <<' '<< (t -> salary) <<' '<< (t -> income)<<endl ;class XManager:virtual public Manager,public Sellerpublic :XManager * next , *p ;double calcuSalary() ;double XManager:calcuSalary()Seller * t;salary = income * 0.005 ;for(t = S.head ; t != NULL ; t = t -> next ) salary += t -> income * 0.005 ;return salary ;class TechListpublic :int n ;Tech * head , * p ;TechList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; T ;template <class T , class Ti > void showMember(T & t , Ti * ti )if(t.n <= 0 ) return ; for(t.p = t.head ; t.p != NULL ; t.p = t.p -> next ) t.p -> show() ;void TechList:inputFile()char na50 ;Tech * t ;ifstream cint ("T.txt") ;while(cint>> na )t = new Tech() ;t -> next = NULL ;strcpy(t -> name , na ) ;cint >> (t -> post ) >> (t -> sex) >> (t -> num) >> (t -> age) >> (t -> salary) >> (t -> hour) ;addMember(T , t ) ;void TechList:saveFile() Tech * t ;ofstream cout ("T.txt") ;for(t = T.head ; t != NULL ; t = t ->next )cout<< (t -> name)<<' ' << (t -> post ) <<' '<< (t -> sex) <<' '<< (t -> num)<<' '<< (t -> age) <<' '<< (t -> salary) <<' '<< (t -> hour)<<endl ;class XManagerListpublic :int n ;XManager * head , * p ;XManagerList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; X ;void XManagerList:inputFile()XManager * t ;char na50 ;ifstream cinx ("X.txt") ;while(cinx >> na )t = new XManager() ;t -> next ;strcpy(t -> name , na ) ;cinx >> (t -> post ) >> (t -> sex) >> (t -> num) >> (t -> age) >> (t -> salary) ;addMember(X , t ) ;void XManagerList:saveFile() XManager * t ;ofstream cout ("X.txt") ;for(t = X.head ; t != NULL ; t = t ->next )cout<< (t -> name)<<' ' << (t -> post ) <<' '<< (t -> sex) <<' '<< (t -> num)<<' '<< (t -> age) <<' '<< (t -> salary)<<endl ;class ManagerListpublic :int n ;Manager * head , *p ;ManagerList()n = 0 ;p = head = NULL ;void inputFile() ;void saveFile() ; M;void ManagerList:inputFile()Manager * t;char na50 ;ifstream cinm ("M.txt") ;while(cinm >> na )t = new Manager() ;t -> next = NULL ;strcpy(t -> name , na ) ;cinm >> (t -> post ) >> (t -> sex) >> (t -> num) >> (t -> age) >> (t -> salary ) ;addMember(M , t ) ;void ManagerList:saveFile() Manager * t ;ofstream cout ("M.txt") ;for(t = M.head ; t != NULL ; t = t ->next )cout<< (t -> name)<<' ' << (t -> post ) <<' '<< (t -> sex) <<' '<< (t -> num)<<' '<< (t -> age) <<' '<< (t -> salary)<<endl ;void Exit()cout<<"t您已成功退出系统!"<<endl;exit(0) ;int mainMenu() cout<<"t_"<<endl ;cout<<"t 主菜单"<<endl ;cout<<"t_nn"<<endl ;cout<<"t 1. 员工信息管理"<<endl;cout<<"t 2. 职务管理"<<endl;cout<<"t 3. 月薪计算"<<endl;cout<<"t 4. 员工信息查找"<<endl;cout<<"t 5. 显示所有人员信息"<<endl;cout<<"t 0. 退出程序 "<<endl;cout<<"t_nn"<<endl ;cout<<"t请选择 >> " ;return 0;void addDataMenu() int sel ;Tech * ti ;Seller *si ;Manager * mi ;XManager * xi ;cout<<"nnnnt*"<<endl ;cout<<"t 添加员工信息"<<endl ;cout<<"t*n"<<endl ;cout<<"t 1. 技术员"<<endl;cout<<"t 2. 销售员"<<endl;cout<<"t 3. 销售经理"<<endl;cout<<"t 4. 总经理"<<endl;cout<<"t 0. 返回"<<endl;cout<<"t_nn"<<endl ;cout<<"t请选择 : >> " ;while(cin>>sel && (sel > 4 | sel < 0 ) ) cout<<"nt您的输入有误,请重新输入: " ;switch(sel )case 0 : return ;case 1 :ti = new Tech() ;strcpy(ti -> post, "技术员") ; ti -> get() ;/ti -> show() ;addMember(T , ti) ;break ;case 2 :si = new Seller() ;strcpy(si -> post , "销售员") ;si -> get() ;addMember(S , si ) ;break ;case 3 :xi = new XManager() ;strcpy(xi -> post , "销售经理") ;xi -> get() ;addMember(X , xi) ;break ;case 4 :mi = new Manager() ;strcpy(mi -> post , "总经理") ;mi -> get() ;addMember(M , mi ) ;break ;default : break ;template <class T , class Ti > void renewMember(T & t , Ti * ti )int no , sel ;cout<<"nt请输入员工编号: " ;cin>>no ;if(findMember(t , ti , no ) = false )cout<<"nt该员工不存在,操作失败! "<<endl ;return ;cout<<"nnntn"cout<<"t"<<"1.姓名"<<"t"<<"2.性别"<<"t"<<"3.年龄"<<"t"<<"4.编号"<<"t"<<"5.工资"<<endl ;cout<<"tn"t.p -> show() ;cout<<"ntn"cout<<"nt请输入要修改的属性编号:" ;cin>>sel ;if(sel < 1 | sel > 5 )cout<<"nt对不起,您的输入有误,操作失败 !"<<endl ;return ;char na50 , s8 ;int a , nu ;double sal ;switch(sel )case 1: cout<<"nt请输入姓名: " ;cin>>na ;strcpy(t.p -> name , na ) ;cout<<"nt修改成功 ! "<<endl ;break ;case 2: cout<<"nt请输入性别: " ;cin>>s ;strcpy(t.p -> sex , s ) ;cout<<"nt修改成功 ! "<<endl ;break ;case 3: cout<<"nt请输入年龄: " ;cin>>a ;t.p -> age = a ;cout<<"nt修改成功 ! "<<endl ;break ;case 4: cout<<"nt请输入编号: " ;cin>>nu ;t.p -> num = nu ;cout<<"nt修改成功 ! "<<endl ;break ;case 5: cout<<"nt请输入工资: "cin>>sal ;t.p -> salary = sal ;cout<<"nt修改成功 ! "<<endl ;break ;default :break ;void renewData()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;cout<<"nnntn"cout<<"t 修改员工信息"<<endl ;cout<<"tn"cout<<"t 1. 技术员"<<endl;cout<<"t 2. 销售员"<<endl;cout<<"t 3. 销售经理"<<endl;cout<<"t 4. 总经理"<<endl;cout<<"t 0. 返回"<<endl;cout<<"tn"cout<<"t请选择 : >> " ;while(cin>>sel && (sel > 4 | sel < 0 ) ) cout<<"nt您的输入有误,请重新输入: " ;switch(sel )case 0 : return ;case 1 :renewMember(T , t ) ;break ;case 2 : renewMember(S , s ) ;break ;case 3 : renewMember(X , x ) ;break ;case 4 :renewMember(M , m ) ;break ;default : break ;template <class T , class Ti > bool deleteMember(T & t , Ti * ti , int no)if(findMember(t , ti , no ) = false )cout<<"nt该员工不存在,操作失败! "<<endl ;return false;t.n - ;if(t.head -> num = no )delete(t.head ) ;t.head = NULL ;return true;Ti * pi ;for(ti = t.head ; ti -> next != NULL && ( (ti -> next -> num) != no) ; ti = ti -> next ) ;pi = ti -> next -> next ;delete(ti -> next ) ;ti -> next = pi ;return true ;void deleteData()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;cout<<"nnnt*"<<endl ;cout<<"t_n"<<endl ;cout<<"t 删除员工信息"<<endl ;cout<<"t*n"<<endl ;cout<<"t 1. 技术员"<<endl;cout<<"t 2. 销售员"<<endl;cout<<"t 3. 销售经理"<<endl;cout<<"t 4. 总经理"<<endl;cout<<"t 0. 返回"<<endl;cout<<"t_nn"<<endl ;cout<<"t请选择 : >> " ;while(cin>>sel && (sel > 4 | sel < 0 ) ) cout<<"nt您的输入有误,请重新输入: " ;cout<<endl ;int no ;switch(sel )case 0 : return ;case 1 :cout<<"t请输入编号 : >> " ;cin>>no ;if(deleteMember(T ,t , no) cout<<"nt删除成功 !"<<endl ;break ;case 2 : cout<<"t请输入编号 : >> " ;cin>>no ;if(deleteMember(S , s , no)cout<<"nt删除成功 !"<<endl ;break ;case 3 : cout<<"t请输入编号 : >> " ;cin>>no ;if(deleteMember(X , x, no) ) cout<<"nt删除成功 !"<<endl ;break ;case 4 :cout<<"t请输入编号 : >> " ;cin>>no ;if(deleteMember(M , m , no) ) cout<<"nt删除成功 !"<<endl ;break ;default : break ;void dataManagement() int sel ;while(1)cout<<"nnnnt*"<<endl ;cout<<"t 员工信息管理"<<endl ;cout<<"t*n"<<endl ;cout<<"t 1. 添加信息"<<endl;cout<<"t 2. 修改信息"<<endl;cout<<"t 3. 删除信息"<<endl;cout<<"t 0. 返回"<<endl;cout<<"t_nn"<<endl ;cout<<"t请选择 : -> " ;while(cin>>sel && (sel > 3 | sel < 0 ) ) cout<<"nt您的输入有误,请重新输入: " ;switch(sel )case 0 : return ;case 1 : addDataMenu() ; break ;case 2 : renewData() ; break ;case 3 : deleteData() ; break ;default : break ;template <class T , class Ti > bool findMember(T & t , Ti * ti , int no)for(t.p = t.head ; t.p != NULL && t.p -> num != no ; t.p = t.p -> next ) ;if(t.p != NULL ) return true ;else return false ;void all_Init()T.head = NULL ;S.head = NULL ;M.head = NULL ;X.head = NULL ;T.inputFile() ;S.inputFile() ;M.inputFile() ;X.inputFile() ;void allSave()T.saveFile() ;S.saveFile() ;M.saveFile() ;X.saveFile() ;template <class T , class S > void copyMember(T *t , S *s )strcpy(t -> name , s -> name ) ;strcpy(t -> sex , s -> sex ) ;t -> age = s -> age ;t -> num = s -> num ;template <class TT , class Ti > int changePost(TT t , Ti ti )int no , sel ;Tech * tt ;Seller * ss ;XManager * xx ;Manager * mm ;cout<<"nt请输入员工编号: " ;cin>>no ;if(findMember(t , ti , no ) = false )cout<<"nt该员工不存在,操作失败! "<<endl ;return no ;cout<<"nnnt*"<<endl ;cout<<"t 调换为: "<<endl ;cout<<"t*n"<<endl ;cout<<"t 1. 技术员"<<endl;cout<<"t 2. 销售员"<<endl;cout<<"t 3. 销售经理"<<endl;cout<<"t 4. 总经理"<<endl;cout<<"t 0. 返回"<<endl;cout<<"t_

    注意事项

    本文(小型公司工资管理系统C课程设计报告.doc)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开