第一篇:工资管理系统--软件工程课程设计2
目 录
目录...............................................................................................................第一章 绪
论.................................................................................................1.1 开发背景说明....................................................................................1.2课程设计目的.....................................................................................1.3课程题目及内容.................................................................................1.4课程设计要求.....................................................................................1.5预期目标.............................................................................................1.6 系统环境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 经济上可行性....................................................................................2.3 技术可行性........................................................................................2.4目标方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任务陈述.............................................................................................3.3市场需求分析.....................................................................................3.4系统功能需求分析.............................................................................3.5系统性能需求分析.............................................................................3.6 系统业务数据流...................................................错误!未定义书签。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9绘制系统模型图...............................................................................第四章 系统概要设计...................................................................................4.1模块分析和概要设计.......................................................................4.2 系统数据库逻辑结构设计..............................................................4.3概念模型转换为关系数据模型.......................................................4.4 数据库设计......................................................................................第五章 详细设计...........................................................................................5.1登录管理...........................................................................................-***39424243443
入帐目时的错误,可以根据职工的考勤、职务、部门、各种税费等等,自动求出工资。为了便于企业领导掌握本企业的工资信息在系统中应加入各种查询功能,包括个人信息、职工工资、本企业内某一个月或某一部门的工资情况查询。系统应能输出各类统计报表。
本系统需要完成的功能主要有:系统数据初始化;职工基本信息数据的输入、修改、删除;企业工资的基本设定;职工工资的浏览;职工个人工资表的查询;职工工资的计算;工资报表打印。
数据流:
职工基本状况:包括职工编号、职工姓名、性别、年龄、职位等。工资级别和工资金额:包括工资等级、工资额。
企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。工资信息:包括职工编号、职工姓名、职工基本工资、职工岗位工资、职工工龄工资、公司津贴、职工实发工资等。工龄和工资金额:包括工龄及对应工资额。
1.4课程设计要求
坚持“规格严格,功夫到家”的优良传统,加强基本功训练,做到理论与实际相结合,继承与创新相结合,充分发挥学生的主观能动性与教师因材施教、严格要求相结合,抓智力因素教育与非智力因素教育相结合,教书育人。所设计的工资管理系统应包含输入输出、修改、删除、查询等基本功能。根据题目的基本需求,画出流程图、用例图、类图等,编写程序,并写出详细的设计说明书。课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。
1.5预期目标
计划设计:对于企、事业单位的工资发放来说,不需要太大型的数据库系统,只需要一个操作方便,功能实用,能满足财务部门对工资及时的发放。本工资管理系统预期目标就是实现如下的一些功能:查询浏览记录功能,增加记录功能、修改记录功能、删除记录功能、刷新记录功能、最后实现统计计算功能。
1.6 系统环境
1.6.1硬件:个人PC 1.6.2软件:
Windows XP、Microsoft Visual C++6.0、Rational Rose。
第二章 可行性分析
2.1 可行性研究前提
要求:满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存。目标:实现无纸化办公,节省成本,提高工作效率。
条件、假定、限制:当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。
2.2 经济上可行性
开发成本要低廉。
效益:大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。
效益/投资比:暂时无法估算。投资回收期内:
(1)企业有能力承担系统开发费用。
(2)新系统将为企业带来经济效益。管理系统是一个信息化、智能化和先进。理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。其最主要的表现就是减少了企业管理费用和人力开支。
2.3 技术可行性
(1)软件需求:操作系统WINDOWS 2000 Advance Server以上。
硬件需求:赛扬1.7G CPU、512M内存 80G硬盘的计算机。(2)本系统采用VC++实现,依靠其强大的面向对象系统,与数据库管理系统相结合。
(3)要求掌握计算机技术,熟悉系统的功能和使用方法使系统能够顺利运行。
2.4目标方案可行性
计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。
管理水平和管理效率的提高能直接产生经济效益。
格,如完成任务表、考勤表、考核表、职工当月的扣款情况(包括水电费、病事假扣款等)等计算职工变动工资、个人所得税和应发放工资等,编制工资单。按类进行汇总,编制工资汇总表。将实发工资转入代发银行,由银行代发工资,并进行账务处理。工资结算过程主要设计如下会计账户:现金、银行存款、应付工资、其他应付款、其他应收款等。
3.3市场需求分析
工资管理系统是一个企业单位不可或缺的部分,他能为用户提供充足的信息和快捷的查询手段。一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。
能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全。为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。
3.4系统功能需求分析
工资管理系统涉及到员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。
典型的工资管理系统主要有以下基本功能: a)系统数据初始化
b)员工基本信息的录入、修改、删除等功能
c)工资标准的设定功能,集体包括职务工资、职称工资、其他工资标准和福利的设定。
d)工资信息的浏览
e)员工工资信息表的创建及查询 f)工资调整管理 g)工资计算 h)工资报表打印
3.5系统性能需求分析
3.5.1 需求分析总体目标
需求分析的目的在于与开发人员与用户之间达成系统开发的共识,使开发人员所考虑的系统在功能(系统能做什么)、简单操作,良好界面,个人信息保密性,系统安全与稳定,良好帐户管理,友好信息返回模式(如报表及打印功能)。
时,防止数据被不法分析任意的修改和破坏,对所有的敏感数据均进行基于SSL协议 的加密操作,只有对信息解密的人员才能最终读取数据信息。这样,能 最大程度的防止数据在传输过程的安全保密性。
3.6 系统业务数据流
3.6.1 数据流分析
数据流程图是一种能全面描述信息系统逻辑模型的主要工具,也是系统分析人员与用户进行交流的有效手段。本系统的数据流程图把握住对系统总体目标与总体功能的要求,基于上述的业务流程图,从科学性,合理性和可行性入手,采用自顶向下,逐层分解的方法建立本管理信息系统的逻辑模型,综合地反映出信息在本系统中的流动,处理和存储,具有抽象性和概括性.通过进行用户调查收集用户需求后,就要对用户需求进行分析,并表达用户的需求。采用结构化分析方法,主要采用数据流图对用户需求进行分析,用数字字典和加工说明对数据流图进行补充和说明。数据流图用于描述系统中数据流动的过程,反映的是加工处理的对象。
3.6.2 流程图,模块图如下:
流程图
模块图
112
3.9.2活动图:
分析用例中的逻辑流程,描述用例的事件流,进而画出各用例对应的活动图 用户登录活动图:
管理员工信息活动图:
3.9.3 类图:
类图是面向对象的软件开发中的一个核心概念。Rose中的类图用于描述软件系统中涉及到的类的相关信息,以及类与类之间的相互关系。
〔1〕类的识别
类的识别通常由分析员在分析问题域的基础上来完成。常用的方法有: a.名词识别法。 b.系统识别法。 c.从用例中识别类。 d.利用分解与抽象技术。〔2〕系统类图
3.9.4状态图:
状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。
3.9.5 时序图:
时序图用来描述对象之间动态的交互关系,着重体现对象间消息传送消息的时间顺序。下面分别给出各个用例的时序图:
用户登录时序图:
职工时序图:
71819
设计一般分为三个步骤:
〔1〕概念模型转换为关系数据模型。〔2〕关系模型的优化。〔3〕设计用户子模式书号。
4.3概念模型转换为关系数据模型
一般转换原则如下:
〔1〕一个实体转换为一个表(Table),则实体的属性转换为表的列(Column),实体的码转换为表的主键(Primary Key)。
〔2〕实体间的联系根据联系的类型,转换如下: ① 1:n 的联系:
1:n 的联系是比较普遍的联系,其转换比较直观。转换规律是在n 端的实体对应的表中增加属性,该属性是1 端实体对应表的主码。如:岗位和员工的关系是1:n 的联系。
② m:n 的联系:
通过引进一个新表来表达两个实体间多对多的联系,新表的主码由联系两端实体的主码组合而成,同时增加相关的联系属性。如:部门与员工的联系是n:m 联系。
4.4 数据库设计
数据库的物理结构设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法),它完全取决于给定的计算机系统。物理结构可分两步进行。第一步是分析所得到的各种数据模型,依据在实际执行时可能产生的数据容量以及各种数据模型之间的相互依赖程度等,确定数据库的物理结构;第二步则要根据某种方法对所设计的物理结构进行评价,评价重点是时间和空间的效率。数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
根据人员规模,我们只建立起一个数据库,在此数据库基础上建立起如下表:
·职工表
·用户表
·工资表
下面说明各表的字段名称和数据类型:
工资表:
职工表:
用户表:
第五章 详细设计
详细设计阶段主要是将系统中的每个模块完成的功能进行具体描述。
5.1登录管理
根据系统总体结构可以得出登录管理模块实现用户登录、密码修改和退出系统三个功能。其中,退出系统实现流程很容易,只需要一行代码即可;用户登录的实现流程是用户在登录窗口输入用户名称和密码,如果没有用户名和密码可以进行注册后再登录,选择了用户角色后,单击【登录】按钮进行提交,系统开始验证用户提交的登录信息是否正确。如果正确,则打开工资管理系统,并根据用户角色赋于相应的操作权限;否则给出错误信息。
5.1.1界面设计 登录界面如下:
5.1.2 代码
部分核心代码设计: void CZHUCE::OnButton1(){
UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“请将资料填写完整!”);m_password2.Empty();
m_password.Empty();
UpdateData(FALSE);
return;} OnInitADOConn();if(m_password2==m_password){
CString str;
str.Format(“insert into 用户表(用户名,密码)('%s','%s')”,m_username,m_password);
_variant_t var;
int fieldrow;
try{//捕捉表的主键存在重复值的异常
m_pConnection->Execute((_bstr_t)str,&var,adCmdText);
fieldrow=(int)V_I2(&var);
}
catch(...)
{
AfxMessageBox(“用户名已存在,注册失败”);
m_username.Empty();
m_password.Empty();
m_password2.Empty();
UpdateData(FALSE);
return;}
AfxMessageBox(“注册成功,请返回登录!”);
m_pConnection->Close();
Clogin clg;
clg.DoModal();} else{AfxMessageBox(“两次密码输入不一样,注册失败!”);
m_username.Empty();
m_password.Empty();m_password2.Empty();
}} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//创建连接对象实例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//设置连接字符串 Cstring
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,“",”“,adModeUnknown);
}
try{if(m_pConnection==NULL){OnInitADOConn();} m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDyna
} catch(_com_error e){ e.Description();} return m_pRecordset;
mic,adLockOptimistic,adCmdText);
5.1.3修改密码模块:
成功登录主界面:
5.2用户管理
用户管理模块用于实现用户的添加、删除、更新功能。5.2.1新增用户模块:
627UpdateData(TRUE);if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()){AfxMessageBox(”not null“);return;} OnInitADOConn();CString str;str.Format(”update 职工表 set 性别='%s',年龄=%d,电话='%s',住址='%s',位='%s',备
注
='%s'
where
职
工
编
号='%s'“,m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao);m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();UpdateData(FALSE);
{// TODO: Add your control notification handler code here
} void CGXZHG::OnButton4(){
UpdateData(TRUE);if(m_tiaojian.IsEmpty()){AfxMessageBox(”请选择删除的职工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 职工表 where 职工编号CMAKESURE cmake;if(cmake.DoModal()!=IDOK){ }
m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();AfxMessageBox(“删除成功!”);UpdateData(FALSE);return;='%s'“,m_tiaojian);UpdateData(TRUE);m_type.GetWindowText(m_Type);if(m_Type.IsEmpty()){AfxMessageBox(”请选择查询的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;
部分核心代码如下: void CTXGZ::OnButton2()
{// TODO: Add your control notification handler code here
息!”);
if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()){AfxMessageBox(“编号不允许空值,请重新填写!”);ClearALL();return;} OnInitADOConn();float CString cstr1;cstr1.Format(“%.2f”,f1);m_yfsh.SetWindowText(cstr1);float f2=m_Fangzu+m_Chuxu+m_Huifei;CString cstr2;cstr2.Format(“%.2f”,f2);m_yksh.SetWindowText(cstr2);float f4;f4=calculator(f1-f2);float f3=f1-f2-f4;CString cstr3;cstr3.Format(“%.2f”,f3);m_shfsh.SetWindowText(cstr3);CString cstr4;cstr4.Format(“%.2f”,f4);m_grsdsh.SetWindowText(cstr4);CString str;str.Format(“insert
into
工
资
表
values UpdateData(TRUE);m_yuefen.SetCurSel(0);// AfxMessageBox(”该编号的职工不存在,请先到职工管理添加职工信f1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt;('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)“,m_
} void CTXGZ::ClearALL(){
} void CTXGZ::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code here
m_pConnection->Close();m_gzlist.DeleteAllItems();AddToGrid();m_yuefen.SetCurSel(0);ClearALL();m_Jibengz=NULL;m_Jintie=NULL;
m_Shfsh.Empty();m_Yfsh.Empty();m_Yksh.Empty();m_Yuefen.Empty();m_Chaxun.Empty();m_Jiaotongbt=NULL;m_Huifei=NULL;m_Grsdsh.Empty();m_Fangzu=NULL;m_Fangtie=NULL;m_Chuxu=NULL;m_Bianhao=”“;m_Gangtie=NULL;UpdateData(FALSE);int position=m_gzlist.GetSelectionMark();m_Bianhao=m_gzlist.GetItemText(position,0);m_Chaxun=m_gzlist.GetItemText(position,0);m_Yuefen=m_gzlist.GetItemText(position,1);m_Jibengz=atof(m_gzlist.GetItemText(position,2));m_Jintie=atof(m_gzlist.GetItemText(position,3));m_Gangtie=atof(m_gzlist.GetItemText(position,4));
3return;} void CTXGZ::OnButton5(){
} float CTXGZ::calculator(float a){float b=a-2000;
} if(b<0){b=0;} if(0=500&&b<2000){return b=b*10/100-25;} if(b>=2000&&b<5000){return b=b*15/100-125;} if(b>=5000&&b<20000){return b=b*20/100-375;} if(b>=20000&&b<40000){return b=b*25/100-1375;} if(b>=40000&&b<60000){return b=b*30/100-3375;} if(b>=60000&&b<80000){return b=b*35/100-6375;} if(b>=80000&&b<100000){return b=b*40/100-10375;} if(b>=100000){ return b=b*45/100-15375;} UpdateData(TRUE);if(m_Chaxun.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工资表 where 职工编号='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();ClearALL();m_Chaxun=m_Chaxun;m_yuefen.SetCurSel(0);UpdateData(FALSE);5.5查询管理
该模块实现功能是职工查询工资的详细信息,查询个人详细信息的功能。
5.5.1职工信息查询:
5.5.2工资信息查询:
部分核心代码如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);
if(m_Chaxun.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工资表 where 职工编号='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();
6UpdateData(FALSE);{//创建连接对象实例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(”ADODB.Connection“);//设置连接字符串 CString
strConnect=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;“;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,”“,”“,adModeUnknown);
} OnInitADOConn();//设置查询字符串 CString bstrSQL;bstrSQL.Format(”select * from 工资表 where 职工编号='%s' order by 职//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));//打开记录集
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工编号 desc “,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,”“);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(”职工编号
m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect(“月份”));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect(“基本工资”));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect(“津贴”));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect(“岗贴”));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect(“补贴”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房贴”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通补贴”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“应发数”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“储蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“会费”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“个人所得税”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“应扣数”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“实发数”));
} void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)
} m_pRecordset->Close();m_pConnection->Close();//将记录集指针移动到下一条记录
} //AfxMessageBox(“123”);//断开数据库连接 ExitConnect();m_pRecordset->MoveNext();
第六章 系统测试
6.1 测试方法
(1)测试人员:
测试队伍由两位成员组成。软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者。第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作。
(2)机器测试:
通过在计算机上直接运行被测程序,来发现程序中的错误。机器测试包括黑盒测试盒白盒测试。黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性。根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能。白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符。
6.2测试内容
1)软件的正常运行、关闭及退出时保存记录的提示。
2)用户登录界面友好,可操作性及安全性能较好,能对不同管理级别者进行限制,以保证数据库的安全。
3)数据库的可维护性好,数据的录入、删除及更改均能顺利完成,并能实现动态更新。
4)数据查询便捷,能对各种不同的查询条件搜索,以找到最合适的答案。5)数据溢出、越界均能进行非法提示,以警告用户正确使用。对用户的正常操作方式也提出警告。
6)数据类型填写错误时,系统能够报错。
7)软件对操作系统的兼容性良好,可移植性完好。
6.3测试结果
本系统有提示消息!
录入相同编号的数据:
该系统有报错功能!
查询职工工资信息:
查询职工信息成功!
1424344-
牟永敏
清华大学出版社
第二篇:数据库课程设计工资管理系统.
数据库课程设计报告 工资管理系统
组员:廖翔, 刘小芳, 强江波, 张晶晶,冯兆强,夏冲 组长 :刘小芳 需求分析员 :张晶晶
程序员 :廖翔 , 刘小芳 , 强将波 测试员 :冯兆强 界面设计员 :夏冲 目录
一 绪论 ··········································3 二 课程设计说明····································3 三 需求分析·········································4 四 物理结结构设计···································5 五 数据字典·········································5 六 数据库设计·······································10 七 功能实现截图·····································11 八,小结············································21 附录 1.(组员及学号
廖翔(,刘小芳(41009040127,冯兆强(, 张晶晶(41009040130,夏冲(,强将波(2.开发环境说明
使用 C#进行客户端应用程序的开发,数据库管理系统采用 SQL SERVER
一、绪论
随着计算机技术的飞速发展和经济体制改革的不断深入, 传统企业管理方法、手段以及 工作效率已不能适应新的发展需要, 无法很好地完成员工工资管理工作。提高公司企业管理 水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于 C#与 SQL server 数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等 功能, 功能比较的齐全, 并对工资进行了统计如津贴管理、报表统计等。基本上能满足管理 员和公司的要求。
此次数据库课程设计的主要设计如下: 原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。二.课程设计说明
1.设计题目:工资管理系统 2.设计任务与要求: 2.1实验任务
1.掌握数据库设计和实现的基本过程 2.掌握数据库模式设计、分析和实现的方法 3.了解数据库应用系统软件开发的一般过程。2.2 实验基本要求(1学习相关的预备知识
(2按照数据库设计与实现过程完成数据库的设计,应用程序的开发,上机调试、运 行
(3写出课程设计报 3.目的
本说明书目的在于明确说明系统需求,界定系统实现功能的范围, 指导系统设计以 及编码。本文档作为人力资源管理系统的需求说明文档,用于与用户确定最终的目标, 并成为协议文本的一部分,同时也是本系统设计人员的基础文档。
4.背景 工资管理系统
工资管理部门希望建立一个数据库来管理员工的工资。要计算员工的工资, 就需要考虑 不在休假日期以内的假期、工作期间的病假时间、奖金和扣除的部分。必须指明给每个员工 发薪水的方式, 随着时间的推移, 方式可能会有些改变。大多数的员工是通过银行卡来结算 工资的, 但是也有一部分人使用现金或支票。如果是通过银行卡, 就需要知道账号和卡的类 型。付款方式只可能是一种方式。有几种原因可以扣除工资:例如,个人所得税、国家税、医疗保险、退休保险或者预付款。
5.主要包括三大功能模块: 1.登录界面选择 [员工登录 ]即可进入 [员工登陆界面 ], 选择 [管理员登陆 ]即可进入 [管理员 登录界面 ]。
2.管理员功能模块。3.员工功能模块.6.操作说明
6.1 无论是管理员还是员工,操作都以员工编号来进行。
6.2 管理员可以对员工基本信息增、删、查、改, 员工只能对本人基本信息和工资信息查询。三.需求分析
1.功能需求分析: 该通用工资管理系统具备下列功能:登录界面选择 [员工登录 ]即可进入 [员工登陆界面 ], 选 择 [管理员登陆 ]即可进入 [管理员登录界面 ].管理员通过输入用户名和密码进下该系统后, 可以进行一些基本查询(员工个人信息查 询 , 员工工资信息查询 , 修改(修改员工基本信息 , 修改工资信息 , 删除(员工个人资料删除 , 员工工资信息删除 , 录入(员工资料录入 , 员工工资资料录入;;通过输入密码,可以进行 查询员工的数据(工资,奖金津贴,加班情况。
员工通过输入用户名和密码即可进入系统 , 可以进行查询(查询个人基本信息和工资信 息.2.数据流需求分析:
数据库 数据库需求分析——数据流图 四.物理结构设计 1.系统模块划分
五.数据字典 2.1表字典
2.2表字段字典
六.数据库设计 1.建表 : EmpInfoTable(Id[主键 ],Name,Position,Status;SalaryInfoTable(Id主键 ],Name,Prize,Pasepay,RetirementInsurance,Income,Stute,Medical, Dayleave,Deduced,Paytpe,CardNumber,Cardtype,GrossSalary,NetSalary,Date;(1 员工基本信息表 :(2员工工资表 :
七.功能实现截图 1.登录界面
2.管理员部分 :(1管理员登陆界面
(2管理员功能选择界面
(3.录入员工基本信息界面(4录入员工工资信息
(5.修改功能选择界面
A.修改员工基本信息
B.修改工资信息
(6.管理员查询界面 A.查询功能选择界面
B.查询员工基本信息
C.查询工资信息
(7.管理员查询界面 A.功能选择界面
B.管理员修改员工个人信息
C.管理员修改员工工资界面界面
(8.管理员删除界面 A.功能选择界面
B.删除员工个人信息及工资信息界面
C.删除员工工资信息界面
3.员工功能界面(1.员工登录界面
(2.员工功能选择界面
(3.员工查询本人基本信息(4.员工查询本人工资信息 4.测试分析 4.1 更改员工资料不可以更改身份。4.2 修改员工工资信息一旦失败 就会把原有信息删除。4.3 管理员固定,且只有一个。八.小结 该工资管理系统总体说来功能比较齐全,管理
员和员工的一些基本的功能 都已经具备; 数据库的设计方面,建有员工表、工资表。数据库中存在一些问题,如数据冗余,不够完善。但在做课程设计的过程中也遇到很多问题,一开始时其中最大的问题是数 据库的连接部分,该部分直接影响到数据库与应用程序接口实现,而且必须注意 数据库数据库的名称与连接数据库的取名以致.后来经过大家的合作努力解决了 这个问题.在编写程序时,确实也遇到了很多困难,后来经过调试后终于把自已想 到实现的功能一步步实现了,通过这次课程设计使我收获了好多,熟悉了 C#的 运用,还复习了数据库相关语句的编写。此次课程设计让我感受颇多:做一个数据库其实是一件很有趣的事情。想到
自己可以创建一个小型的数据库系统,有点学习后的满足感。数据库的建立并非 难事,难点在于数据库的连接和编程语言的选择。C#的功能很强大,这也是我以 后需要学习的课程,于是我毅然选择了它。再就是建立数据库系统的步骤,我的 经验就是要先总体规划,再局部整理。先做好总的界面,再通过该界面的布置一 步一步实现其功能!同时我体会到: 熟练的编程能力,对知识运用的强烈渴望及其创新和团队的合作 精神设做好一个大型数据库的基础。因此通过此次课程设计我明显感觉到自身的 不足,并希望以后能更加用心地运用所学知识和学习新的知识。
第三篇:vb课程设计 职工工资管理系统代码
Form1: Dim errorCount As Integer Private Sub Command1_Click()If Text1.Text = “system” And Text2.Text = “1234” Then
Load Form2
Form2.Show
Me.Hide
MsgBox “登陆成功,欢迎您进入职工工资管理系统”, vbInformation, “登陆成功”
Else
errorCount = errorCount + 1
If errorCount < 3 Then
MsgBox “用户名或密码错误(第” & errorCount & “次)!”, vbOKOnly + vbExclamation, “登陆失败”
Text1.SetFocus
End If
If errorCount >= 3 Then
Text1.Enabled = False
Text2.Enabled = False
Command1.Enabled = False
MsgBox “三次输入用户名或密码错误,程序将自动退出!”, vbOKOnly + vbExclamation, “登陆失败”
End
End If End If
End Sub
Private Sub Command2_Click()Unload Me End Sub
Private Sub Form_Load()errorCount = 0 End Sub
Private Sub Form_Unload(Cancel As Integer)If MsgBox(“是否要退出程序?”, vbYesNo, “退出提示”)= vbNo Then
Cancel = 1 End If End Sub
For i = 1 To jlNum
ygList(i).shifagongzi =(CSng(ygList(i).jibengz)+ ygList(i).gerensui
CSng(ygList(i).jingtie)
ygList(y).shifagongzi = ygList(zuishao).shifagongzi ygList(zuishao).shifagongzi = linShi.shifagongzi End If Next loadData End Sub
Private Sub Command5_Click()Dim linShi As YuanGong
linShi.ygnamg = InputBox(“请输入要添加的姓名”, “添加员工-姓名录入”)If Len(Trim(linShi.ygnamg))> 0 Then
linShi.jibengz = InputBox(“请输入添加员工的基本工资”, “添加员工-基本工资录入”)
If Len(Trim(linShi.jibengz))> 0 Then
linShi.jingtie = InputBox(“请输入添加员工的津贴”, “添加员工-津贴录入”)
If Len(Trim(linShi.jingtie))> 0 Then
linShi.gerensui = InputBox(“请输入添加员工的个人所得税”, “添加员工-个税录入”)
If Len(Trim(linShi.gerensui))> 0 Then
linShi.suidianfei = InputBox(“请输入添加员工的水电费”, “添加员工-水电费录入”)
If Len(Trim(linShi.suidianfei))> 0 Then
Open filedir For Append As #1
Write #1, linShi.ygnamg;linShi.jibengz;linShi.jingtie;linShi.gerensui;linShi.suidianfei
Close #1
MsgBox “添加员工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim Preserve ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Next
Close #1
MsgBox “删除员工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Input #1, ygList(jlNum).gerensui
Input #1, ygList(jlNum).suidianfei
Loop
Close #1
loadData
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True End If
Text1.Text = “姓名” & vbTab & “工资” & vbTab & “津贴” & vbTab & “所得税” & vbTab & “水电费” & vbCrLf
For i = 1 To jlNum
Text1.Text = Text1.Text & ygList(i).ygnamg & vbTab & ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab & ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf
Next Else
MsgBox “删除员工失败!”, vbOKOnly + vbExclamation, “失败” End If End Sub
Private Sub Command7_Click()
第四篇:SQL vb课程设计工资管理系统概要(模版)
课程设计报告
课程设计题目: 工资管理系统
学生姓名 : 专 业 :
班 级 : 指导教师 :
2011年 12 月 17 日
姓名: 学号: 实验时间:12月14日 实验地点:
一、课程设计题目:
工资管理系统
二、课程设计目的:
本次课程设计的主要目的是综合运用所学的数据库与VB知识解决一个比较实际的简单问题,侧重对数据库连接、查询等相关内容的综合应用,使同学们能进一步熟悉掌握数据库的基本使用方法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同学们解决问题的能力,并为以后的语言学习打下良好的基础。
三、课程设计要求: 1.独立完成;
2.此次课程设计在规定的时间必须在实验室完成,不得以任何理由在其他地点进行;
3.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其他的题目,当然在完成自己的题目之后根据个人兴趣可以继续选做其他的题目;
4.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;
5.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)
四、试验要求 员工基本信息的管理功能。单位员工变动、奖惩情况的管理功能。3 工资的计算、修改功能。4 查询统计功能。5 报表打印功能。具有数据备份和数据恢复功能。
五、试验过程
1.数据库的设计
本系统的数据库是SQL数据库,在SQL环境下创建数据库工资.mdb文件。该数据库包括员工信息表、工资标准表、其他工资标准表、用户表用于纪录员工的基本信息数据库表结构如下所示: 字段名 类型 varchar
大小 8
允许空 Not null 员工编号
姓名 varchar 10 Not null 性别 varchar 职务 Varchar 出生年月 datetime 员工头像 image
员工信息表
字段名 类型
员工编号 varchar
月份 int 津贴 money 奖金 Money 扣保险 Money 扣考勤 Money 扣其他 Money 其他工资标准表 Not null 8 Not null Not null
大小
允许空 8 NULL NULL NULL NULL NULL
字段名 类型
大小
职务 varchar
基本工资 money 8
工资标准表
字段名 类型
大小
用户名 char
口令 char 10
用户表 2.主要内容 登录窗体
登录窗体 设计代码:
允许空
Not null
Not null
允许空
Not null
Not null
Option Explicit
Private Function Selectsql(SQL As String As ADODB.Recordset '返回ADODB.Recordset对象 Dim ConnStr As String
Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Set Conn = New ADODB.Connection 'On Error GoTo MyErr:
ConnStr = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工资;Data Source=(local” '这是连接SQL数据库的语句 Conn.Open ConnStr
rs.CursorLocation = adUseClient
rs.Open Trim$(SQL, Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs 'Exit Function 'MyErr: 'Set rs = Nothing
'Set Conn = Nothing '释放相关的系统资源
'MsgBox Err.Description, vbInformation, “系统提示” '显示出错信息 End Function
Private Sub Command3_Click(Unload Me End Sub
Private Sub Form_Load(Dim SQL As String Dim rs As ADODB.Recordset Dim X As Long
On Error GoTo Err_box SQL = “ select * from 用户表” Set rs = Selectsql(SQL If rs.RecordCount > 0 Then rs.MoveFirst
For X = 1 To rs.RecordCount
Combo1.AddItem rs.Fields(“用户名”.Value rs.MoveNext Next X
Combo1.ListIndex = 0 End If rs.Close Exit Sub Err_box: End Sub
Private Sub Command1_Click(Dim SQL As String Dim rs As ADODB.Recordset If Text1.Text = “" Then MsgBox ”请输入口令!“, 16 Text1.SetFocus Exit Sub End If
If Combo1.Text = ”“ Then MsgBox ”请选择登录用户!“, 16 Combo1.SetFocus Exit Sub
End If
SQL = ”SELECT * FROM 用户表 WHERE 用户名='“ & Combo1.Text & ”' AND 口令='“ & Text1.Text & ”' “ Set rs = Selectsql(SQL If rs.RecordCount > 0 Then form2.Show '想要打开的主窗体 MsgBox ”登录成功!“, 64, ”提示“ Unload Me Else
MsgBox ”口令不对,请重新输入!“, 16, ”提示“ Text1.SetFocus End If End Sub
主控界面
主控界面
设计过程:
所有功能都在菜单中打开来实现,在最下面添加了工具栏,来显示时间,操作员,状态等信息。
设计代码:
Private Sub rechaxun_Click(form3.Show End Sub
Private Sub reluru_Click(form3.Show End Sub
Private Sub cygl2_Click(form5.Show End Sub
Private Sub cyxx_Click(form3.Show End Sub
Private Sub Form_Load(Label2.Caption = Time End Sub
Private Sub gzcx_Click(Form4.Show End Sub
Private Sub Image1_Click(End Sub
Private Sub jcqk_Click(form6.Show End Sub
Private Sub rexiugai_Click(form6.Show End Sub
Private Sub rescbb_Click(Form4.Show
MsgBox ”请先查询,再点击生成报表按钮“, , ”提示窗口“ End Sub
Private Sub sjbf_Click(Form7.Show End Sub
Private Sub sjhf_Click(Form7.Show End Sub
Private Sub tjcy_Click(form5.Show End Sub
成员管理 成员浏览
成员浏览 设计过程:
用控件可以实现档案的浏览,在此窗体用户可以浏览员工信息,此窗体与数据轮中的员工信息表进行连接。
设计代码:
Private Sub Command4_Click(Unload Me End Sub 成员管理
成员管理
设计过程:
用于档案的登记,此窗体和档案浏览窗体中的数据表进行了连接,可以直接进行添加,删除,修改等。
设计代码:
Private Sub Command1_Click(Adodc1.Recordset.AddNew End Sub Private Sub Command2_Click(Adodc1.Recordset.Update End Sub Private Sub Command3_Click(Adodc1.Recordset.Delete End Sub
Private Sub Command4_Click(Dim strb(As Byte CommonDialog1.ShowOpen Open CommonDialog1.FileName For Binary As #1 f1 = LOF(1 ReDim strb(f1 Get #1, , strb Adodc1.Recordset.Fields(”员工头像“.AppendChunk strb Close #1 Image1.Picture = LoadPicture(CommonDialog1.FileName End Sub Private Sub Form_Load(End Sub 奖惩信息:
员工奖惩情况
设计过程:
用户可以查找各月份的扣除以及奖励状况。
设计代码:
Private Sub Command1_Click(Unload Me End Sub
Private Sub Command2_Click(Adodc1.Recordset.Update End Sub
Private Sub Text1_Change(Adodc1.RecordSource = ” select * from 其他工资标准 where 月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub
工资查询:
工资查询
设计过程:
通过在姓名栏和月份栏输入信息,可以快速查找所需查询人的工资情况;并将查询结果生成execl表,方便用户打印及携带。
设计代码:
Private Sub Command1_Click(Dim i As Integer, r As Integer, c As Integer Dim newxls As Excel.Application Dim newbook As Excel.Workbook Dim newsheet As Excel.Worksheet Set newxls = CreateObject(”Excel.Application“ '创建excel应用程序,打开excel Set newbook = newxls.Workbooks.Add '创建工作簿 Set newsheet = newbook.Worksheets(1 '创建工作表 If Adodc1.Recordset.RecordCount > 0 Then For i = 0 To DataGrid1.Columns.Count1 DataGrid1.Col = c newsheet.Cells(r + 1, c + 1 = DataGrid1.Columns(c Next c Adodc1.Recordset.MoveNext Loop Dim myval As Long Dim mystr As String myval = MsgBox(”是否保存该Excel表?“, vbYesNo, ”提示窗口“
If myval = vbYes Then mystr = InputBox(”请输入文件名称“, ”输入窗口“ If Len(mystr = 0 Then MsgBox ”系统不允许文件名称为空!“, , ”提示窗口“ Exit Sub End If newsheet.SaveAs ”d:“ & mystr & ”.xls“ MsgBox ”Excel文件保存成功,位置:d:“ & mystr & ”.xls“, , ”提示窗口“ newxls.Quit End If End If End Sub Private Sub Command2_Click(Unload Me End Sub Private Sub Form_Load(End Sub Private Sub Text1_Change(Adodc1.RecordSource = ”select a.员工编号,姓名,月份,基本工资,津贴+奖金+扣保险+扣考勤+扣其他 as 奖惩总额,基本工资+津贴+奖金+扣保险+扣考勤+扣其他 as 实发工资 from 员工信息表 a,工资标准 b,其他工资标准 c where a.职务=b.职务 and a.员工编号=c.员工编号 and 姓名 like '“ & Text2 & ”%'and c.月份='“ & Text1 & ”' “ Adodc1.Refresh DataGrid1.Refresh End Sub Private Sub Text2_Change(Adodc1.RecordSource = ”select a.员工编号,姓名,月份,基本工资,津贴+奖金+扣保险+扣考勤+扣其他 as 奖惩总额,基本工资+津贴+奖金+扣保险+扣考勤+扣其他 as 实发工资 from 员工信息表 a,工资标准 b,其他工资标准 c where a.职务=b.职务 and a.员工编号=c.员工编号 and 姓名 like '“ & Text2 & ”%' and c.月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub 数据备份及恢复:
数据备份及恢复 设计过程:
用户可以将数据库进行完全备份和差异备份,并且在操作不当时可以进行恢复。
设计代码:
Public Cn As ADODB.Connection Private Sub Command1_Click(Cn.Execute ”backup database 工资 to disk='d:工资完全备份.bak' with name='工资 backup all',description='Full Backup Of pubs'“ MsgBox ”数据完全备份已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command2_Click(Cn.Execute ”backup database 工资 to disk='d:工资差异备份.bak' with differential ,noinit,name='工资 backup dif',description='Differential Backup Of 工资'“
MsgBox ”数据差异备份已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command3_Click(Cn.Execute ”restore database 工资 from disk='d:工资完全备份.bak' with FILE=1“ MsgBox ”数据恢复已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command4_Click(Cn.Execute ”restore database 工资 from disk='d:工资差异备份.bak' with FILE=1“ MsgBox ”数据恢复已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Form_Load(Set Cn = New ADODB.Connection strcon = ”Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工资;Data Source=(local;“ + _ ”use procedure for prepare=1;auto translate=true;“ + _ ”use encryption for data=false;tag with column collation when possible=false“ Cn.ConnectionString = strcon On Error Resume Next Cn.Open If Cn.Errors.Count > 0 Then For i = 0 To Cn.Errors.Count-1 If Cn.Errors(i.Number =-2147467259 Then MsgBox ”网络不通或服务器未开,请确认后再试“, vbOKOnly + vbInformation, ”提醒" Unload Me
Exit Sub Exit For End If Next i End If End Sub
3、设计体会
在数据库课程开课之前我就下决心要学好这一门课,因为这是我的专业课,我一开始就谨慎小心,争取每一个细节都做得很好。现在终于是完成了,我的设计体会如下:
小心谨慎是关键,因为做程序关键就是写代码,每一个字母都要很小心输入,若是不小心错了一个,就会带来庞大的“查错工程”,不过从我检查错误当中也学会了一些检查的方法,比如设置中断点,可以观查每一个变量的当前值,很有效的。
小心是一个方面,另一个是怎么样让程序最人性化,并且保持较简洁的程序代码,通俗说就是事半功倍。有很多时间我是花在了调试程序方面,一部分是在找错误,还有就是怎么用最简练的代码实现当前的作用。其中绝大多数都是自己写的代码,只有在自己不会的时候才借鉴了指导老师发下来的那个示例作品的代码。
我的程序大多数是我自己写的,但是自己的知识和水平都十分有限,所以会经常去查看书或者在网上寻找资料,通过看书、看资料,我改进了自己的不足,也学会的很多新的作程序方法,都是十分有用的。
在一个体会就是做程序要有对全局和面的分析能力,老师告诉我好多设计中不曾想到的东西,比如数据表建立的不完美,用户权限应该分开等。做什么事都是一样的,具体体现在了这次的数据库课程设计上来,让我学到了很多东西。就像要完成一个很大的工作,要先从小的部分做起,不能急于求成,细心谨慎才是关键,坚持不懈,最后再把这些小的窗体在连接起来,就构成了一个整体。
只有实践真正动手做了才会真正了解,在不断的学习和实践中体会到更多的经验。
第五篇:软件工程 课程设计 销售管理系统
销售管理系统一.项目简介
随着计算机技术的迅猛发展,存在于网络的企业销售管理系统将逐步代替传统的管理模式进入企业。为了更高效得完成销售方面的工作,也可以有更多的时间处理更多的别的事务,企业也将摆脱原有的管理形势完全进入信息化管理。销售管理系统在企业的管理过程中起着巨大的作用
二.功能需求
一个销售管理系统,设计者的目标是满足公司运营和日常管理的需要,具有对产品,客户管理的功能。客户登录销售管理系统进行售后服务查询,销售员可以对销售的产品进行登记,并将销售情况反馈给数据库。为管理的方便性和信息传递的快速性提供了一个很好的平台。系统开发的总体任务是实现售后服务及销售登记自动化。总之,销售管理系统要实现登陆验证、商品销售管理、商品销售报表管理、客户信息管理四大部分。1.客户对功能的需求
1>查看自己的信息,了解自己近期的购买情况。2>查看产品的信息,熟悉产品情况。2>查看售后服务信息。
2.销售人员对功能的需求
1>查看自己的信息,了解自己近期的销售情况。2>查看产品的信息,熟悉产品情况。3>登记销售产品。
4>添加新产品,并填写产品相关信息。
3.售后服务人员对功能的需求
1>查看售后服务信息。2>添加售后服务信息。
三.分析模型时序图
销售管理系统顶层图
1.客户管理
第三层DFD图 客户管理子系统
2.销售管理
第三层DFD图 销售管理子系统
3.售后服务管理
第三层DFD图 售后服务管理子系统
4.客户登录动态时序图为
四.模块活动图,登录流程图
1.注册、登陆模块
1>模块功能描述
该模块主要实现对用户能否进入系统的确认以及对进入系统的用户权限的设定;因为本系统涉及到三类使用者,不可能每一类用户都具有相同的操作权限,如前所说,必然会早成系统的混乱和崩溃,严重影响其安全性和有效性。所以采取在通常的注册,登录模式下加上用户类型的选择,非常简洁地就完成了对用户类型的区别及权限的划分。2>在模块的详细设计后,便能得出实现该部分的具体流程,如图
用户注册模块程序流程图
登录模块程序流程图
活动图为:
2.客户管理模块
1>模块功能描述
显示客户的基本信息。库户可以查看自己的等级和交易次数。
2>在模块的详细设计后,便能得出实现该部分的具体流程,如图3-8。
客户管理模块流程图
活动图为:
3.销售管理模块 >模块功能描述
在这个模块可以登记销售记录。并且在提交记录时,更新数据库:
(1)更新客户信息。如果是“老客户”系统会按照客户等级给出对应的优惠价。(2)更新产品信息。主要是更新该产品数量。
2>在模块的详细设计后,便能得出实现该部分的具体流程,如图
销售管理模块流程图
活动图为
五.数据库设计
1.客户信息表
字段khidkhnamegyshjchzhgzhugteladrkhtelfaxbzh数据类型IntVarCharVarCharVarCharnCharVarCharncharVarChartext是否是主键是否否否否否否否否是否为空否否否是是是否是是说明客户编号客户名称客户简称采购主管采购主管联系方式客户地址客户电话传真备注
2.商品进货表
字段数据类型intVarCharCharCharCharnumericnumericint是否是主键是否否否否否否否是否为空说明进货编号商品名称商品名称首拼大单位小单位进货成本jhbhshpmchshpshpddwxdwjhchbxshjgjhshulgyshjhrqbzh否否否否是否否否销售价格进货数量供应商进货日期备注VarCharsmalldatetimeVarChar否否否是否是 3.商品销售表
字段xshbhshpmchshpshpxshjgxshshlxshryxshrqkhbzh数据类型IntVarCharVarCharNumericIntVarCharSmalldatetimeVarChartext是否是主键是否否否否否否否否是否为空否否否是是是否是是说明销售编号商品名称商品名称首拼销售价格销售数量销售人员销售日期客户简称备注
六.运行界面与代码
1.登陆窗口
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Private Sub CmdOk_Click()If UserName.Text <> “" And PassWord.Text <> ”“ Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from usermanage where username='“ & UserName.Text & ”'“, conn, 1, 1 If Not rs.EOF Then If rs(”password“)= PassWord.Text Then Main.Show Unload Me Else MsgBox ”非法登录,密码错误!“, vbOKOnly, ”警告“ End If Else MsgBox ”非法登录,找不到该用户!“, vbOKOnly, ”警告“ End If Else MsgBox ”用户名或密码不能为空!“, vbOKOnly, ”提示“ End If End Sub
Private Sub PassWord_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
Private Sub UserName_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Call CmdOk_Click End If End Sub
`2.主界面
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 GoodsIn.Show Me.Enabled = False Case 1 Saler.Show Me.Enabled = False Case 2 SaleData.Show Me.Enabled = False Case 3 SaleTotal.Show Me.Enabled = False Case 4 UserM.Show Me.Enabled = False End Select End Sub
`进货管理
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一条
Adodc1.Recordset.MoveFirst
Case 1 '上一条
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一条
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾条
Adodc1.Recordset.MoveLast
Case 4 '添加
Adodc1.Recordset.AddNew For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 5 '修改 For i = 0 To 7 GoodText(i).Enabled = True Next Cmd(6).Enabled = True
Case 6 '保存 Adodc1.Recordset.Update For i = 0 To 7 GoodText(i).Enabled = False Next MsgBox ”更新记录成功!“, vbOKOnly, ”提示“ Cmd(6).Enabled = False
Case 6 '删除
If MsgBox(”确定删除当前记录,数据将不可恢复?“, vbOKCancel, ”提示“)= vbOK Then Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from save“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i).Name Next Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
`销售管理
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public id As String Public action As String Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 '第一条
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst End If
Case 1 '上一条
If Not Adodc1.Recordset.BOF Then Adodc1.Recordset.MovePrevious End If
Case 2 '下一条
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNext End If
Case 3 '最尾条
If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If
Case 4 '添加 action = ”add“ ManageSale.Show Me.Enabled = False
Case 5 '修改 action = ”modify“ id = Adodc1.Recordset.Fields(”id“)ManageSale.Show Me.Enabled = False
Case 7 '删除
If MsgBox(”确定删除当前记录,数据将不可恢复?“, vbOKCancel, ”提示“)= vbOK Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select goodcount from save where goodnum='“ & GoodText(0).Text & ”'“, conn, 1, 3 rs(”goodcount“)= rs(”goodcount“)+ GoodText(5).Text rs.Update rs.Close Adodc1.Recordset.Delete End If End Select End Sub
Private Sub Form_Load()Adodc1.ConnectionString = ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Adodc1.RecordSource = ”select * from sale order by id“ For i = 0 To 6 Set GoodText(i).DataSource = Adodc1 GoodText(i).DataField = Adodc1.Recordset.Fields(i + 1).Name Next Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 End Sub
Private Sub Form_Unload(Cancel As Integer)Main.Enabled = True End Sub
添加修改销售记录
Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Public salecount As Long
Private Sub Combo1_Change()End Sub
Private Sub Cmd_Click(Index As Integer)Select Case Index Case 0 Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ If GoodText(0)= ”“ Or GoodText(3)= ”“ Or GoodText(4)= ”“ Then MsgBox ”数据没有输入完整,请重新输入!“, vbOKOnly, ”提示“ Exit Sub End If
If SaleData.action = ”add“ Then rs.Open ”select * from sale“, conn, 1, 3 rs.AddNew Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 3 End If rs(”Goodnum“)= GNum.Text rs(”goodname“)= GoodText(1).Text rs(”danwei“)= GoodText(2).Text rs(”outdate“)= GoodText(3).Text rs(”danjia“)= GoodText(4).Text rs(”outcount“)= GoodText(0).Text rs(”salename“)= SaleName.Text rs.Update rs.Close
rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 3 '在库存表中将库存数量减去已售出的数量 If SaleData.action = ”add“ Then rs(”goodcount“)= rs(”goodcount“)(GoodText(0).Text-salecount)End If rs.Update rs.Close MsgBox ”数据更新成功!“, vbOKOnly, ”提示“ SaleData.Adodc1.Refresh Unload Me Case 1 Unload Me
End Select End Sub
Private Sub Form_Load()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ Dim saleman As String
If SaleData.action = ”add“ Then rs.Open ”select goodnum from save order by goodnum“, conn, 1, 1 Do While Not rs.EOF GNum.AddItem rs(0)rs.MoveNext Loop GNum.Text = GNum.List(0)Else rs.Open ”select * from sale where id=“ & SaleData.id, conn, 1, 1 GNum.AddItem rs(”goodnum“)GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)GoodText(3).Text = rs(”outdate“)GoodText(4).Text = rs(”danjia“)GoodText(0).Text = rs(”outcount“)saleman = rs(”salename“)GNum.Text = GNum.List(0)GNum.Enabled = False rs.Close rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 SaleNum.Max = GoodText(0).Text + rs(”goodcount“)salecount = GoodText(0).Text End If rs.Close rs.Open ”select salename from saler order by id“, conn, 1, 1 Do While Not rs.EOF SaleName.AddItem rs(0)rs.MoveNext Loop If SaleData.action = ”add“ Then SaleName.Text = SaleName.List(0)Else SaleName.Text = saleman Cmd(0).Caption = ”保存修改“ End If rs.Close End Sub
Private Sub Form_Unload(Cancel As Integer)SaleData.Enabled = True End Sub
Private Sub GNum_Click()Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.Open ”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“ & App.Path & ”人事.mdb;Persist Security Info=False“ rs.Open ”select * from save where goodnum='“ & GNum.Text & ”'“, conn, 1, 1 If Not rs.EOF Then GoodText(1).Text = rs(”goodname“)GoodText(2).Text = rs(”danwei“)SaleNum.Max = rs(”goodcount")End If End Sub