C语言课程设计——小型公司系统管理.doc

上传人:文库蛋蛋多 文档编号:2384894 上传时间:2023-02-17 格式:DOC 页数:31 大小:548.50KB
返回 下载 相关 举报
C语言课程设计——小型公司系统管理.doc_第1页
第1页 / 共31页
C语言课程设计——小型公司系统管理.doc_第2页
第2页 / 共31页
C语言课程设计——小型公司系统管理.doc_第3页
第3页 / 共31页
C语言课程设计——小型公司系统管理.doc_第4页
第4页 / 共31页
C语言课程设计——小型公司系统管理.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《C语言课程设计——小型公司系统管理.doc》由会员分享,可在线阅读,更多相关《C语言课程设计——小型公司系统管理.doc(31页珍藏版)》请在三一办公上搜索。

1、昆明理工大学 课 程 设 计课程名称: 程序设计语言课程设计 设计题目: 小型公司系统管理 学 院: 信息工程与自动化 专 业: 计算机科学与技术 年 级: 092 学生姓名: 徐兴繁 指导教师: 李英娜 日 期: 教 务 处 制课程设计(论文)任务书信息工程与自动化 学院 计算机科学与技术 专业 2009 级学生姓名(学号): 徐兴繁(200910405214 ) 课程设计目的: 通过设计一个较为简单的管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用

2、;逐步熟悉程序设计的方法,并养成良好的编程习惯。目 录1 系统功能要求 -12 系统功能分析和设计思路、-2-53 程序 -5-184 .运行结果-18-225 系统流程图-22-236 总结、心得与体会 -23-246 参考书目-24课程设计(论文)题目及具体内容:1题目1、公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。2、工资的计算方法:A、经理:固定月薪为8000;B、技术员:工作时间*小时工资(100元每小时);C、销售员:销售额*4%提成;D、销售经理:底薪(5000)+所辖部门销售额总额*0.5%; 3、注册新职工

3、,添加新职工的详细信息,如:职工号,姓名,出生年份,性别,职称,部门工资等;4、按姓名,部门等条件进行查询;5、修改和删除职工信息;6、按工资高低进行排序;7、把各项纪录存储在文本文件中。2.系统功能分析和设计思路我们使用面向对象程序设计方法的思路进行分析,首先是公司雇员这一个大基类,其它诸如经理等的类应该由此类派生;再有、为了方便实现各类信息以文件方式的储存以及实现各种功能和界面,我们决定再创建一个系统类。所以我们接下来所要做的一切工作都要围绕这两个类(1)公司雇员类 employee:可以说这是本系统的一个“总基类”,我们按照预期的设计及要求由它派生出了经理类 ,技术员类、销售员类 以及销

4、售经理类 。由于考虑到各个小的分类之间在形式下差不多,为了不出现“二义性”的问题,我们主要在各个类之间采取定义虚基类以及纯虚函数的思路进行调用。另外、由于我们对链表的运用以及链表的掌握还不是很熟练,再加上为了使各个类方便与系统类进行直接连接,我们遂决定采用对象数组存放文件中读入或读出的各类公司人员信息。(2)系统类 :由于这个系统涉及到了文件的应用,所以系统类 是必不可少的。我们对问题分析、讨论以后决定,系统类 的主要成员函数要包括:提供输入各类数据的 信息、添加各类信息的 ,用于各类查询。(3)由于考虑到这应该是一个完整的管理系统,加上我们希望这个系统的界面能够做到清晰、明了,我们经讨论后决

5、定采用一个总操作界面,三个分操作界面。总操作界面应该包括 (分别对应 1.输入信息 ,2统计信息3. 打印信息 4.信息查询5.退出)输入信息界面中又因该包括 1.经理类 2.技术员类3.销售员类 4.销售经理类 5.退出。查询信息并显示界面中又应该包括 1.经理类 2.技术员类 3.销售员类 5.退出。计算总工资并显示界面中又应该包括 1.经理类 2.技术员类 3.销售员类 4.销售经理类 5.退出。3.使用说明进入主菜单后选1-1为输入经理类的信息;1-2为输入技术员类的信息;1-3为输入销售员类的记录;1-4为输入销售经理类的记录;1-5为退出此界面并返回到主界面。选2-1为经理类的信息

