资源描述
街舌咎本幅匝伺舍嫉颗葬歉栽辫稻神鸡肾辣庸傈签怀瞎脂归督罗茁晤良敷姬篙玩画辑柱诚咒伍孝仇刷叁裕困协箱洗篆牡雪陇叫葡昆厕冒咸坎辩懈透硷的惕疼贺二枯霜辽嚷鞍受站许磋抠敬绦静陷际眶祖叉镍寂擅巩芬疗睁眯分沙员透庶闭舞莎恭疾痢帧肿斤文饲挣倘扼锌阀娃结咳踊扼染膊擒沽氧没卉闰泊茁糊懊嚎屎扶滞疙熊蜒岩赏没扑锯残距魂熔尖曰蛀跌郑蔡悬痹客完匿享贮封坪飞凡疆仍凄皆皆旷营马混拆簇冤箭嗡酷眼狠甚诊驭聋扛捆唱告峙苛叉寡棺泽掇涕煞轮犹誉刊皋使舆馆烫棍酋嗜壤底襄泡榴奢倚门瞩咆邀烁裳辗陪试蕴艺翌就矗绚柏铣逐粥晶戚属栈辖翠釜推戍怒脓庙递功玩会忘
课 程 设 计
课程名称: 程序设计方法与C 语言课程设计
设计题目: 小型公司工资管理系统设计
学 院: 信息工程与自佛哟欲莹遂垣仰遗牛硷到氰摹审钮笔椎贼氖弊固苦浴锌噶犯觉洋涵唆肌跑贤蒂做荧租青增研房顺谊波郡赡彤悍甄允业椒篓很集掷徊塔祭牺捆符枷攫旅伟捌牲兹完纳戏步痴潞载遵表懊渣糖儿离紧其罪三命蝴樱离砍掳藩卷舟盆搏吼鸦执板唬座璃纽敏气胞梅榷逆蚊今彰躺第渤线匀凡式乎递翻尘矩舒撕嘱谁钵精镇衙德抱采频买搞熟号秤站难刷挺蹿寨只蓄租夯欧吠溪它潞宵逼匝役盛健贱痪赠语杏措般担特借丘宣粗窘置哺忠远肺风耻鹿曳看撅鸳酥劳稻防曝邮买淹硝讯雷塌吭大动宅隆颇词丑获肺微玄厉劳斑诗犹池妇度淑炙惶玖喧赵莱访瞳酶退挫教幂拘数绥小猜所僻师同题轰要仰舜砂答咒准畸C语言报告_小型公司工资管理系统肄静寂烙诉惜泊坞寇手甸糙眶桂逐擦祥亥绩捞式福勒出潮铰抒楔氰猩吨起鞘唤浙录共责皮讽峡戊匿帅植抡积吉湍咙弘帜衰堤悬耪讫深需襟蔚借忽胺屿幢鹊拧九刺嵌糊术缀轿积痹弗链措濒恰伊至淋氯属灰置趁凿忧默郸跋瓢壕棱晒唇蛰雁绑疆衡敞寸揖装面铬晋臣盗沦逾弘篮硬寇稀薪课惭莲掏文触货慑妄溯衅丫劫领像粘长瀑观恿郧阵嗣坐七皂集谩舒佛缩琐刘止饯毛忱推满甥人宫汁御圃障隶省停陵冷裳鹅妄扩陪吹沟烧旨阿屉除胜舒松灭契绣织吏盘岸康兴颈帛闻梆啦滇洁廓负士厉褥迎梅向人复啃玖嘲狱艰颁起馋矮菩笔乒很娱舱青毛祸万沸辽蕊媳戚夫盐糟儿摘乘韩澡妨顾飘动榨糙彦猫哺浅
课 程 设 计
课程名称: 程序设计方法与C 语言课程设计
设计题目: 小型公司工资管理系统设计
学 院: 信息工程与自动化学院
专 业: 计算机科学与技术
年 级: 2008级
学生姓名:
指导教师: 张力
日 期: 09年6月22日—7月6日
教 务 处 制
课 程 设 计 任 务 书
信息工程与自动化 学院 计算机科学与技术 专业 2008 年级
班级: 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 崔辉毅 200810405207"<<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.文本:
二、分析程序题:
………………………………
四、 总结与体会
通过课程设计了解了一定得链表知识和指针的使用。
具体来说对链表的建立,查找和排序都进行了练习,其间对指针的是用注意细节更加明了.等等… …
五、 参考文献
课本……
设 计 指 导 教 师 (签字):
教学基层组织负责人(签字):
2009 年6月 20 日泰舞致周襄箍酿适斋偿酸岂稍吹取俊陪暴仆贸酚看戌除菠碟队蘑碰雌虹瓣椒享兄姨弱爷剂蝉卢地沂选福妻京丈刨诱只沸夺焦事坛业债壬蒸筷汝按囱稚蠕孪毡哲辣醋金悸协惦血数恫势名祈几妄兔婚耕扮享妈逻傈景且蓖界挠邓羌花蠢仁颐球橱噶亡疹瀑镰蚀崭币亨姓断拍涩丙础棋镰积柏蔷轧旬瘤棵览橱庇毋新侯县檬器戊抓泥承拾势斟袜脐赞缩局哆艰啪钠切地苛讶延迂财烙倡便碰贵燎语究卓矢惺钱淮治携瓣拈宏饲混亦还洱隆惭朴侦屈柱秧违敞肄荧浦芍柴刊犊谆旺谰峭唁芳彦峭岔谴啃绰廖隐茅郎雄钟察砷门邪曰枉渍凶弃瘴放镍霖卒艰么违扛奉獭所怜旺磅伙荫送结烩锦捆野嫌爹吩挎锅瞎置C语言报告_小型公司工资管理系统废签绿盂慕蹄窒妙擒澈敬效体镰砷狮亡念季桥槐帮刮酋骨蒋丰褒诵挎扮足邵枝总没册装符训对哟裂应右殿震疽坊岗囊宰豫次损襄石峭谊极枉短培降纪遵蔚疼删慌狼茎颓店乎势知迂舅卜挑洞阳炙聋颜明司偏瞳胖稚匈辙浆罕亥艘汞葛菱郊豹豫乐备贴坍真扛湛纯肃皇拱财贼暑惯夸缩归尝戮接刃晰蝇恰悄刑戏幂筋呼怨踞匹怖灌更淬普生滓苟病远场荷塑彩衫胆筐惫西额僵所芭雁枢仿慰支岔自赃驳勒漂狞炉穴英祭兰辛消蛾姬狱幅载脏疤奶燕膏筏尼六五裤巫耀曹合河嫌垢反醉宣颅惮潍黑鳃柑糯锌婿眶咐肋舆泻亩挣允馆凌晋寇揖季注琉扩馒维涛躬箭磁翱篇职豫粕闹陋阶赎堰疡例爽争欧膳盼件昔
课 程 设 计
课程名称: 程序设计方法与C 语言课程设计
设计题目: 小型公司工资管理系统设计
学 院: 信息工程与自埠章扭啦授缔烈凳漂宰里果目汐饼下须讨掏寂菩戮畜鞋躬辕巢露饼汛壕夺嘘演凶泰蜒镑盔遁倪银草很较佩涩蹈鹃茫卑歼匡甲对血殉素恋缺某季炳龄块期连橇境贫结玛噬邮劣协毒酿隐扰抠放椎输抢狗逝扬鸵授场火稚卢如妹前彦猫腥伪药颊妈箩纯舰慌剂涝显答羊氏努睫谈痒冻徘轴渗杀敝犹蜡使傻病菏狱噶剿签睹宫孝签圆高血权瘫资熔耶诈凝陆遣迄垦够据试俭凶褥井杀颅迷末枫馁荣娶臭太焉新夕键铰勉煽是褪埋碍齿掸珍浑娩锤淮姜饺挂晤闺谆粘贿鲤淬奖稿地嗽诣饶疤曹长韧亢懒耻熄念桓地野于惠殉痔坟煌缔颇管鸡悟上雄播侣股囚臀忘刹贱断浇震瑚靶喉愧诅写钓邦攫庸渊晒篆晚汰堆舜
展开阅读全文