《面向对象程序设计》课程设计报告题目:职工信息管理;小型公司工资管理系统
院系:
专业班级:
学号:
学生姓名:
小组成员:
2011 年9月6 日
一、引言
本题对程序有如下要求:
试建立一个类Worker用于描述职工对象,具体要求如下:
私有数据成员
int id: 职工号。
float wage: 工资。
char level: 技术等级(A—一等,B—二等,C—三等,NULL—无级,其它为无效)
公有成员函数
缺省构造函数:初始化数据成员为0或NULL值。
带参构造函数:用参数初始化数据成员 (需判断参数是否有效)。
输出函数void List( ):输出本职工的各项信息。
修改函数void Set( ):从键盘输入新的职工号、工资和等级数据,修改相应数据成员的值。接受输入前屏幕上显示提示输入哪些信息。
主函数:定义三个不同的worker对象作为测试数据,完成对worker类和程序的测试。每个成员函数至少被调用一次。
系统功能介绍:
本程序中定义的Worker类中包含私有数据成员:Id、wage和level,公有成员函数:Worker()、void List( )和 void Set( ),Worker()可以用于参数初始化数据成员,并判断参数的有效性,void List( )可以用于职工信息的输出,void Set( )可以用于输入新的职工信息。此外本程序还可以将输入的技术等级A、B、C等对应的转换成一等、二等、三等,并将输入的职工信息保存到file.txt 中,而且在每次输入之前都会有提示信息。
模块设计:
各个成员函数间关联:
四、结果显示图:
五、程序清单:
(附主要函数)
#include
#include
#include
#include
#include
#define NULL 0
#define LEN sizeof(struct worker)
typedef struct worker //定义结构体
{
int num;
char name[20];
char level[20];
float wage;
struct worker * next;
}worker;
struct worker *head=NULL;
int n=0;
worker *input(worker *p); //函数声明
worker *baocun(worker *p);
worker *sort(worker *p);
void show(worker *p);
//*********************************主函数*******************
void main()
{
char c;
printf("\t***********************************************\n"); printf("\t * *\n"); printf("\t * *\n"); printf("\t * 欢迎进入 *\n"); printf("\t * 职工信息管理系统 *\n"); printf("\t * *\n"); printf("\t * 按回车键进入系统: *\n"); printf("\t * *\n"); printf("\t * *\n"); printf("\t * *\n"); printf("\t***********************************************\n"); getchar();
do
{
system("cls");
printf("\t************************************************\n"); printf("\t 欢迎使用 \n"); printf("\t 职工信息管理系统 \n");
printf("\t \n"); printf("\t 1: 添加职工信息 \n"); printf("\t 2: 显示职工信息 \n"); printf("\t 3: 保存职工信息 \n"); printf("\t 4: 退出 \n"); printf("\t \n"); printf("\t 请选择输入选项[1\\2\\3\\4]:");
do
{
c=getchar();
}while(c!='1'&&c!='2'&&c!='3'&&c!='4');
getchar();
switch(c)
{
case '1': head=input(head); break;
case '2': show(head); break;
case '3': baocun(head); break;
case '4': exit(0); break;
}
printf("\n\n\n\n\n按任意键返回主菜单: ");
getchar();
system("cls");
}while(1);
}
//*******************职工信息输入界面************************** worker *input(worker *p)
{
struct worker *a; //定义指针
n=0;
do
{
system("cls");
a=(worker *)malloc(sizeof(worker)); //开辟空间
printf("*******************职工信息输入界面********************\n\n\n");
printf(" 输入录入职工工号为0时退出!\n");
printf(" 请输入录入职工工号:");scanf("%d",&a->num);getchar();
if(a->num==0) break;
n++; //计算开辟节点数,以便排序
printf(" 请输入录入职工姓名:");gets(a->name);
printf(" 请输入录入职工工资:");scanf("%f",&a->wage);getchar();
printf(" 请输入录入职工等级:");gets(a->level);
a->next=NULL;
if(head==NULL)
{ head=a;p=head;}
else
{
p->next=a;
p=a;
}
}
while(1);
return(head);
}
//*****************职工信息显示界面**************************** void show(worker *p)
{
char c;
system("cls");
printf("*******************职工信息显示界面********************\n\n");
if(head==NULL) //内存为空{
printf(" 数据库暂为空,是否现在进行数据添加[Y/N]\n");
do
c=getchar();
while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
if(c=='Y'||c=='y')
input(head);
}
else
{
p=head; //输出内存员工信息
do
{
printf("工号:%-12d姓名:%-16s等级:%-12s工资:%-16f\n:",p->num,p->name,p->level,p->wage);
p=p->next;
}
while(p!=NULL);
}
}
//********************职工信息保存界面***********************
worker* baocun(worker* p1)
{
FILE* fp; //定义文件指针类型
worker* p;
p=p1;
fp=fopen("file.txt","wb"); //打开文件
if(fp==NULL)
{
printf("can not open the file");
getch();
exit(0);
}
while(p!=NULL)
{
if(fwrite(&head,sizeof (struct worker),1,fp)!=1)
printf("文件写入错误\n");
fclose(fp); /*关闭文件*/
printf("工号:%-12d姓名:%-16s等级:%-12s工资:%-16f\n:",p->num,p->name,p->level,p->wage);
p=p->next;
}
fclose(fp); //关闭文件
return p;
}
六、程序调试心得体会:
制作程序时,开始有些困难上网上搜了一些相近似的例子,然后自己进行模仿,调试,有一些问题解决不了的,就百度了一下,看一下问题出在什么地方,这一个题目稍微简单些,基本上自己百度一下都可以解决问题的。
之后对保存文件作了修改。
七、参考文献:
《c++面向对象程序设计》(第七版)Walter Savitch著周靖译清华大学出版社
一、引言
本题对程序有如下要求:
(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。
(2)工资的计算方法:
A.经理:固定月薪为8000;
B.技术员:工作时间*小时工资(100元每小时);
C.销售员:销售额*4%提成;
D.销售经理:底薪(5000)+所辖部门销售额总额*0.5%;
(3)输入数据要求每类人员不能少于4人,并按以下格式输出:
职工号姓名性别年龄岗位工资排名
及某部门经理所辖部门各售货员的业绩及自己的工资表:
(4)菜单要求:要有一个菜单,用于选择各项功能,其中
1)数据录入:输入各种数据;
2)数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序;
3)数据打印:打印上述表格;
4)数据备份:把相关数据写入文件;
5)退出:推出本系统;
二、系统功能介绍:
充分利用了类的继承与派生的知识,先定义了一个雇员类Employee,由雇员类公有派生出技术员类Tech,销售员类Seller,经理类Manager,由销售员类Seller,经理类Manager公有派生出销售经理类XManager。把基类都定义为虚基类。通过基类去写的派生类就可以调基类的公有成员。利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入,利用冒泡排序法把各销售
经理的资按升序排列。利用switch进行选择系统进行的工作。在主菜单中进行调用各函数,从而实现系统各功能的运行。
三、模块设计:
四、各个成员函数间关联:
四、结果显示图:
五、程序清单:
#include
#include
#include
#include
#include
using namespace std;
//常变量(供修改用):
const int n1=2,n2=2,n3=4,n4=2; /*定义公司各类职工人数(方便修改)(n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数)*/ 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(); //制作表头1函数,统计销售额
void charthead2(); //制作表头2函数,数据打印
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() //数据输入函数
{
cout<<"编号:";
cin>>num;
cout<<"其姓名:";
cin>>name;
cout<<"性别(m/w):";
cin>>sex;
cout<<"年龄:";
cin>>age;
}
void print() //打印数据函数
{
cout<<"├─────┼─────┼─────┼─────┼─────┤"< cout<<"│"< < } void find() //查询函数 { if(f_name==name) { charthead2(); print(); chartend(); cout< } } void save() //备份数据函数 { outfile<<"├─────┼─────┼─────┼─────┼─────┤"< outfile<<"│"< < } protected: int num; //职工号 string name; //职工姓名 char sex; //职工性别 int age; //职工年龄 double pay; //职工工资 }; class Technician:public Employee //技术员类(公有继承) { public: void input() { cout<<"技术员的"; Employee::input(); cout<<"工作时间:"; cin>>worktime; } 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(); 竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。 2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度 1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。 单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】 《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14) 题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 课程设计报告模板() ————————————————————————————————作者: ————————————————————————————————日期: ? 课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查: (1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差(); vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 - 、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾课程设计实验报告
什么是面向对象程序设计
单片机电子时钟课程设计实验报告
课程设计报告模板)
vf课程设计实验报告模板
《面向对象程序设计》答案