6、记录;2-2为技术员类信息的记录;2-3为销售员类信息的记录;2-4销售经理类信息的记录;2-5为退出此界面并返回到主界面。以上操作的详细流程请参照流程图3。选3-1为计算经理类数据打印;3-2为计算技术员类的数据打印;3-3为计算销售员类数据打印;3-4为计算销售经理类数据打印;3-5为退出此界面并返回到主界面。选4为查询数据选5退出系统,返回上一级4.程序如下#include#include#include#include#includeusing namespace std;const int n1=2,n2=2,n3=4,n4=2; const double m_salary=8000

7、; const double hourpay=100; const double basicpay=5000; const double s_proportion=4.0/100; const double sm_proportion=0.5/100; void menu(); void menu2(); void menu3(); void data_input(); void data_print(); void charthead1(); void charthead2(); void chartend(); void statistics(); double sm_salary();

8、void sm_print(); void data_find(); void data_save(); ofstream outfile; string f_name; class Employee public: void input() coutnum; coutname; coutsex; coutage; void print() cout endl; cout setw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay endl; void find() if(f_name=name) charthead2(); print()

9、; chartend(); coutendl; void save() outfile endl; outfile setw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay endl; protected: int num; string name; char sex; int age; double pay; ;class Technician:public Employee public: void input() cout技术员的; Employee:input(); coutworktime; void print() pay=w

10、orktime*hourpay; Employee:print(); void find() Employee:find(); void save() pay=worktime*hourpay; Employee:save(); protected: double worktime; ;class Manager:public Employee public: void input() cout经理的; Employee:input(); void print() pay=m_salary; Employee:print(); void find() Employee:find(); void

11、 save() pay=m_salary; Employee:save(); ;class Sell_manager:public Employee public: void input() cout销售经理的; Employee:input(); int sm_number() return num; string sm_name() return name; void print() cout endl; cout setw(6)num setw(8)name setw(6)sex setw(6) age ; void save() outfile endl; outfilesetw(6)

12、num setw(8)name setw(6)sex setw(6) age ; ;class Seller:public Employee public: Seller() sold_amount=0; void input() cout销售员的; Employee:input(); coutsold_amount; coutnu; void grade() cout endl; cout setw(6)num setw(8)name setw(7)sold_amount endl; void print() pay=sold_amount*s_proportion; cout endl;

13、cout setw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; int s_number() return nu; double amount() return sold_amount; void find() if(f_name=name) cout endl; cout 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; print(); cout ; void save() pay=sold_amount*s_proportion; outfile endl; outfil

