




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
昆明理工大学 课 程 设 计课程名称: 程序设计语言课程设计 设计题目: 小型公司系统管理 学 院: 信息工程与自动化 专 业: 计算机科学与技术 年 级: 092 学生姓名: 徐兴繁 指导教师: 李英娜 日 期: 教 务 处 制课程设计(论文)任务书信息工程与自动化 学院 计算机科学与技术 专业 2009 级学生姓名(学号): 徐兴繁(200910405214 ) 课程设计目的: 通过设计一个较为简单的管理系统,进一步熟悉c+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对c+的理解与visual c+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。目 录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、注册新职工,添加新职工的详细信息,如:职工号,姓名,出生年份,性别,职称,部门工资等;4、按姓名,部门等条件进行查询;5、修改和删除职工信息;6、按工资高低进行排序;7、把各项纪录存储在文本文件中。2.系统功能分析和设计思路我们使用面向对象程序设计方法的思路进行分析,首先是公司雇员这一个大基类,其它诸如经理等的类应该由此类派生;再有、为了方便实现各类信息以文件方式的储存以及实现各种功能和界面,我们决定再创建一个系统类。所以我们接下来所要做的一切工作都要围绕这两个类(1)公司雇员类 employee:可以说这是本系统的一个“总基类”,我们按照预期的设计及要求由它派生出了经理类 ,技术员类、销售员类 以及销售经理类 。由于考虑到各个小的分类之间在形式下差不多,为了不出现“二义性”的问题,我们主要在各个类之间采取定义虚基类以及纯虚函数的思路进行调用。另外、由于我们对链表的运用以及链表的掌握还不是很熟练,再加上为了使各个类方便与系统类进行直接连接,我们遂决定采用对象数组存放文件中读入或读出的各类公司人员信息。(2)系统类 :由于这个系统涉及到了文件的应用,所以系统类 是必不可少的。我们对问题分析、讨论以后决定,系统类 的主要成员函数要包括:提供输入各类数据的 信息、添加各类信息的 ,用于各类查询。(3)由于考虑到这应该是一个完整的管理系统,加上我们希望这个系统的界面能够做到清晰、明了,我们经讨论后决定采用一个总操作界面,三个分操作界面。总操作界面应该包括 (分别对应 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为经理类的信息记录;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; 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(); 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(); 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=worktime*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 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)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; 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; outfile 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(); 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您所选操作为数据查询,请继续.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(); 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,并按回车键; 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,并按回车键; 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 请选择一个操作:;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+) 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() 下属销售员的业绩为:endlendl; 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+) if(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(); 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.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_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; 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 ; outfileendlendl nendl;运行结果输入职工数据数据打印查询数据6.流程图设计的心得体会经过短短的两周的编程实习,让我对c与c+程序有了一个耕升的了解,以前总认为c语言很枯燥,认为那些我们所学的程序没有用,但现在通过设计小型公司的管理这个程序使我懂得如何将所学的知识用于生活之中,虽然一开始不知道如何去设计这个程序,但我从图书馆借了c+自学手册 认真的学完,并从中找到与之相类似的列子,我就慢慢的编出了这个程序,一开始有几十个错误,后面我通过问老师最终把这个程序调试正确。 分析函数我都是从main()函数入手。main 函数是c和c+源程序编译的开始。从main 函数中可以将其它函数的功能理解更透彻。在做程序时先列框架将程序要达到的目的分析出来,选择正确的函数表达出来,把基础学好不一定能把程序编好,但基础知识不好,一定编不出好程序。编程最主要是思路清晰,只要你把思路理顺了,就有利于你在编程的过程中少走弯路。认真对待每一个程序的编写 ,做好对每一个所编程序的总结 ,写程序尽量要规范、严谨,效率尽量要高 ,养成自我测试的习惯 5多看一些别人编的程序,把好的思路和方法记下来,以备不时之需 参考教材1.c+面向对象程序设计/e balagurusamy著 清华大学出版2. c+程序设计教程/钱能主编:清华大学出版社,2000.113. visual c+程序设计基础/戴锋编著:清华大学出版社,2001.44.标准c+程序设计教程/林丽闽主编:电子工业出版社,2003.6 5. c+程序设计/谭浩强主编:清华大学出版社,2004.6贪吃蛇程序#include /*图形头文件*/#include /*包含rand等函数*/#include /*包含bios函数*/#define left 0x4b00/*光标左键值*/#define right 0x4d00/*光标右键值*/#define down 0x5000/*光标下键值*/#define up 0x4800/*光标上键值*/#define esc 0x011b/*esc的ascii码*/#define n 200int i,key;/*图形坐标变量及按键变量*/int score=0;/*得分*/int gamespeed=10000;/*游戏速度自己调整*/struct food int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/food;/*食物的结构体*/ struct snake int x;/*蛇的横坐标*/ int y;/*蛇的纵坐标*/ int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/snake;void init(void);/*图形驱动*/void close(void);/*图形结束*/void drawk(void);/*画界面函数*/void gameover(void);/*结束游戏*/ void gameplay(void);/*玩游戏具体过程*/void prscore(void);/*输出成绩*/ void main(void)/*主函数*/void main(void)/*主函数*/ init();/*图形驱动*/ drawk();/*开始画面*/ gameplay();/*玩游戏具体过程*/ close();/*图形结束*/void init(void)/*图形驱动*/ int gd=detect,gm; initgraph(&gd,&gm,c:tc); /*第一个参数表示图形适配器的类型,第二个为在该类型下图形的显示模式,第三个参数指定驱动程序所在目录。*/ cleardevice();。void drawk(void)/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ setbkcolor(0);/*设置当前背景颜色*/ setcolor(yellow);/*设置当前画线颜色*/ setlinestyle(solid_line,0,thick_width);/*设置线型*/ for(i=50;i=600;i+=10)/*画围墙*/ rectangle(i,40,i+10,49); /*上边*/ rectangle(i,451,i+10,460);/*下边*/ for(i=40;i0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化艺术品市场交易数据概览表
- 2025年市场调研与分析职称考试试题及答案
- 2025年人力资源开发与管理硕士专业考试试题及答案
- 2025年家政服务职业技能鉴定考试题及答案
- 2025年国际营销策略与实践考试试题及答案
- 2025年电气工程师考试模拟试卷及答案
- 2025年甘肃省民航机场集团校园招聘45人笔试参考题库及答案详解1套
- 物资采购规章管理制度
- 特教机构老师管理制度
- 特殊医疗设备管理制度
- 中医治疗协议书范本(2篇)
- 供应柴油月结算合同范本
- 2024年《风力发电原理》基础技能及理论知识考试题库与答案
- 电商平台用户使用手册
- 2024秋国家开放大学《外国文学》形考任务1-4答案
- 房颤的规范化治疗
- 二位数乘二位数的计算题50道
- 2024高速养护工区标准化建设指南
- 物业服务外包合同
- NBT 33015-2014 电化学储能系统接入配电网技术规定
- GB/T 44260-2024虚拟电厂资源配置与评估技术规范
评论
0/150
提交评论