第1个回答 2008-07-09
这是我以前做过的课程设计,现贴出来给你参考下~
-------------------------------------------
(一)、课程设计题目: 高校工资管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(3)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、功能要求
问题的描述(功能要求):
现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师: 基本工资+课时费;
实验员: 基本工资+实验室补助;
行政人员: 基本工资+行政补贴;
教师兼职实验员: 基本工资+课时费+实验室补助;
行政人员兼职教师:基本工资+行政补贴+课时费;
(其中:
(1).课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;
注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
(2).基本工资:教师800元,实验员650元,行政人员750元。
(3).行政补贴:250元。
(4).实验室补助:150元。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
a) 写出需求分析(该程序要实现什么什么样的功能)
b) 分析系统中的各个实体之间的关系及其属性和行为;
c) 根据问题描述,设计系统的类层次;
d) 完成类层次中各个类的描述(包括属性和方法);
e) 完成类中各个成员函数的定义;
f) 用户界面的设计
g) 分析系统功能模块(系统流程图)
h) 代码编写
i) 功能调试;
j) 完成系统总结报告以及系统使用说明书
源程序代码如下:复制内容到剪贴板代码:
#include <fstream.h>
#include <string.h>
class Person //人员类(抽象类)
{
protected:
int No; //编号
char Name[20]; //姓名
int Duty; //人员类别标志(0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师)
double Salary; //基本工资
Person *next; //指针域
public:
Person() //基类构造
{
next=0; //指针域设置为空
}
virtual ~Person() //基类虚析构
{
}
virtual void Input()=0; //从键盘输入数据
virtual void Input(ifstream& ifs)=0; //从文件输入数据
virtual void Output()=0; //向屏幕输出数据
virtual void Output(ofstream& ofs)=0; //向文件输出数据
virtual double Incoming()=0; //计算收入
friend class College;
};
class Teacher:virtual public Person //教师类
{
protected:
int Hours; //教师课时
public:
//为对象设置数据分为两种途径,通过1)构造函数,2)一般成员函数
//分开可以使得程序中应用更加灵活
//本程序采用:缺省构造+Input()
Teacher() //构造函数,初始化部分数据
{
Duty=0;
Salary=800;
}
void Input() //键盘补充输入其它数据
{
cout<<"编号:"; cin>>No;
cout<<"姓名:"; cin>>Name;
cout<<"教师上学期课时:"; cin>>Hours;
}
void Input(ifstream& ifs)
{
ifs>>No>>Name>>Duty>>Hours;
}
void Output()
{
cout<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Incoming()<<endl;
}
void Output(ofstream& ofs)
{
ofs<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<endl;
}
double Incoming()
{
return Salary+(Hours-120)*20;
}
};
class Assistant:virtual public Person //实验员
{
protected:
int Allowance;
int Hours;
public:
Assistant()
{
Duty=1;
Salary=650;
Allowance=150;
}
void Input()
{
cout<<"编号:"; cin>>No;
cout<<"姓名:"; cin>>Name;
cout<<"实验员上学期实验课时:"; cin>>Hours;
}
void Input(ifstream& ifs)
{
ifs>>No>>Name>>Duty>>Hours;
}
void Output()
{
cout<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Incoming()<<endl;
}
void Output(ofstream& ofs)
{
ofs<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<endl;
}
double Incoming()
{
return Salary+Allowance+(Hours-70)*20;
}
};
class Manager:virtual public Person //行政人员
{
protected:
int Allowance;
public:
Manager()
{
Duty=2;
Salary=750;
Allowance=250;
}
void Input()
{
cout<<"编号:"; cin>>No;
cout<<"姓名:"; cin>>Name;
}
void Input(ifstream& ifs)
{
ifs>>No>>Name>>Duty;
}
void Output()
{
cout<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Incoming()<<endl;
}
void Output(ofstream& ofs)
{
ofs<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<endl;
}
double Incoming()
{
return Salary+Allowance;
}
};
class Teacher_Assistant:public Teacher,public Assistant //教师兼实验员
{
public:
Teacher_Assistant()
{
Duty=3;
Teacher::Salary=800;
}
void Input()
{
cout<<"编号:"; cin>>No;
cout<<"姓名:"; cin>>Name;
cout<<"教师上学期课时:"; cin>>Teacher::Hours;
cout<<"教师兼职实验员上学期实验课时:"; cin>>Assistant::Hours;
}
void Input(ifstream& ifs)
{
ifs>>No>>Name>>Duty>>Teacher::Hours>>Assistant::Hours;
}
void Output()
{
cout<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Teacher::Hours<<"\t"
<<Assistant::Hours<<"\t"<<Incoming()<<endl;
}
void Output(ofstream& ofs)
{
ofs<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Teacher::Hours<<"\t"
<<Assistant::Hours<<"\t"<<endl;
}
double Incoming()
{
return Salary+(Teacher::Hours-120)*20
+Allowance+(Assistant::Hours-70)*20;
}
};
class Manager_Teacher:public Manager,public Teacher //行政人员兼教师
{
public:
Manager_Teacher()
{
Duty=4;
Manager::Salary=750;
}
void Input()
{
cout<<"编号:"; cin>>No;
cout<<"姓名:"; cin>>Name;
cout<<"行政人员兼职教师上学期课时:"; cin>>Hours;
}
void Input(ifstream& ifs)
{
ifs>>No>>Name>>Duty>>Hours;
}
void Output()
{
cout<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<Incoming()<<endl;
}
void Output(ofstream& ofs)
{
ofs<<No<<"\t"<<Name<<"\t"<<Duty<<"\t"<<Hours<<"\t"<<endl;
}
double Incoming()
{
return Salary+Allowance+Hours*20;
}
};
class College
{
private:
Person *PL;
void Clear();
int College::Find(int ID,Person **p1,Person **p2);
public:
College(); //构造
~College(); //析构
void Add(); //增加职工
void Delete(); //删除职工
void Modify(); //修改职工
void Print(); //输出职工信息
void Save(); //职工信息存盘
void Load(); //职工信息装入
};
College::College() //构造函数(创建1个头结点的链表)
{
Person *p=new Teacher;
PL=p;
cout<<"自动装入数据...\n";
Load();
}
College::~College() //析构函数(仅保留1个头结点)
{
Person *p=PL;
while(p) //逐个删除结点,包括头结点
{
PL=p->next;
delete p;
p=PL;
}
PL=0;
}
void College::Add() //增加职工
{
cout<<"\n** 增加职工 **\n";
//查找尾结点
Person *p=PL;
while(p->next)p=p->next;
int ch;
cout<<"输入职工分类码[0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师]:"; cin>>ch;
//创建新结点,录入数据,连接到链表
Teacher *pt;
Assistant *pa;
Manager *pm;
Teacher_Assistant *pta;
Manager_Teacher *pmt;
switch(ch)
{
case 0: pt=new Teacher; pt->Input();
p->next=pt;
break;
case 1: pa=new Assistant; pa->Input();
p->next=pa;
break;
case 2: pm=new Manager; pm->Input();
p->next=pm;
break;
case 3: pta=new Teacher_Assistant; pta->Input();
p->next=pta;
break;
case 4: pmt=new Manager_Teacher; pmt->Input();
p->next=pmt;
break;
default: return;
}
}
void College::Clear() //清除所有的职工结点(仅保留头结点)
{
Person *p=PL->next;
while(p)
{
PL->next=p->next;
delete p;
p=PL->next;
}
}
//查找职工结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)
int College::Find(int ID,Person **p1,Person **p2)
{
*p1=PL->next;
*p2=PL;
while(*p1)
{
if((*p1)->No==ID)
break; //找到
else
{
*p2=*p1; //继续查找
*p1=(*p1)->next;
}
}
return *p1?1:0;
}
void College:elete() //删除职工
{
cout<<"\n** 删除职工 **\n";
int No;
Person *p1,*p2;
cout<<"编号:"; cin>>No;
if(!Find(No,&p1,&p2))
{
cout<<"指定的人员没有找到!\n";
}
else
{
p2->next=p1->next; //连接
delete p1;
cout<<"正确删除!\n";
}
}
void College::Modify() //修改职工
{
cout<<"\n** 修改职工 **\n";
int No;
Person *p1,*p2;
cout<<"编号:"; cin>>No;
if(!Find(No,&p1,&p2))
{
cout<<"指定的人员没有找到!\n";
}
else
{
p1->Output(); //输出原来的职工信息(做提示)
p1->Input(); //输入新的职工信息(更新)
cout<<"修改完成!\n";
}
}
void College:rint() //输出职工信息
{
cout<<"\n** 职工信息表 **\n";
cout<<"编号 姓名 岗位 其它 收入情况\n";
Person *p=PL->next;
if(!p)
{
cout<<"无职工记录!\n";
return;
}
while(p) //遍历链表,输出职工信息
{
p->Output();
p=p->next;
}
}
void College::Save() //职工信息存盘
{
ofstream f("erson.dat",ios:ut); //打开文件
//遍历输出至文件
Person *p=PL->next;
while(p)
{
p->Output(f);
p=p->next;
}
f.close(); //关闭文件
cout<<"职工信息已经保存在Person.dat.\n";
}
void Collegead() //职工信息装入
{
char buf[81]; //临时空间
int Duty; //人员类型
Person *p2; //新建结点的指针
long t; //读写位置
//清除现有结点(保留头结点)
Clear();
//打开文件
ifstream f("erson.dat",ios::in);
//建立结点,读数据
Person *p=PL; //尾结点指针
while(1)
{
//读取人员类型
t=f.tellg();
f>>buf>>buf>>Duty;
if(f)
{
//根据人员类型创建新结点
switch(Duty)
{
case 0: p2=new Teacher; break;
case 1: p2=new Assistant; break;
case 2: p2=new Manager; break;
case 3: p2=new Teacher_Assistant; break;
case 4: p2=new Manager_Teacher; break;
default: f.close(); return;
}
p->next=p2;
p=p->next;
f.seekg(t);
p->Input(f);
}
else
break;
}
//关闭文件
f.close();
}
void main()
{
char ch;
College c; //定义大学对象
//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数
do
{
cout<<"\n☆☆ 高校工资管理系统 ☆☆\n";
cout<<"1-增加职工\n";
cout<<"2-删除职工\n";
cout<<"3-修改职工\n";
cout<<"4-输出职工信息(工资)\n";
cout<<"5-数据存盘\n";
cout<<"6-数据装入\n";
cout<<"7-退出\t请选择(1-7):";
cin>>ch;
switch(ch)
{
case '1': c.Add(); break;
case '2': c.Delete();break;
case '3': c.Modify();break;
case '4': c.Print(); break;
case '5': c.Save(); break;
case '6': c.Load(); break;
}
}while(ch!='7');
}
第2个回答 2008-07-07
目前,大量的中小企业中,存在这样的现象:分散的、不连贯的客户信息使企业管理者或企业相关人员无法看到客户的全部资料及相关资料,信息的分散使得产生的结果也无法保持一致性和完整性,造成中小企业在销售管理上存如下问题:
无法分类统计客户信息(对客户分类极为混乱)?
无法准确全面掌握各业务进展状态?
对立项的销售业务没有有效的安排及推建业务进程和管理,一直处被动销售局面?
对销售人员工作过程掌握不够?
无法准确快速考核销售人员业绩?
业务人员对产品没有一定认识?
无法有效地同服务部人员沟通?
销售及市场流程不清析,流程变动较大?
对市场信息、竞争对手的资讯掌握不完善?
无结构统一的销售及市场情况报表?
基本销售及市场费用统计较不完备?
销售人员辞职时失单现象严重?
......
加之,现在客户的期望值越来越高,客户需要更好的服务(产品的质量及个性化服务)。企业的竞争已逐渐从产品的竞争转变为服务的竞争,因此中小企业要发展就必须进一步优化业务流程以提高企业竞争能力。Sales management system就是针对中小企业的销售、服务和营销体系进行规范化管理,以解决困饶中小企业的一系列问题,提高效率、降低成本。
企业销售管理系统(Sales management system)通过对客户关系、销售行动、销售过程等环节记录、管理与分析,使销售管理从经验走向科学、从个人主导走向企业主导,针对中小企业销售管理中存在的诸多问题,从中小企业的销售管理的主要需求出发,充分“以客户为中心”,为中小企业建立弹性化和灵活性的业务流程。
......
目录
目 录
第一章 引言
第二章 系统分析
第三章 系统设计
第四章 系统实现
参考资料
[1] Microsoft公司编著·Visual Basic 6.0中文程序员指南·北京希望电子出版社·1998.9
[2] Microsoft公司编著·Visual Basic控件参考手册·
北京希望电子出版社·1999.3
[3] Microsoft公司编著·Visual Basic 6.0组件工具指南·北京希望电子出版社·1999.3
[4] 张海藩 编著·软件工程·人民邮电出社·2003.11
[5] 刘萌等编著·Visual Basic企业办公系统开发实例导航·人民邮电出社·2004.1
[6] 高春艳等编著·Visual Basic数据库开发关键技术与实例应用·人民邮电出版社· 2004.5
[7] Steven Jordan 牛力等编著· Visual Basic 6.0编程宝典·电子工业出版社· 2005.1
简单介绍
[摘要]
随着社会经济的不断发展,经济信息化已成为世界经济发展的一大趋势,是社会生产力发展到一定阶段的必然产物。信息是国家制定政策、进行宏观调控,企业从事日常事务处理、生产控制、生产决策的重要战略资源,是国民经济各部门和整个社会生活领域中的“倍增剂”,是当代社会发展的最新生产力,它正从总体上引导着世界经济和社会发展的进程。可以这样说,谁能够充分利用信息,谁就能在社会竞争及经济发展中求得生存。信息系统的开发实际上是一项庞大的系统工程,即信息系统工程。本文论述了在可视化开发环境Visual Basic 6.0下分析、设计、开发的企业销售管理系统。其开发主要包括后台数据库的建立及前端应用程序的开发两个方面,对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,但要求处理的信息量并不大,所以我采用了Microsoft Access 2000, 而对于后者则要求应用程序功能完备,易使用等特点,鉴于本系统开发周期比较短,我使用了Visual Basic 6.0。该系统基本满足了在中小企业销售管理方面的需求,用户界面友好,功能强大,大大减少了人力资源,增加了信息分析的准确性。作为销售管理系统,可以对商品进行查询,浏览,入库出库,对提高工作效率有重要意义。
[关键词]:企业,销售管理系统,战略资源,信息管理。
第3个回答 2008-07-08
楼上贴代码的大哥,少拿你的课程设计来给别人,..看清楚人家的要求:
设计系统主界面,主界面上包括系统功能菜单; 界面友好,操作方便。环境是TC,你用TC能画出友好的界面吗?? 注意别用windows函数,除了画界面,还要操作,这些你会吗??
会的话能否教教小弟,先谢过了..