毕业设计(论文)-Delphi程序电脑公司管理系统设计.doc_第1页
毕业设计(论文)-Delphi程序电脑公司管理系统设计.doc_第2页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆大学计算机学院计算机及应用毕业设计重庆xx电脑公司管理系统设计人员:刘巍:delphi7.0设计曾黎:uml设计李铃:sql数据库表设计 目录一、 前言一、 课题名称二、 开发背景三、 使用的主技术及技术现状二、 需求分析三、 电脑公司信息管理系统dfd图四、 uml建模过程一、 业务用例模型二、 业务用例图五、 数据库设计六、 源程序七、 总结八、 参考文献 一、 前言:一、课题名称:电脑公司信息管理系统二、开发背景: 随着个人计算机的普及,电脑行业的迅速发展,使得电脑销售行业的竟争越来越激烈。怎样才能在激烈的竟争中提高公司运行效率,保持竟争优势?伴随着计算机技术在各行各业日益广泛和深入的应用,会计电算化的概念也早已经不仅仅限于甩帐,即使用一套财务软件代替原来的手工记帐,在对于系统进行了适当的置后,一旦登入凭证资料,执行审核和记帐的功能后,将自动产生需要的各种总明细帐。计算机产业硬件和软件的更新和升级及管理工作在经济领域地位的日益提高,是两个不断前进着的车轮,在各自发展的进程中,又彼此促进和推动着,将会计电算化推向一个新的高度。回顾五年之内财务软件在国内运用情况,我们可以得出这样的结论:95年是实行手工记帐向计算机记帐的转变的一年,主要解决的问题是甩帐;96年中大多数企业使用网络版windows操作平台下的财务软件取代单用户版dos支持的财务软件,使一套软件可以同时被多个用户使用,并提高了系统运行的速度和稳定性;97年后,人们强调的是财务软件的管理功能,除了帐务系统之外,企业的生产、经营的业务活动也必需纳入计算机系统的全局管理,建立包括财务、生产、采购、销售、仓储等在内的子系统,各个系统之间共享数据,实现无缝连接,对于企业整体生产经营运作实现整体管理的要求被提上议事日程;98年国内南北两大财务软件公司,北京用友和深圳金蝶分别推出了自己的决策支持型管理软件erp 和 k3 ,标志着国内企业会计电算化水平更进一步的提高。因此必须使用先进的管理方式对公司进行管理,而先进的管理方式在很大程度上依赖于信息管理系统的使用。本系统包括电脑配件的进销存管理、客户关系管理、产品售后服务管理、公司人事管理四大部分。本系统实施后可使公司节省更多的人力、物力、财力,使公司经营运作物流更清晰、经营状况更详细准确,使公司的经营管理体系更加科学化、规范化、合理化。三、使用的主要技术及技术现状:本系统采用sql2000做为后台数据库系统,使用delphi7.0设计前台应用程序,使用uml作为分析画图软件。sql2000存在以下明显优点:sql是在1974年由boyce和chamberlin提出,并在ibm公司研制关系数据库管理系统原型system r 上实现的。它的前身是1972年提出的square(specifying queries asrelational expression)语言,1974年修改为sequel(structured english query language),简称sql。经各公司的不断修改、扩充和完善,sql已得到解决业界的认可。1986年10月,美国国家标准局(american national standard institute,ansi)的数据库委员x3h2批准了sql作为关系数据库语言美国标准。同年,公布了sql标准文本(简称sql-86)。1987年,国际标准化组织(international organization for standardization,iso)也通过了这一标准。目前,各个数据库厂商都有各自的sql软件或与sql的接口软件,并开发了各种图形界面的输入输出软件,报表生成器,软件开发工具等,大大方便了应用程序的开发,并且使得开发出的应用程序的界面更丰富,更方便用户的使用。 l sql的组成:数据定义(data definition),数据操纵(data manipulation),数据控制(data control),嵌入式sql(embeded sql)l sql的特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷、易学易用。l 存取速度:在服务器级的数据库中,效率还算相当不错。即使是单一表格数据记录数在10万条时,仍有相当不划的表现,但在单机使用时,数据不多时,速度可能会比小型数据库慢。l 容易使用:简易的用户接口,不需要背命令也能轻松操作,非常适合初中级人员使用。l 支持sql语言:现在的数据库系统都使用这种语言,可以合程序开发上节省更多的时间。l 性能:microsoft sql server7.0后的版本可以在windows98或window nt等系统上运行,效率很高,也可以和多种数据库格式沟通,而且自动备份等功能也相当完善。l 网络联机:可利用odbc作为联机工具,也可利用internet作为联机方式,使用上更具灵活性。l 网络安全:每个数据库和表都可以设置权限。在使用上相当好的防护措施。delphi是borland公司推出的一个激动人心的windows应用程序开发工具。它以易用、功能强大和稳定可靠的特性以及拥有object pascal语言语法严谨、执行效率高的特有优点而深受广大开发人员的表睐,是windows平台下最好的开发工具之一。尤其在数据库开发、分布计算和web应用程序开发等方面,delphi更是体现出了它相对于其他开发工具在开发周期和执行效率上的明显优势。delphi7可以轻松的实现跨平台,delphi7的模型驱动结构和uml可视化设计的新特性使开发企业应用程序变得更加快捷方便,delphi7的rad可视化服务器端web应用程序开发技术使构造动态web应用程序变得轻而易举。总之,delphi7相对于早期版本有很大的改进,具体表现在:l 增加了intraweb组件,从而向程序员提供了更加高效的web应用程序开发方式;l 增加了rave报表组件,在报表方面相对原有的quickreport系统组件有很相当大的提高;l websnap技术更加完善;l 增强的datasnap技术,不但支持状态无关的远程数据模块,而且提供了新的internetexpress组件,使得开发基于web的多层数据库应用大为简便;l 增强的web servic技术;l 加强了对com/com+/.net的支持;l 新增了一些有时代特色的vcl组件,现在delphi支持xp风格的界面开发;l ide、编译器、调试工具上都有了很大的改进和加强。uml的简介:uml的产生:二、需求分析:l 公司人事管理 本部分的功能包括对公司人员的基本数据进行管理,在人员发生变化(转正、调动、职务变动等)的情况下,能够对其数据进行修改,能对人员工资、奖金进行管理。公司领导有权对其人事、薪资信息进行分级查询。l 进销存管理本部分功能包括对货品的进货、销售、库存进行管理。能够实现原始数据的录入、处理、存储和输出,完成订货管理、销售管理、仓库管理和统计分析的功能。l 客户关系管理本部分功能包括对客户所购产品信息进行管理、统计,分析;对客户回访信息进行管理。l 产品售后服务管理对用户报修情况、产品退换货情况、产品修复情况及产品报损情况进行管理。实现原始数据的录入、修改、存储和统计功能。三、电脑公司信息管理系统dfd图电脑公司信息管理系统顶层图是和五个实体(顾客、报销顾客、维修人员、经理、商家)关联。顾客向该系统提交一个购货单,系统回返回一个购货发票;报销客户提供报销信息给系统由系统处理;维修人员,从系统中取得客户维修信息单进行处理,处理后返回维修物件单给系统;经理,随时可以查询系统所有信息;商家把到货单提交给系统。电脑公司信息管理系统0层图: 当商家把货送到后,将送货单写入到货处理模块,到货处理模块向到货数据表|库存数据表写入相关数据以便查询。当顾客将购货单写入销售系统模块,销售系统模块向库存数据表、销售数据表、客户信息表里写入数据。当顾客将报修信息写入维修处理模块后,维修处理模块向客户信息表、报修信息表写入数据,并打印客户维修信息单。维修人员接维修信息单后,将维修物件单通过维修处理模块写入维修物件表里。经理可以通过查询处理模块对到货数据表、库存数据表、销售数据表,客户信息表、报修信息表进行查询。电脑公司管理系统销售子系统流程图:将顾客填写的购货单输入客户类别判断模块,写入客户信息表中,一:单位客户,选择支负的方式,a:挂账,通过挂账处理模块将挂账购货单写入单位挂账表中,用单位客户购货单来更新库存各销售数据表。b:现金支付方式,直接用单位客户购货单更新库存销售数据表。二:个体客户:a:一般客户,用一般客户购货单更新库存销售数据表。b:购机客户,将购机单通过刚强机处理模块将客户信息写入客户信息表中,并同时写计算机配置信息到用户计算机配置登记表中,同时用购机客户购货单来更新库存销售数据表。以上各部分都通过更新库存销售数据模块获得一个购货单,用这个单子来打印用户购货收据并交给顾客。四、uml建模过程:一:业务用例模型:二:业务用例图: 主要有销售管理、查询处理、到货处理、维修修理四个用例。查询处理模块: 当经理发送一个查询请求时,能过查询处理模块返回查询后的信息销售管理: 销售人员通过处理销售模块和顾客交易。到货处理: 当商家把货物送到时将送货单写入到货处理模块。维修处理: 维修处理模块把客户维修信息单送到维修人员,维修人员接到后到维修处理模块得到维修物件单。业务角色:顾客,派生出商家和保修客户员工,派生出维修人员、销售员各经理。五、数据库设计一、部门信息表:create table dbo.department (id int not null ,department varchar (50) collate chinese_prc_ci_as not null ) on primarygo二、员工信息表create table dbo.employee (id int not null ,name varchar (50) collate chinese_prc_ci_as not null ,sex char (10) collate chinese_prc_ci_as null ,age char (10) collate chinese_prc_ci_as null ,birthday datetime null ,address varchar (50) collate chinese_prc_ci_as null ,phone1 varchar (50) collate chinese_prc_ci_as null ,phone2 varchar (50) collate chinese_prc_ci_as null ,department varchar (50) collate chinese_prc_ci_as null ,education varchar (50) collate chinese_prc_ci_as null ,pydate datetime null ,xfznum char (18) collate chinese_prc_ci_as not null ,remark varchar (255) collate chinese_prc_ci_as null ) on primarygo三、厂家信息表create table pany (id int not null ,厂家名称 varchar (50) collate chinese_prc_ci_as not null ,联系人 char (10) collate chinese_prc_ci_as null ,联系电话1 char (10) collate chinese_prc_ci_as null ,联系电话2 char (10) collate chinese_prc_ci_as null ,传真电话 char (10) collate chinese_prc_ci_as null ,法人代表 char (10) collate chinese_prc_ci_as null ,公司地址 varchar (50) collate chinese_prc_ci_as null ,邮编 char (10) collate chinese_prc_ci_as null ,代理产品 varchar (50) collate chinese_prc_ci_as null ,银行开户行名称 char (10) collate chinese_prc_ci_as null ,银行开户行帐号 varchar (50) collate chinese_prc_ci_as null ) on primarygo四、销售信息表create table dbo.saledetail (id uniqueidentifier not null ,销售单号 int not null ,商品编号 char (10) collate chinese_prc_ci_as null ,商品名称 varchar (50) collate chinese_prc_ci_as null ,商品数量 int null ,单位 char (10) collate chinese_prc_ci_as null ,商品价格 money null ,合计金额 money null ) on primarygo五、产品信息表create table duct (id int not null ,产品名称 varchar (50) collate chinese_prc_ci_as not null ,产品编号 char (10) collate chinese_prc_ci_as not null ,型号 char (10) collate chinese_prc_ci_as null ,价格 money null ,单位 char (10) collate chinese_prc_ci_as null ,供货商家 varchar (50) collate chinese_prc_ci_as null ) on primarygo六、销售数量表create table dbo.salemaster (id uniqueidentifier not null ,销售单号 int not null ,销售日期 datetime null ,总件数 int null ,总金额 money null ,经手人 varchar (50) collate chinese_prc_ci_as null ) on primarygo七、员工编号性别create table dbo.sex (id int not null ,sex char (10) collate chinese_prc_ci_as null ) on primarygo六、源程序:系统主界面:使用actionmanager控件对整个系统的菜单和工具栏按钮进行管理,以下为actionmanager控件的部分源代码:procedure tfrm_main.ygxxexecute(sender: tobject);begin try frm_ygxx:=tfrm_ygxx.create(self); frm_ygxx.showmodal; finally frm_ygxx.free; end;end;procedure tfrm_main.formcreate(sender: tobject); /生成数据模块begin frm_dmm:=tfrm_dmm.create(self);end;procedure tfrmmain.formclosequery(sender: tobject; var canclose::boolean);/关闭数据模块begin frm_dmm.destroy;end;procedure tfrm_main.bmcsexecute(sender: tobject);begin try frm_bmcs:=tfrm_bmcs.create(self); frm_bmcs.showmodal; finally frm_bmcs.free; end;end;procedure tfrm_main.gsxxexecute(sender: tobject);begin try frm_gsxx:=tfrm_gsxx.create(self); frm_gsxx.showmodal; finally frm_gsxx.free; end;end;procedure tfrm_main.spxxexecute(sender: tobject);begin try frm_spxx := tfrm_spxx.create(self); frm_spxx.showmodal; finally frm_spxx.free; end;end;procedure tfrm_main.sxkdexecute(sender: tobject);begin try frm_xskd:=tfrm_xskd.create(self); frm_xskd.showmodal; finally frm_xskd.free; end;end;员工信息维护窗体:在些窗体中能对员工信息进行增,删,改、查询操作。此窗体源代码如下:procedure tfrm_ygxx.btn_findclick(sender: tobject); /查询按钮代码var strname:string; sucess:bool;begin if trim(edit_name.text) then begin strname:=trim(edit_name.text); sucess:=adt_empy.locate(name,strname,locaseinsensitive,lopartialkey); if not sucess then begin showmessage(没有查找到你需要查询的员工资料!); edit_name.setfocus; end; end else begin showmessage(请输入查询的员工姓名); edit_name.setfocus; end; end;procedure tfrm_ygxx.btn_appdclick(sender: tobject); /增加按钮代码var maxnum:integer;begin dbe_name.enabled:=true; dblucbb_sex.enabled:=true; dtpick_birthday.enabled:=true; dtpick_pydate.enabled:=true; dblcbb_dept.enabled:=true; dbe_age.enabled:=true; dbe_education.enabled:=true; dbe_sfzhm.enabled:=true; dbe_phone1.enabled:=true; dbe_phone2.enabled:=true; dbe_address.enabled:=true; dbe_remark.enabled:=true; dbe_birthday.visible:=false; dbe_pydate.visible:=false; dtpick_birthday.visible:=true; dtpick_pydate.visible:=true; dbe_id.enabled:=false; btn_appd.enabled:=false; btn_del.enabled:=false; btn_modi.enabled:=false; btn_save.enabled:=true; btn_canl.enabled:=true; btn_close.enabled:=true; dbe_name.setfocus; maxnum:=1; if adt_empy.recordcount 0 then begin adt_empy.last; maxnum:=adt_empy.fieldbyname(id).asinteger + maxnum; adt_empy.append; adt_empy.fieldbyname(id).asinteger:=maxnum; end else begin adt_empy.append; adt_empy.fieldbyname(id).asinteger:=maxnum; end; dtpick_birthday.date:=now(); dtpick_pydate.date:=now();end;procedure tfrm_ygxx.btn_delclick(sender: tobject); 删除按钮代码begin dbe_birthday.visible:=true; dbe_pydate.visible:=true; dtpick_birthday.visible:=false; dtpick_pydate.visible:=false; dbe_id.enabled:=false; btn_appd.enabled:=true; btn_del.enabled:=true; btn_modi.enabled:=true; btn_save.enabled:=false; btn_canl.enabled:=false; btn_close.enabled:=true; if idyes = application.messagebox(请的要删除数据吗?,员工信息管理,mb_yesno) then begin if adt_empy.recordcount 0 then begin adt_empy.delete; adt_empy.refresh; end else showmessage(没有数据,不能删除); end;end;procedure tfrm_ygxx.btn_saveclick(sender: tobject); 保存按钮代码begin if (trim(dbe_name.text) ) and (trim(dbe_sfzhm.text) ) then begin if adt_empy.state in dsedit,dsinsert then begin adt_empy.fieldbyname(birthday).asdatetime:=dtpick_birthday.date; adt_empy.fieldbyname(pydate).asdatetime:=dtpick_pydate.date; adt_empy.post; adt_empy.refresh; dbe_name.enabled:=false; dblucbb_sex.enabled:=false; dtpick_birthday.enabled:=false; dtpick_pydate.enabled:=false; dbe_birthday.enabled:=false; dblcbb_dept.enabled:=false; dbe_age.enabled:=false; dbe_education.enabled:=false; dbe_sfzhm.enabled:=false; dbe_phone1.enabled:=false; dbe_phone2.enabled:=false; dbe_address.enabled:=false; dbe_pydate.enabled:=false; dbe_remark.enabled:=false; dbe_birthday.visible:=true; dbe_pydate.visible:=true; dtpick_birthday.visible:=false; dtpick_pydate.visible:=false; dbe_id.enabled:=false; btn_appd.enabled:=true; btn_del.enabled:=true; btn_modi.enabled:=true; btn_save.enabled:=false; btn_canl.enabled:=false; btn_close.enabled:=true; btn_appd.setfocus; end; end else begin showmessage(员工姓名或身份证号码中没有输入数据,请重新输入); dbe_birthday.visible:=false; dbe_pydate.visible:=false; dtpick_birthday.visible:=true; dtpick_pydate.visible:=true; end;end;procedure tfrm_ygxx.btn_canlclick(sender: tobject); / 取消按钮代码begin if ds_empy.state in dsinsert,dsedit then if idyes = application.messagebox(你所做的操作没有保存,真的要取消吗?,员工信息维护,mb_yesno) then begin dbe_birthday.visible:=true; dbe_pydate.visible:=true; dtpick_birthday.visible:=false; dtpick_pydate.visible:=false; dbe_id.enabled:=false; btn_appd.enabled:=true; btn_del.enabled:=true; btn_modi.enabled:=true; btn_save.enabled:=false; btn_canl.enabled:=false; btn_close.enabled:=true; adt_empy.cancel; adt_empy.refresh; dbe_name.enabled:=false; dblucbb_sex.enabled:=false; dtpick_birthday.enabled:=false; dtpick_pydate.enabled:=false; dbe_birthday.enabled:=false; dblcbb_dept.enabled:=false; dbe_age.enabled:=false; dbe_education.enabled:=false; dbe_sfzhm.enabled:=false; dbe_phone1.enabled:=false; dbe_phone2.enabled:=false; dbe_address.enabled:=false; dbe_pydate.enabled:=false; dbe_remark.enabled:=false; end else begin dbe_name.enabled:=true; dblucbb_sex.enabled:=true; dtpick_birthday.enabled:=true; dtpick_pydate.enabled:=true; dbe_birthday.enabled:=false; dblcbb_dept.enabled:=true; dbe_age.enabled:=true; dbe_education.enabled:=true; dbe_sfzhm.enabled:=true; dbe_phone1.enabled:=true; dbe_phone2.enabled:=true; dbe_address.enabled:=true; dbe_pydate.enabled:=false; dbe_remark.enabled:=true; btn_save.setfocus; end;end;procedure tfrm_ygxx.btn_modiclick(sender: tobject); /编辑按钮代码begin adt_empy.edit; dtpick_birthday.date:=adt_empy.fieldbyname(birthday).asdatetime; dtpick_pydate.date:=adt_empy.fieldbyname(pydate).asdatetime; dbe_name.enabled:=true; dblucbb_sex.enabled:=true; dtpick_birthday.enabled:=true; dtpick_pydate.enabled:=true; dblcbb_dept.enabled:=true; dbe_age.enabled:=true; dbe_education.enabled:=true; dbe_sfzhm.enabled:=true; dbe_phone1.enabled:=true; dbe_phone2.enabled:=true; dbe_address.enabled:=true; dbe_remark.enabled:=true; dbe_name.setfocus; dbe_birthday.visible:=false; dbe_pydate.visible:=false; dtpick_birthday.visible:=true; dtpick_pydate.visible:=true; dbe_id.enabled:=false; btn_appd.enabled:=false; btn_del.enabled:=false; btn_modi.enabled:=false; btn_save.enabled:=true; btn_canl.enabled:=true; btn_close.enabled:=true;end;厂家信息维护窗体:在些窗体中能对厂商信息进行增,删,改、查询操作。此窗体源代码如下:procedure tfrm_gsxx.set_dbedit_status(status:boolean); /自定义的设置编缉框状态子函数begin db_name.enabled:=status; db_lxr.enabled:=status; db_phone1.enabled:=status; db_phone2.enabled:=status; db_phone3.enabled:=status; db_address.enabled:=status; db_yb.enabled:=status; db_produce.enabled:=status; db_hrdb.enabled:=status; db_bank.enabled:=status; db_account.enabled:=status;end;procedure tfrm_gsxx.formcreate(sender: tobject); /打开 公司信息 表begin if not adt_company.active then adt_company.open;end;procedure tfrm_gsxx.formclosequery(sender: tobject; var canclose: boolean); begin /关闭公司信息表 adt_company.close;end;procedure tfrm_gsxx.edt_findenter(sender: tobject);begin edt_find.selectall;end;procedure tfrm_gsxx.set_button_status(); /自定义按钮状态子函数begin btn_add.enabled := adt_company.state in dsbrowse; btn_delete.enabled := adt_company.state in dsbrowse; btn_modify.enabled := adt_company.state in dsbrowse; btn_save.enabled := adt_company.state in dsedit,dsinsert; btn_cancel.enabled := adt_company.state in dsedit,dsinsert;end;procedure tfrm_gsxx.formshow(sender: tobject);begin set_button_status(); db_id.enabled := false; set_dbedit_status(false);end;procedure tfrm_gsxx.btn_addclick(sender: tobject); /增加按钮代码var nummax:integer;begin nummax := 1; set_dbedit_status(true); if adt_company.filtered then adt_company.filtered:=false; if adt_company.recordcount 0 then begin adt_company.last; nummax := nummax + adt_company.fieldbyname(id).asinteger; adt_company.append; adt_company.fieldbyname(id).asinteger := nummax; db_name.setfocus; end else begin adt_company.append; adt_company.fieldbyname(id).asinteger := nummax; db_name.setfocus; end; set_button_status;end;procedure tfrm_gsxx.btn_cancelclick(sender: tobject); /取消按钮代码begin if idyes = application.messagebox(真的要取消操作吗?,厂商信息维护,mb_yesno) then begin adt_company.cancel; set_button_status; btn_add.setfocus; set_dbedit_status(false); end else begin db_name.setfocus; set_button_status; end; if adt_company.filtered then adt_company.filtered:=false; end;procedure tfrm_gsxx.btn_saveclick(sender: tobject); /保存按钮代码begin if trim(db_name.text) = then begin showmessage(厂家名称中无数据不能保存,请重新输入!); db_name.setfocus; end else begin adt_company.post; adt_company.refresh; set_button_status; set_dbedit_status(false); end; if adt_company.filtered then adt_company.filtered:=false;end;procedure tfrm_gsxx.btn_deleteclick(sender: tobject); /删除按钮代码begin if not adt_company.eof then begin if idyes = application.messagebox(请的要删除些条纪录吗?,厂商信息维护,mb_yesno) then begin adt_company.delete; adt_company.refresh; set_button_status; end; btn_add.setfocus; set_dbedit_status(false); end else begin showmessage(没有数据,不能删除!); set_button_status; end; if adt_company.filtered then adt_company.filtered:=false;end;proced

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论