14、e setw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; protected: double sold_amount; int nu; ; Technician tn1; Manager mn2; Seller sn3; Sell_manager smn4; int main() char n; menu(); for(int i=0;in; switch(n) case1: coutendl您所选操作为数据输入,请继续.endlendl; data_input(); coutendl; menu()

15、; break; case2: coutendl您所选操作为数据统计,请继续.endlendl; statistics(); coutendl销售经理按工资排序为:nendl; sm_print(); coutendl; menu(); break; case3: coutendl您所选操作为数据打印,请继续.endlendl; couta数据打印中,请等待nnendl; cout职工基本情况一览表如下:nendl; data_print(); coutendlendl; couta.数据打印完毕.nnendl; menu(); break; case4: coutendl您所选操作为数据查询

16、,请继续.endlendl; coutf_name; coutendl.正在查询,请等待.endlendl; cout您查询的信息如下:endlendl; data_find(); coutendlendl; menu(); break; case5: outfile.open(C+程序设计实习.txt,ios:out); coutendl您所选操作为数据备份,请继续.endlendl; outfile职工基本情况一览表如下:nendl; data_save(); outfile.close(); coutendlendl; couta数据备份完成,请继续.endlendl; menu();

17、break; case0: coutendl您所选操作为退出系统,请确认.endlendl; cout 是( y ) n; if(n=y) coutn.请按任意键退出系统.endl; exit(0); coutendl; else menu(); break; default: coutendl出错!请重新选择操作! nendl; menu(); break; return 0;void menu() cout 小型公司工资管理系统 endl; cout endl; cout 请选择您所需的操作 endl; cout 数据输入:1,并按回车键; endl; cout 数据统计:2,并按回车键;

18、 endl; cout 数据打印:3,并按回车键; endl; cout 数据查询:4,并按回车键; endl; cout 数据备份:5,并按回车键; endl; cout 退出系统:0,并按回车键; endl; cout endl; cout 请选择一个操作:;void menu2() cout 小型公司工资管理系统 endl; cout endl; cout 请选择您所需的操作 endl; cout 经理数据输入 :1,并按回车键; endl; cout 技术员数据输入 :2,并按回车键; endl; cout 销售员数据输入 :3,并按回车键; endl; cout 销售经理数据输入:4

19、,并按回车键; endl; cout 返回上一级 :5,并按回车键; endl; cout endl; cout 请选择一个操作:;void menu3() cout 小型公司工资管理系统 endl; cout endl; cout 请选择您所需的操作 endl; cout 经理数据打印 :1,并按回车键; endl; cout 技术员数据打印 :2,并按回车键; endl; cout 销售员数据打印 :3,并按回车键; endl; cout 销售经理数据打印:4,并按回车键; endl; cout 返回上一级 :5,并按回车键; endl; cout endl; cout 请选择一个操作:;

20、void data_input() char p;int i; menu2(); for(int j=0;jp; if(p=5) break; else switch(p) case1: for(i=0;in2;i+) mi.input(); coutendl endl;menu2();break; case2: for(i=0;in1;i+) ti.input(); coutendl endl;menu2();break; case3: for(i=0;in3;i+) si.input(); coutendl endl;menu2();break; case4: for(i=0;in4;i+

21、) smi.input(); coutendl endl;menu2();break; void charthead1() cout endl; cout职 工 号 姓 名 销 售 额 endl;void charthead2() coutendl; cout 职 工 号 姓 名 性 别 年 龄 工 资 endl;void chartend() cout ; void statistics() int i,j; for(i=0;in4;i+) double sum=0; coutendl职工号为 smi.sm_number() 销售经理 smi.sm_name() 下属销售员的业绩为:endl

22、endl; charthead1(); for(j=0;jn3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); sj.grade(); cout endl; cout 销售额总计 setw(12)sum endl; cout endl; double salaryn4;double sm_salary() int i,j;double a ;Sell_manager b; for(int k=0;kn4;k+) salaryk=0; for(i=0;in4;i+) double sum=0; for(j=0;jn3;j+) i

23、f(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); salaryi=sum*sm_proportion+basicpay; for( j=0;jn4-1;j+) for( i=0;in4-1-j;i+) if(salaryisalaryi+1) a=salaryi+1;salaryi+1=salaryi;salaryi=a; b=smi+1;smi+1=smi;smi=b; return 0;void sm_print() sm_salary(); charthead2(); for(int i=0;in4;i+) smi.print();

24、 coutsetw(7)salaryi endl; chartend(); coutendl;void data_print() char p;int i,j; menu2(); for(j=0;jp; if(p=5) break; else switch(p) case1: coutendl经理endl; charthead2(); for(i=0;in2;i+) mi.print(); chartend(); coutendlendl endl; menu3();break; case2: coutendl技术员endl; charthead2(); for(i=0;in1;i+) ti.

25、print(); chartend(); coutendlendl endl; menu3();break; case3: coutendl销售员endl; cout endl; cout 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; for(i=0;in3;i+) si.print(); cout ; coutendlendl nendl; menu3();break; case4: coutendl销售经理endl; sm_salary(); sm_print(); coutendlendl endlendl; menu3();break; void data_

26、find() for(int i=0;in1;i+) ti.find(); for(i=0;in2;i+) mi.find(); for(i=0;in3;i+) si.find(); for(i=0;in4;i+) if(f_name=smi.sm_name() charthead2(); smi.print(); coutsetw(7)salaryi endl; chartend(); coutendl; break; void data_save() outfileendl技术员endl; outfile endl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 endl;

27、for(int i=0;in1;i+) ti.save(); outfile ; outfileendlendl endl; outfileendl经理endl; outfile endl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 endl; for(i=0;in2;i+) mi.save(); outfile ; outfileendlendl endl; outfileendl销售经理endl; sm_salary(); outfile endl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 endl; for(i=0;in4;i+) smi.save(); outfilesetw(7)salaryi endl; outfile ; outfileendlendl endlendl; outfileendl销售员endl; outfile endl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; for(i=0;in3;i+) si.save(); outfile ; ou

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号