1、*实践教学* 兰州理工大学计算机与通信学院2023年秋季学期面向对象课程设计题 目:汽车维修管理系统设计与实现专业班级:10级计算机(4)班姓 名: 王健 学 号: 10240421 指导教师: 朱红蕾 成 绩: 目录第1章 概述3第2章 需求分析.3第3章 数据库逻辑设计.8第4章软件功能设计.12第5章系统界面13第6章程序设计的心的体会14参考文献、致谢.15汽车修理管理系统一. 概述1项目背景在计算机不断发展的今天,计算机已经运用到各个领域,计算机的作用使由手工的操作到计算机的操作是一个大的奔腾,代替的复杂的容易犯错的人工操作,节省了大量的时间,提高了对的性,提高了数据的可靠性。因此每
2、个公司使用计算机建立自己的业务是迫在眉睫,汽车修理厂根据业务发展的需要,决定建立一个数据库管理系统,以代替单一的人工管理。这样使人工操作的管理方便,简朴。2编写目的 编写的目的是使汽车修理厂由单一的人工管理到计算机管理的奔腾,使汽车修理厂的管理的效率得到很大的提高,使人工管理的犯错的机会大大减少,实现数据的共享,便于查询自己的数据信息,使汽车修理厂的业务的流程时间大大减少,从而可以提高该汽车修理厂的竞争性,在社会有立足之地。3软件定义 该软件为第一版,既 汽车修理管理系统 1.0 版。4开发环境数据库: SQL SERVER 2023开发和编译环境: Visual C+6.0。二需求分析1通过
3、度析得知,该修理厂共使用5种单据,4种账册和3种重要报表。 五种单据如表1所示:表中D1由送修人填写。修理派工员据此开出修理单D2,分派给指定的修理工执行。假如在修理中需要更换零件,一律由修理工填写零件领用单D3向仓库领用。修理结束后,修理工将D2交回给派工员,然后转财务部门结账并开修车发票D5。D4在零件入库时由仓库管理员验收并且填写。图6显示了这些单据的格式内容。编号名称填写人D1修车登记单送修人D2汽车修理单修理派工员和修理工D3零件领用单修理工D4零件入库单仓库管理员D5修车发票财务人员表1 当前系统单据一览表汽车登记单 日期: 汽车牌号: 型号: 生产厂: 修理项目码: 车主名: 电
4、话: 地址:图2汽车修理单 修理单编号: 汽车牌号: 修理工工号: 送修日期: 修理项目: 派工员: 零件用量零件号:数量:修理小时: 竣工日期: 修理工:图3零件入库单 日期: 零件号:零件名:成本:数量: 验收人:图5零件领用单 日期: 修理单编号: 零件号数量图4修车发票 日期: 车主名:地址:牌号: 修理项目:修理费零件费总计图6 四种账册,如表2所示。图7-10显示了这些账册的表式。编号名称建账根据Z1汽车登记册D1Z2修理工名册人事部门资料Z3汽车修理台账D2,D5Z4库存修理台账库房资料表2 当前系统账册一览表牌号型号生产厂车主名地址电话图7 汽车登记册表式工号姓名小时工资出生日
5、期进厂日期地址电话图8 修理工名册表式工号牌号修理项目修理工号修理小时修理费零件费总计零件用量送修日期竣工日期零件号数量零件号数量零件号数量图9 汽车修理台账表式零件号零件名成本价格库存量最低库存量订货量图10 库存零件台账表式 3种重要报表如表3所示编号名称 数据来源B1零件耗用月报表Z3,Z4B2修理工资月报表Z3,Z2B3零件订货计划Z4表3当前系统报表一览表图11-13显示了这些报表的格式。零件名数量价格名称利润图11零件耗用月报表工号姓名修理小时小时工资月工资图13修理工资月报表零件名订货量成本总计图12零件订货计划这些报表是以上面提供的九种单据、帐册为依据,由程序自动记录生成的无需
6、人工干预。零件耗用月报表是以零件入库、单零件领用单为依据生成的;零件订货计划由库存零件台账生成, 假如库存余量小于最低库存量,则产生订货计划;修理工资月报表由修理工名册和汽车修理台账生成。2ER模型图。地址汽车登记单日期汽车牌号生产厂修理项目码车主名电话地址汽车修理单零件用量修理工竣工日期修理小时数量零件号派工员修理工工号修理项目送修日期汽车牌号修理单编号零件领用单零件号日期修理单编号数量零件入库单验收人成本零件号日期零件名数量修车发票车主名日期牌号地址总计零件费修理项目修理费序号汽车牌号成本序号修理单编号操作员图12零件订货计划图11零件耗用月报表车主名牌号电话汽车基本信息地址型号生产厂修理
7、工名册进厂日期小时工资电话工号出生日期姓名修理费序号汽车牌号成本序号修理单编号操作员图12零件订货计划图11零件耗用月报表汽车修理台账修理项目牌号修理工号修理单编号修理小时序号数量零件费总计修理费序号汽车牌号成本序号修理单编号操作员图12零件订货计划图11零件耗用月报表送修日期竣工日期库存零件台帐额定订货量零件名零件号成本最低库存量价格库存量利润零件名零件耗用月报表数量价格零件号总计订货量零件订货计划零件名成本修理工工资月报表小时工资月工资工号修理小时姓名三数据库逻辑设计QICHEDENGJD 列名数据类型可否为空说明idintNot null 序号xcdjnovarcharNull 修车登记
8、编号qcdjnovarcharNull汽车牌号qcdjclassvarcharNull型号qcdjfactoryvarcharNull生产厂qcdjpersonvarcharNull车主名qcdjtelvarcharNull电话qcdjaddrvarcharNull地址qcdjxiangmuvarcharNull修理项目qcdjdatedatetimeNull日期managervarcharNull操作员QICHEXIULIDAN列名数据类型可否为空说明idintNot null 序号qcxlidvarcharNull 修理单编号xcdjnovarcharNull 修车登记编号qcxlnova
9、rcharNull汽车牌号qcxlfrdatedatetimeNull送修日期qcxlxiangmuvarcharNull修理项目qcxlgonghaovarcharNull修理工工号qcxlpaivarcharNull派工员qcxllingjiannovarcharNull零件号qcxlnumbervarcharNull数量qcxlhourvarcharNull修理小时qcxltodatedatetimeNull竣工日期qcxlxlgvarcharNull修理工managervarcharNull操作员LINGJIANLINGYONGDAN列名数据类型可否为空说明idintNot null
10、序号ljlydanidvarcharNull 零件领用单编号ljlyidvarcharNull 零件号ljlyljhaovarcharNull修理单编号ljlynumberintNull数量ljlydatedatetimeNull日期managervarcharNull操 作 员 LINGJIANRUKUDAN列名数据类型可否为空说明idintNot null 序号ljrknovarcharNull 零件号ljrknamevarcharNull 零件名ljrkPricevarcharNull成本ljrknumbervarcharNull数量ljrkdatedatetimeNull日期ljrkp
11、ersonvarcharNull验收人managervarcharNull操作员 XIUCHEFAPIAO列名数据类型可否为空说明idintNot null 序号xldnovarcharNull 修理单编号fpnamevarcharNull 车主名fpaddrvarcharNull地址fpnovarcharNull汽车牌号fpxiangmuvarcharNull修理项目fpxlmoneyvarcharNull修理费fpljmoneyvarcharNull零件费fpsumvarcharNull总计fpdatedatetimeNull日期XIULIGONGMINGCHE 列名数据类型可否为空说明i
12、dintNot null 序号xlgnovarcharNull 工号xlgnamevarcharNull 姓名xlghourmoneyvarcharNull小时工资xlgbirthdaydatetimeNull出生日期xlgworkdatedatetimeNull进厂日期xlgaddrvarcharNull地址xlgtelvarcharNull电话列名数据类型可否为空说明idintNot null 序号xltznovarcharNull 修理单编号xltzqcnovarcharNull 汽车牌号xltzxiangmuvarcharNull修理项目xlgnovarcharNull修理工号xltz
13、hourvarcharNull修理小时xltzxlmoneyvarcharNull修理费xltzljmoneyvarcharNull零件费xltzsumvarcharNull总计xltzljnovarcharNull零件号xltznumbervarcharNull数量xltzfrdatedatetimeNull送修日期xltztodatedatetimeNull竣工日期KUCUNLINGJIANTAIZHANG 列名数据类型可否为空说明idintNot null 序号ljnovarcharNull 零件号kcljname(varcharNull 零件名kcljchengbenvarcharNu
14、ll成本kcmoneyvarcharNull价格kcnumbervarcharNull库存量kcminintNull最低库存量kcdinghuovarcharNull额定订货量列名数据类型可否为空说明idintNot null 序号ljhynovarcharNull 零件号ljhynamevarcharNull 零件名ljhynumbervarcharNull数量ljhymoneyvarcharNull价格ljhylirunvarcharNull利润列名数据类型可否为空说明idintNot null 序号ljdhnamevarcharNull 零件名ljdhnumbervarcharNull
15、订货量ljdhmoneyvarcharNull成本ljdhsumvarcharNull总计列名数据类型可否为空说明idintNot null 序号xlgznovarcharNull 工号xlgznamevarcharNull 姓名xlgzhourvarcharNull修理小时xlgzhourmoneyvarcharNull小时工资ljdhsumvarcharNull月工资 LINGJIANJIBENXINXI列名数据类型可否为空说明idintNot null 序号ljnovarcharNull 零件编号ljnamevarcharNull 零件名ljchengbenvarcharNull 成本l
16、jmoneyvarcharNull价格 QICHEJIBENXINXI列名数据类型可否为空说明idintNot null 序号qcnovarcharNull 汽车牌号qcclassvarcharNull 型号qcfactoryvarcharNull生产厂qcpersonvarcharNull车主名qctelvarcharNull电话qcaddrvarcharNull地址 四软件功能设计汽车修理管理系统帮助帮助文档关于该系统报表操作零件定货计划表员工工资月报表零件耗用月报表表单操作修车发票零件领用单零件入库单汽车修理单修车登记单帐册操作库存零件台帐汽车修理台帐修理工名册汽车登记册基本信息零件基本
17、信息修理工基本信息汽车基本信息系统管理管理用户退出系统修改密码注销用户软件功能模块图各模块功能说明: 1系统管理: 管理用户:涉及用户的添加、修改、删除,退出 修改密码:涉及旧密码、新密码及新密码的确认 注销用户:退回到登陆模式 退出系统:退出2基本信息: 零件基本信息:涉及的功能有零件的添加、修改、删除、查询 汽车基本信息:涉及的功能有汽车的添加、修改、删除、查询 修理工基本信息:涉及的功能有修理工的添加、修改、删除、查询3表单操作: 修车登记单:涉及的功能有修车登记的添加、修改、删除、查询 汽车修理单:涉及的功能有汽车修理的添加、修改、删除、查询 零件入库单:涉及的功能有零件入库的添加、修
18、改、删除、查询 零件领用单:涉及的功能有零件领用的添加、修改、删除、查询 修车发票:涉及的功能有修车发票的添加、修改、删除、查询4帐册操作 汽车登记册:涉及的功能有汽车的添加、修改、删除、查询 修理工名册:涉及的功能有修理工的添加、修改、删除、查询 汽车修理台账:自动汽车修理生成台账,有打印和查询的功能 库存零件台账:自动库存零件生成台账,可以更新和查询5报表操作 零件耗用月报表:自动生成,有打印和查询功能 员工工资月报表:自动生成,有打印和查询功能 零件定货计划表:自动生成,有打印和查询功能6帮助 帮助文档:用户操作手册 关于该系统:版本说明五系统界面 1用户登录(用户名及密码都为admin
19、)2管理用户 3主界面及数据添加六程序设计的心得体会SQL Server2023是美国微软公司开发的一款关系型数据库管理系统的产品,具有成本低,易上手,工具全等优点。合用于大型或超大型数据库服务器端。它所使用的是增强型T-SQL语言。这个程序用到的数据库是一个关系型的数据库,设计关系型数据库的重头戏是把数据元素分别放进相关的表格里。一旦准备好开始操作数据,要依靠表格之间的关系把数据以故意义的方式联系到一起。这也是这个数据库程序设计的难点所在。视图是关系型数据库系统提供应用户以多种角度观测数据库中数据的重要机制。视图具有如下的一些优点: 1.简朴性。视图不仅可以简化用户对数据的理解,也可以简化他
20、们的操作。那些被经常使用的查询可以被定义为视图,使用户不必为以后的操作每次都指定所有的条件。 2.安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。 3.逻辑数据独立性。视图可以使应用程序和数据库表在一定限度上独立。假如没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。在本程序中的三种记录报表:零件耗用月报表,修理工工资月报表,零件订货计划。都是通过
21、视图来完毕自动的记录的。 数据库程序编写是通过对MFC ODBC 数据库访问技术的运用实现。ODBC基于SQL(Structured Query Language),并把它作为访问数据库的标准。这个接口提供了最大限度的互相可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可认为不同的数据库提供相应的驱动程序。CRecordset类代表一个记录集。该类是MFC的ODBC类中最重要、功能最强大的类。本程序对数据库的操作大多是基于这个类的。通过本次课程设计,让我对SQL SERVER 2023及Vi
22、sual C+ 之间的设计连接有了更深的理解,提高了软件系统的设计能力,在设计中虽然碰到了很多困难,通过同学朋友帮助,及网络询问、搜查,慢慢解决碰到的问题,最终还是完毕本次的课程设计,使我对编程有了更大的爱好,形成对的的编写Windows程序的思绪,了解运用Visual C+编写程序的奥妙。本次的设计尚有些“瑕疵”,重要是系统界面不够美丽,尚有待提高。七、参考文献、致谢1张海藩.软件工程导论M.清华大学出版社.2023年12月2张海藩. 软件工程导论学习辅导M.清华大学出版社.2023年3萨师煊.王珊.数据库系统概论M.清华大学出版社.2023年 4汪孝宜.刘中兵,徐佳晶等.JSP数据库开发实
23、例精粹M.电子工业出版社.2023年1月5周之英.现代软件工程.科学出版社.2023年1月6唐任仲.工程应用软件开发技术. 化学工业出版社.1999年5月7 萨师煊.数据库系统概论. 王珊8数据库管理系统.美. 清华大学出版社 9数据库系统概念.美.机械工业出版社10 SQLServer2023实用教程.清华大学出版社. 范立南.202311SQLServer2023编程员指南.北京希望电子出版社.李香敏.2023致 谢一方面非常感谢我们学院开设的课程设计课题,为我日后从事计算机方面的工作提供了实战的经验,奠定了初步的基础。本次课程设计我花费了三周的时间,三周来我们的辅导老师不辞辛劳的给我们辅
24、导、为我讲解疑难问题。在此,特别感谢我辅导老师对我的谆谆教导、耐心细致的讲解。源代码 use mastergoif exists (select * from dbo.sysdatabases where name = CarManager) drop database CarManagerGOcreate database CarManagergouse CarManagergoif exists (select * from dbo.sysobjects where id = object_id(Ndbo.GONGZIYUEBAOBIAO) and OBJECTPROPERTY(id, N
25、IsView) = 1)drop view dbo.GONGZIYUEBAOBIAOGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.KUCUNLINGJIANTAIZHANGVIEW) and OBJECTPROPERTY(id, NIsView) = 1)drop view dbo.KUCUNLINGJIANTAIZHANGVIEWGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.LINGJIANHAOYONGYUEBA
26、OBIAO) and OBJECTPROPERTY(id, NIsView) = 1)drop view dbo.LINGJIANHAOYONGYUEBAOBIAOGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.LINGJIANLINGYONGTONGJI) and OBJECTPROPERTY(id, NIsView) = 1)drop view dbo.LINGJIANLINGYONGTONGJIGOif exists (select * from dbo.sysobjects where id = o
27、bject_id(Ndbo.QICHEXIULITAIZHANG) and OBJECTPROPERTY(id, NIsView) = 1)drop view dbo.QICHEXIULITAIZHANGGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.XIULIDANTONGJI) and OBJECTPROPERTY(id, NIsView) = 1)drop view dbo.XIULIDANTONGJIGOif exists (select * from dbo.sysobjects where id
28、 = object_id(Ndbo.KUCUNLINGJIANTAIZHANG) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.KUCUNLINGJIANTAIZHANGGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.KUCUNLINGJIANTAIZHANG2) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.KUCUNLINGJIANTAIZHANG2GOif exists
29、(select * from dbo.sysobjects where id = object_id(Ndbo.LINGJIANJIBENXINXI) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.LINGJIANJIBENXINXIGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.LINGJIANLINGYONGDAN) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.LINGJ
30、IANLINGYONGDANGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.LINGJIANRUKUDAN) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.LINGJIANRUKUDANGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.M_USER) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table db
31、o.M_USERGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.QICHEDENGJI) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.QICHEDENGJIGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.QICHEJIBENXINXI) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.QIC
32、HEJIBENXINXIGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.QICHEXIULIDAN) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.QICHEXIULIDANGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.XIUCHEFAPIAO) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table db
33、o.XIUCHEFAPIAOGOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.XIULIGONGMINGCHE) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table dbo.XIULIGONGMINGCHEGOCREATE TABLE dbo.KUCUNLINGJIANTAIZHANG (id int NULL ,ljno varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcmin int NULL ,kcdingh
34、uo varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOCREATE TABLE dbo.KUCUNLINGJIANTAIZHANG2 (id int NOT NULL ,kcljno varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcljname varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcljchengben varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcljmoney varchar
35、 (50) COLLATE Chinese_PRC_CI_AS NULL ,kcljnumber varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcljmin varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,kcdinghuo varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOCREATE TABLE dbo.LINGJIANJIBENXINXI (id int NULL ,ljno varchar (50) COLLATE Chinese_P
36、RC_CI_AS NULL ,ljname varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ljchengben varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ljmoney varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARYGOCREATE TABLE dbo.LINGJIANLINGYONGDAN (id int NOT NULL ,ljlydanid varchar (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,ljlyid varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ljlyljhao varchar (50) COLLATE Chinese_PRC_CI_AS NULL ,ljlynumber int NUL