收藏 分销(赏)

C语言报告小型公司工资标准管理系统.doc

上传人:精**** 文档编号:2497101 上传时间:2024-05-30 格式:DOC 页数:25 大小:559.54KB 下载积分:10 金币
下载 相关 举报
C语言报告小型公司工资标准管理系统.doc_第1页
第1页 / 共25页
C语言报告小型公司工资标准管理系统.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
课 程 设 计 课程名称: 程序设计方法和C 语言课程设计 设计题目: 小型企业工资管理系统设计 学 院: 信息工程和自动化学院 专 业: 计算机科学和技术 年 级: 级 学生姓名: 指导老师: 张力 日 期: 6月22日—7月6日 教 务 处 制 课 程 设 计 任 务 书 信息工程和自动化 学院 计算机科学和技术 专业 年级 班级: 082 学号: 姓名: 课程设计题目: 程序设计方法和C 语言课程设计 课程设计关键内容: 一、 编程实现小型企业工资管理系统: 需求分析: 1、企业关键有4类人员:经理、技术员、销售员、销售经理。要求存放这些人 职员号、姓名、月工资、岗位、年纪、性别等信息。 2、工资计算方法: A、经理:固定月薪为8000; B、技术员:工作时间*小时工资(100元每小时); C、销售员:销售额*4%分成; D、销售经理:底薪(5000)+所辖部门销售额总额*0.5%; 3、注册新职员,添加新职员具体信息,如:职员号,姓名,出生年份,性别,职称,部门工资等; 4、按姓名,部门等条件进行查询; 5、修改和删除职员信息; 6、按工资高低进行排序; 7、把各项纪录存放在文本文件中 设计 1、 类及类层次结构设计 有一个父类和4个子类 父类中有虚函数,和基础数据录入和输出,特殊数据录入处理由多态实现。 2、 模块分析 1):新建部分 为实现不限制数量人员录入建立链表; 2):查找 在链表中查找含有某个特殊组员数据对象,从头到尾寻求一边,判定是否输出 3):排序 链表排序,冒泡排序,选择对其关键字进行排序;交换结点(交换对象next数据) 4):输出到文本 有类,fstream和函数save实现,链表组员一次输入 3、 主菜单设计 (一)、 编码及调试 完整程序: Main.cpp: #include"staff.h" #include"My_function.h" #include<stdio.h> int main() { fstream io("date.txt",ios::out); Staff head; Staff *h,*p,*s; h=&head; p=&head; s=&head; if(!io) { cerr<<"File could not be opened"<<endl; exit(1); }; int i=0; while(i!=4) { cout<<"请选择你要进行操作"<<endl; cout<<"1:注册新职员 2:查询"<<endl; cout<<"3:按工资高低进行排序"<<endl; cout<<"4:统计并推出"<<endl; cin>>i; switch(i) { case 1:Login(&p,&s);break; case 2:Query(h);break; case 3:Sort(h); break; case 4:Save(head,io); break; default:cout<<"请重新选择"<<endl; }; }; system("cls"); cout<<"作者:计科082 崔辉毅 10405207"<<endl; cout<<"……版权归作者崔某全部……"<<endl; cout<<"………西陵荣誉出品………"<<endl; return 0; }; STFF.H: #ifndef STAFF_H #define STAFF_H #include<fstream> #include<iostream> #include<string> using namespace std; class Staff; class Staff { public: Staff(); Staff(int i); ~Staff(); virtual int count_wage(); virtual void set(); void b_set(); //基础信息录入 virtual void get(); void b_get(); //基础信息输出 void set_wage(int wage); int get_wage(); void set_next(Staff* next); Staff* get_next(); void set_job(int job); int get_job(); string get_name(); void b_save(fstream &io); virtual void save(fstream &io); private: string M_NO,M_name; //职员号、姓名 int M_job; //岗位(1经理、2技术员、3销售员、4销售经理) int M_wage,M_age,M_sex; //月工资、年纪、性别(1男2女) int M_year; //出生年份 Staff *M_next; //指向下一个 }; class Manager:public Staff { public: Manager(); void set(); void get(); int count_wage(); void save(fstream &io); }; class Technician:public Staff { public: Technician(); void set(); void get(); int count_wage(); void save(fstream &io); private: int M_time; }; class Sales:public Staff { public: Sales(); void set(); void get(); int count_wage(); void save(fstream &io); private: int M_sale; }; class Sales_Manager:public Staff { public: Sales_Manager(); void set(); void get(); int count_wage(); void save(fstream &io); private: int M_sale; }; #endif STAFF.CPP: #include"staff.h" Staff::Staff(int i) { M_job=i; M_next=0; }; Staff::Staff() { M_next=0; }; Manager::Manager() { set_job(1); Staff(); }; Technician::Technician() { set_job(2); }; Sales::Sales() { set_job(3); }; Sales_Manager::Sales_Manager() { set_job(4); }; Staff::~Staff() { }; void Staff::set() { }; void Staff::b_set() { cout<<"请输入该职员职员号"<<endl; cin>>M_NO; cout<<"请输入该职员姓名"<<endl; cin>>M_name; cout<<"请输入该职员出生年份"<<endl; cin>>M_year; cout<<"请输入该职员性别(1男2女)"<<endl; cin>>M_sex; }; void Staff::get() { }; void Staff::b_get() { cout<<"职员号: "<<M_NO<<endl; cout<<"姓名: "<<M_name<<endl; cout<<"出生年份: "<<M_year<<endl; if(M_sex==1) cout<<"性别: 男"<<endl; else cout<<"性别: 女"<<endl; }; int Staff::count_wage() { return 0; }; void Staff::set_wage(int wage) { M_wage=wage; }; int Staff::get_wage() { return M_wage; }; void Staff::set_next(Staff* next) { M_next=next; }; Staff* Staff::get_next() { return M_next; }; string Staff::get_name() { return M_name; }; void Staff::set_job(int job) { M_job=job; }; int Staff::get_job() { return M_job; }; void Staff::b_save(fstream &io) { io<<"职员号: "<<M_NO<<endl; io<<"姓名: "<<M_name<<endl; io<<"出生年份: "<<M_year<<endl; if(M_sex==1) io<<"性别: 男"<<endl; else io<<"性别: 女"<<endl; }; void Staff::save(fstream &io){}; int Manager::count_wage() { set_wage(8000); return 8000; }; void Manager::set() { b_set(); count_wage(); }; void Manager::get() { b_get(); cout<<"职务: Manager"<<endl; cout<<"月薪: 8000"<<endl; }; void Manager::save(fstream &io) { b_save(io); io<<"职务: Manager"<<endl; io<<"月薪: 8000"<<endl; }; int Technician::count_wage() { set_wage((M_time*100)); return M_time*100; }; void Technician::set() { b_set(); cout<<"请输入该职员月工作时间"<<endl; cin>>M_time; count_wage(); }; void Technician::get() { b_get(); cout<<"职务: Technician"<<endl; cout<<"月薪: "<<count_wage()<<endl; }; void Technician::save(fstream &io) { b_save(io); io<<"职务: Technician"<<endl; io<<"月薪: "<<count_wage()<<endl; }; int Sales::count_wage() { set_wage((M_sale*0.04)); return M_sale*0.04; }; void Sales::set() { b_set(); cout<<"请输入该职员销售额"<<endl; cin>>M_sale; count_wage(); }; void Sales::get() { b_get(); cout<<"职务: Sales"<<endl; cout<<"月薪: "<<count_wage()<<endl; }; void Sales::save(fstream &io) { b_save(io); io<<"职务: Sales"<<endl; io<<"月薪: "<<count_wage()<<endl; }; int Sales_Manager::count_wage() { set_wage((5000+M_sale*0.0005)); return 5000+M_sale*0.0005; }; void Sales_Manager::set() { b_set(); cout<<"请输入该职员所辖部门销售额总额"<<endl; cin>>M_sale; count_wage(); }; void Sales_Manager::get() { b_get(); cout<<"职务: Sales_Manager"<<endl; cout<<"月薪: "<<count_wage()<<endl; }; void Sales_Manager::save(fstream &io) { b_save(io); io<<"职务: Sales_Manager"<<endl; io<<"月薪: "<<count_wage()<<endl; }; My_function.h: #ifndef MY_FUNCTION_H #define MY_FUNCTION_H #include"staff.h" void Login(Staff **p,Staff **s); void Query(Staff *h); void name(Staff *h); void job(Staff *h); void Sort(Staff *h); void Save(Staff &h,fstream &io); #endif My_function.cpp: #include"My_function.h" void Login(Staff **p,Staff **s) { int i; cout<<"请输入该职员职务(1经理、2技术员、3销售员、4销售经理)"<<endl; cin>>i; switch(i) { case 1:*s=new Manager;break; case 2:*s=new Technician;break; case 3:*s=new Sales;break; case 4:*s=new Sales_Manager;break; }; (**s).set(); (**p).set_next(*s); *p=*s; }; void Query(Staff *h) { int i; cout<<"请选择:1 按姓名查询"<<endl; cout<<" 2 按部门查询"<<endl; cin>>i; switch(i) { case 1:name(h);break; case 2:job(h);break; default:cout<<"请重新选择"<<endl; }; }; void name(Staff *h) { Staff *p=h,*s=h; string name; cout<<"请输入您要查询职员名字"<<endl; cin>>name; while((*p).get_next()) { if((*p).get_name()==name) { (*p).get(); }; s=(*p).get_next(); p=s; }; if((*p).get_name()==name) { (*p).get(); }; cout<<"搜寻结束"<<endl; }; void job(Staff *h) { Staff *p=h,*s=h; int job; cout<<"请输入您要查询部门编号(1经理、2技术员、3销售员、4销售经理)"<<endl; cin>>job; while((*p).get_next()) { if((*p).get_job()==job) { (*p).get(); }; s=(*p).get_next(); p=s; }; if((*p).get_job()==job) { (*p).get(); }; cout<<"搜寻结束"<<endl; }; void Sort(Staff *h) { Staff *z,*x=h; //z:中间变量 x:监管循环次数 Staff *s,*p,*q; s=h; p=(*h).get_next(); if(p) { q=(*p).get_next(); if(q) { while((p!=0)&&(q!=0)&&(s!=0)) { while((p!=0)&&(q!=0)&&(s!=0)) { if((*p).get_wage()>(*q).get_wage()) { (*s).set_next(q); z=(*q).get_next(); (*q).set_next(p); (*p).set_next(z); s=q; q=(*p).get_next(); } else { s=p; p=q; q=(*q).get_next(); }; }; x=(*x).get_next(); s=x; p=(*s).get_next(); q=(*p).get_next(); }; } } cout<<"排序完成,退出时输出到文本查看"<<endl; }; void Save(Staff &h,fstream &io) { Staff *p,*s; p=h.get_next(); s=h.get_next(); while(p) { (*p).save(io); cout<<endl; s=(*p).get_next(); p=s; }; }; 调试: 1.注册职员(链表实现): 2.查询: 3.排序: 4.文本: 二、分析程序题: ……………………………… 四、 总结和体会 经过课程设计了解了一定得链表知识和指针使用。 具体来说对链表建立,查找和排序全部进行了练习,其间对指针是用注意细节愈加明了.等等… … 五、 参考文件 书本…… 设 计 指 导 教 师 (签字): 教学基层组织责任人(签字): 年6月 20 日
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服