加油站管理系统_第1页
加油站管理系统_第2页
加油站管理系统_第3页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、目录目录 I一课程设计简介 11.1课程设计的目的11.2课程设计的内容 12系统分析 32.1用户工作流程32.2用户业务需求33系统设计 43.1设计思想43.2系统功能结构图43.3模块功能设计54系统数据库设计 64.1系统数据库的建立 64.2系统E-R图64.3存储过程设计84.4触发器的设计94.5数据库的连接105系统实现 115.1系统实现工具与支持平台 115.2系统主要的功能界面与实现代码 115.3系统主要功能实现 216总结与展望 226.1收获与体会226.2未来的展望 227源代码附录 237.1系统与数据库交互代码 23参考文献 34致谢 35课程设计检查表 3

2、64 课程设计简介1.1课程设计的目的随着人类社会的进步和科学技术的发展, 人们生活水平也在不断的提高,拥 有车的人越来越多,这又影响着油的耗量急剧增大,加油站也也来越多。现在人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决 策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提 高了,面对着日益复杂和不断发展, 变化的社会环境,人们已经习惯快速的获得 信息以及完成各种事情,加油站的反战中当然也要考虑这些因素。本次设计的加 油站管理系统就是为满足人们的需求而设计的, 此加油占管理系统是为了解决人 们生活中加油的快捷、方便以及减轻加油站管理人员和其他工作人

3、员工作的负 担,帮助他们很好的管理和工作的顺利进行。1.2课程设计的内容本系统采用的是微软公司的 Microsoft Visual C+ 6.0开发工具做为开发系统 程序。在连接数据库上,利用 ADO对象模型,创建几个简单的对象和数据来源 进行连接,然后从中取得所需要的数据,进行数据访问操作后保存。DAO或在连接数据库上,以往在数据访问应用程序开发中,不管是使用RDO对象来访问数据来源,都会对这些对象模型众多而且复杂的组成结构印象 深刻。但利用ADO对象模型,就可以只创建几个简单的对象和数据来源进行连 接,然后从中取得所需要的数据,进行数据访问操作后保存。ADO (ActiveX Data O

4、bjects)对象模型主要由三个对象成员:Connection、Comma nd 与 Record set 对象; 以及三个集合对象: Errors、Parameters 与 Fields 对象所组成。ADO对象模型与DAO、RDO另一个较大的差异,在于某些ADO对象可以 直接创建而不需依据上下层按顺序产生,比如我们可以直接创建一个Comma nd对象而不需要先行创建该对象的上层Connection对象,ADO会在该Comman对象产生时自动创建上层Conn ection对象。此加油站要完成以下任务:实现用户的登陆,以很好管理工作人员的分工。实现系统的管理,包括管理工作人员信息,油库信息,会员

5、信息,会员 等级信息等。能够记录油品购进和销售情况,剩余量等信息。工作人员能够直接查询库存情况,会计人员能够对账目进行管理。此系统还要能够实现数据库对个功能模块的访问。其实现的具体任务还包括:在连接数据库后先要有登陆界面,在确认用用户 身份后,符合身份的工作人员便可登陆,进入系统主界面,可以在主界面上访问 个功能模块。各功能键包括:工作人员管理、油品信息管理、油品类型信息管理、 会员信息管理、添加进货记录、添加销售记录、库存查询、账目管理;通过工作 人员信息管理模块查询各工作人员信息;通过对油品的管理模块查询油品的单 价,销售储量,存储地等,通过对会员的管理模块能查询顾客等级、花费等。2系统分

6、析2.1用户工作流程下面是对本企业的业务流程的描述:工件人员信息录入一?工作人员官理一生成 _ 工作人员信息数据库读収 读 取图2.1系统业务流程图2.2用户业务需求此系统要满足用户的如下需求:(1) 对不同工作类型的员工要能辨别其身份,根据身份限制其权限,设置完 成其工作任务。当购进油时要记录油的相关信息,对不同的油放入相应的油库,同时记 录其价格,储量等。(3) 要记录销售信息,同时根据销售情况对油库灯做相应的修改(4) 对不同的顾客根据其购买油量,消费金额等给其设置相应的会员等级, 根据等级的不同给予不同的优惠政策(5) 对油库进行编号,不同的油库存放不同的油,可根据用户需要快速在相 应

7、油库找到所需的油3系统设计3.1设计思想(1) 系统分成前台和后台几个相对进程,这些进程都进行集中式管理。(2) 整个系统采用模块化结构设计,并且有较强的可操作性和扩展性。(3) 采用合理的数据流设计思想,在应用系统设计中,相对独立的模块间以 数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2系统功能结构图根据对管理系统进行可行性分析和结构化程序设计的要求,可得到系统的总体结构如图3-1所示:图3.1力啪站总功能模块图加油站管理系统的分功能模块如图3.2所示:加油站菅理系统图3.2加油站分功能模块图3.3模块功能设计系统功能设计是设计一个加油站管理系统,要求满足油品管

8、理的基本要求、 油品销售管理的基本要求、工作人员管理的基本要求、油库管理的基本要求、销售管理的基本要求以及系统管理的基本要求。并且能够实现方便的扩张,满足加 油站发展的需求,能够保障加油站管理数据的安全,准确对于工作人员有不同的 职位,不同职位人员所拥有的工作权限也不一样,对于油有购油信息、出售情况、 有的类别以及油量的多少等情况,能设置一些优惠政策,比如会员可以优惠。本系统共包括五大模块,分别是用户登录模块、系统管理模块、经销操作模 块、查询操作模块、数据库防护问模块。每个模块的功能如下:(1)用户登陆,根据不同用户身份启用不同的职务系统管理,包括工作人员信息管理、油库信息管理、油品信息管理

9、、会 员信息、会员等级信息管理。(3) 进销操作,包括进货信息和销售信息。(4) 查询操作,包括库存查询和账目管理。(5) 数据库访问模块,提供各模块数据库操作接口4系统数据库设计4.1系统数据库的建立数据库的设计尽量的实现与应用程序做到最低等级的耦合,按照三层模式两级联系的方式设计数据库,把数据库设计成层次清晰的,高效的实用数据库。在该系统的数据库设计方面,把数据库的设计分为四层:基本表、存储过程、触发 器。其中触发器的作用是这个表修改后, 自动触发到另外一个表,这样可以减少 代码的编写。因为该系统是采用三层架构设计的,可通过应用服务器的扩展来实现新功能 的添加。而在该课程设计的内容定义方面

10、,保证了数据的独立性,该系统对数据 记录的操作也因为其课程设计中定义的数据操作方式和操作内容而注定不会产 生脏数据及数据读写的不一致性,故在数据库设计方面采用触发器。4.2系统E-R图1. 数据流图根据系统的功能,得到该系统的数据流图,其中第一层数据流图如图4-1收 账 费 用应收账款报表图4.1加油站管理系统一层数据流图第二层数据流图如图4.24.4所示:图4.2送进购买情况图4.3处理顾客购油图4.4处理账款2. E-R模型根据数据流图设计E-R模型,如图4.5所示:3、将产生的E-R模型转化为关系模型如下:工作人员(工作号,姓名,身份证号,员工类型,密码)油库管理(油库编号,工作号)油库

11、(油库编号,名称,地点,容量)油品(油品编号,名称,价格,储量,油库编号)._会员(会员编号,姓名,身份证号,等级名称,车牌号,总消费额)会员等级(等级名称,折扣,最低消费额)进货油品(油品编号,工作号,进货时间,油库编号,.一进货量,单价) 销售油品(油品编号,工作号,销售时间,油库编号,单价,客户,折扣, 销售量)4.3存储过程设计1、创建用于油品入库的存储过程:CREAT OR REPLACE ROCEDURE GAS_I nfoAdd(pgas_type IN nu mber(8),pdepot IN varchar(50),pamou nt IN varchar(30),pprice

12、 IN float ,pget_date IN date,pworker IN varchar(30)ASBEGINInsert into Gas _lnfo values(pgas_type,pdepot,pam oun t,pprice,pprice,pget_date,pworker);END GAS_I nfoAdd;2、创建添加工作人员的存储过程:CREATE OR REPLACE PROCEDURE worker_I nfoAdd(pnu mber IN nu mber(8),pn ame IN varchar(25),pid IN numberr(18),ptype IN var

13、char(20),ppassword IN varchar(12)ASBEGINInsert into worker_I nfo values(p nu mber,pn ame,pid,ptype,ppassword)END worker_I nfoAdd;4.4触发器的设计1、仓U建一个触发器,实现当一个油库撤销时,修改相应的油品信息的触发器:CREATE OR REPLACE TRRIGER UP_GAS(BEFORE DELETE ON DEPOT FOR EACH ROWBEGINUpdate Gastype where depot. nu mber=Gastype .nu mberA

14、nd nu mber=:old nu mber;End UP_GAS;4.5数据库的连接应用程序与OraclelOg数据库的连接是通过创建 ADO数据源,然后在程序中 利用代码与数据库建立连接来实现的。具体实现方法是:在模块中声明调用ADO连接控件,这样便能在任何时间连接数据库了。使用ADOConnection对象连接到OraclelOg。在查询等按钮的单击事件中访问数据库。可以使用应用程序配置文件建立一条到数据库服务器的连接,返回一个关键字ConnectionString ,在实体数据链路层定义一个用于存储过程的一个基类 DBdata.cs在这个基类中接受该关键字 ConnectionStr

15、ing ,使用SqlConnection 连接数据库。配置文件连接数据库的代码:<addkey="C onnection Stri ng"value="server=(local); database=Supermarket;uid=sa; pwd="/>。存储过程基类接受该关键字的代码:System.C on figurati on.Con figurati on Sett in gs.AppSett in gs" Connection String ".ToString();5系统实现5.1系统实现工具与支持平台(1)

16、 用户界面:本系统采用 Microsoft Visual C+ 6.0设计,用户交互界面采用的是基于 Windows的窗口界面。(2) 硬件要求:运行本系统的硬件基本要求如下:CPU: Intel P4及以上;内存:1024MB及以上;硬盘:40GB及以上。(3) 软件要求:数据库服务器:Oracle10g。5.2系统主要的功能界面与实现代码下面为运行后的界面图:1、系统的登录界面与代码:图5.1系统登录界面实现代码如下:void CgasStati on Dlg:O nLogi n() Cstri ng strBt nText;m_bt nLogi n.GetWi ndowText(strB

17、t nText);if ( strBtnText= 登陆 ” CloginDlg loginDlg;if (logi nDlg.DoModal() != IDOK) retur n ; if(!ADOSQLServer.lsValidWorkerPassword(logi nDlg.m_ nNu mber,log in Dlg.m_strPassword) MB_ERROR(密码错误,登陆失败! ”;return ;oooooooooooelse if (MB_QUERY(确定要注销当前用户么?”= IDNO)return ;m_btnLogin.SetWindowText(登陆”;m_bt

18、nWorkerMgr.E nableWi ndow(FALSE);ooooooooooom_bt nLogi n.E nableWi ndow(FALSE);2、加油站管理系统主窗口界面如下:图5.2加油站管理系统主窗口3、工作人员信息管理模块的界面与代码:图5.3工作人员信息管理界面实现代码如下:BOOL CWorkerMgrDlg:O nlni tDialog() CDialog:O nln itDialog();const char *list_colu mn=II厶白戶、II编号,"姓名","身份证号","类型",1111;i

19、nt i=0;while (*list_columni != 0x00) mistWorker.l nsertColu mn (i, list_colu mn i+, LVCFMT_LEFT, 100); mistWorker.SetExte ndedStyle(LVS_EX_FULLROWSELECT);return TRUE; void CWorkerMgrDlg:O nAdd() int nNu mber = -1;if (!ADOSQLServer.AutoAssig nNu mber("Worker", nNu mber) MB_ERROR("无法添加工

20、作人员信息,可能是数据库已满!”);return ;CWorkerI nfoDlg workerI nfoDlg;workerI nfoDIg.m _nNu mber = nNu mber;if (workerI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.AddNewWorker(workerI nfoDIg.m _nNu mber,workerI nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,workerI nfoDlg.m_strPassword)MB

21、_ERROR添加工作人员信息失败!”);RefreshList();void CWorkerMgrDlg:O nM odify() int nItem = mistWorker.GetSelectio nM ark();if (nI tem = -1)return ;CWorkerI nfoDlg workerI nfoDlg;CStri ng strNumber = mistWorker.GetltemText( nltem, 0);GET_INT(workerI nfoDlg.m_ nNu mber, strNumber);ADOSQLServer.GetWorker(workerI nf

22、oDIg.m _nNu mber,workerI nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,workerI nfoDlg.m_strPassword);if (workerI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.ModifyWorker(workerl nfoDIg.m _nNu mber,workerl nfoDlg.m_strName,workerI nfoDlg.m_strlD,workerI nfoDIg.m _n WorkerType,

23、workerI nfoDlg.m_strPassword)MB_ERROR修改工作人员信息失败!”);RefreshList();void CWorkerMgrDlg:O nRemove()int nItem = mistWorker.GetSelectio nM ark();if (nI tem = -1)return ;int nNu mber;CStri ng strNumber = mistWorker.GetltemText( nltem, 0);GET_INT( nNu mber, strNumber);if (MB_QUERY(” 确定要删除此项么?") = IDYES

24、) if (!ADOSQLServer.RemoveWorker(nNu mber)MB_ERROR删除工作人员信息失败!”);RefreshList();void CWorkerMgrDlg:RefreshList()mistWorker.DeleteAllltems();strPassword);CStri ngArray strNumber, strName, strlD, strType, strPassword;ADOSQLServer.GetWorkers(strNumber, strName, strlD, strType, for (int i=O;i<strNumber

25、.GetSize();i +) mistWorker.l nsertltem(i, strNumber.GetAt(i);mistWorker.SetltemText(i, 1, strName.GetAt(i);mistWorker.SetltemText(i, 2, strlD.GetAt(i);int n Type;GET_INT (n Type, strType.GetAt(i);switch (n Type) case 0:mistWorker.SetltemText(i, 3,"销售员");break;case 1:mistWorker.SetltemText(

26、i, 3,"进货员");break;case 2:mistWorker.SetltemText(i, 3,"会计");break;case 3:mistWorker.SetltemText(i, 3,"经理");break;default:mistWorker.SetltemText(i, 3,"未知类型");break; void CWorkerMgrDlg:O nShowWi ndow(BOOL bShow, UlNT n Status)CDialog:O nShowWi ndow(bShow, nStatus

27、);/ TODO: Add your message han dler code hereRefreshList();void CWorkerMgrDlg:O nDblclkListWorker(NMHDR* pNMHDR, LRESULT* pResult)OnM odify();*pResult = 0;void CWorkerMgrDlg:O nSearch()mistWorker.DeleteAllltems();UpdateData();int n Type;CStri ng strNumber, strName, strlD, strPassword;nType,if(!ADOSQ

28、LServer.GetWorker(m_ nNu mber,strName, strID,strPassword) MB_INFO ("没有找到此编号的工作人员!”);RefreshList();return ;strNumber.Format("%d", m_n Number);mistWorker.l nsertltem(O, strNumber);mistWorker.SetltemText(0, 1, strName);mistWorker.SetltemText(0, 2, strID);switch (n Type) case 0:mistWorker

29、.SetltemText(0, 3,"销售员");break;case 1:mistWorker.SetltemText(0, 3,"进货员");break;case 2:mistWorker.SetltemText(0, 3,"会计");break;case 3:mistWorker.SetltemText(0, 3,"经理");break;default:mistWorker.SetltemText(0, 3,"未知类型");break;void CWorkerMgrDlg:O nSearc

30、hAII()RefreshList();4、油库信息管理界面与实现代码:图5.4油库信息管理界面实现代码如下:BOOL CDepotMgrDlg:OnlnitDialog()CDialog:O nlni tDialog();const char *list_colu mn=II厶白戶、II编号,"名称","位置","容量",1111;int i=0;while (*list_columni != 0x00) mistDepot.l nsertColu mn (i, list_colu mn i+, LVCFMT_LEFT, 100);

31、mistDepot.SetExte ndedStyle(LVS_EX_FULLROWSELECT);return TRUE; / return TRUE uni ess you set the focus to a con trol/ EXCEPTION: OCX Property Pages should return FALSEvoid CDepotMgrDlg:O nAdd() int nNu mber = -1;if (!ADOSQLServer.AutoAssig nNu mber("Depot", nNu mber) MB_ERROR(”无法添加油库信息,可能是

32、数据库已满!”);return ;CDepotl nfoDIg depot In foDIg;depotl nfoDlg.m_ nNu mber = nNu mber;if (depotI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.AddNewDepot(depotI nfoDIg.m _nNu mber,depotI nfoDlg.m_strName,depotI nfoDlg.m_strLocati on,depot In foDlg.m_fCapacity )MB_ERROR("添加油库信息失败!”);RefreshList();vo

33、id CDepotMgrDlg:O nM odify() int nItem = mistDepot.GetSelectio nM ark();if (nI tem = -1)return ;CDepotI nfoDIg depot In foDlg;CStri ng strNumber = mistDepot.GetltemText( nltem, 0);GET_INT(depotI nfoDlg.m_nNumber, strNumber);ADOSQLServer.GetDepot(depot In foDlg.m_ nNu mber,depotI nfoDlg.m_strName,dep

34、otI nfoDlg.m_strLocati on,depotI nfoDlg.m_fCapacity );if (depotI nfoDlg.DoModal() = IDOK) if (!ADOSQLServer.ModifyDepot(depotI nfoDIg.m _nNu mber,depotI nfoDlg.m_strName,depotI nfoDlg.m_strLocati on,depot In foDlg.m_fCapacity )MB_ERROR(”修改油库信息失败!”);RefreshList();void CDepotMgrDlg:O nRemove() int nIt

35、em = mistDepot.GetSelectio nM ark();if (nI tem = -1)return ;int nNu mber;CStri ng strNumber = mistDepot.GetltemText( nltem, 0);GET_INT( nNu mber, strNumber);if (MB_QUERY(” 确定要删除此项么?") = IDYES) if (!ADOSQLServer.RemoveDepot(nNu mber)MB_ERROR(”删除油库信息失败!”);RefreshList();void CDepotMgrDlg:RefreshLi

36、st() mistDepot.DeleteAllltems();CStri ngArray strNumber, strName, strLocatio n, strCapacity;ADOSQLServer.GetDepots(strNumber, strName, strLocatio n, strCapacity); for (int i=O;i<strNumber.GetSize();i +) mistDepot.l nsertltem(i, strNumber.GetAt(i);mistDepot.SetltemText(i, 1, strName.GetAt(i);mistD

37、epot.SetltemText(i, 2, strLocatio n.GetAt(i);mistDepot.SetltemText(i, 3, strC apacity.GetAt(i);void CDepotMgrDlg:O nShowWi ndow(BOOL bShow, UINT n Status)CDialog:O nShowWi ndow(bShow, nStatus);RefreshList();void CDepotMgrDlg:O nDblclkListDepot(NMHDR* pNMHDR, LRESULT* pResult)OnM odify();*pResult = 0

38、;5、会员信息管理界面:其实现类似工作人员信息管理模块,界面如图22,同时还要创建能查询会员等级的会员等级模块,以及添加会员信息的模块图5.5会员信息管理界面5.3系统主要功能实现1.前台前台仅包括工作人员查询等必须且仅需的功能,尽可能地做到简化操作程 序,利于管理员快捷、准确地进行操作。2. 后台充分利用数据库的大容量、高效率等特点,为用户提供强大的功能支持,对 油品入库业务、客户管理业务进行管理以及其他相关的管理6总结与展望6.1收获与体会此加油站管理系统既能对工作人员进行管理,对不同的工作人员根据职位的 不同执行不同的职能,还能管理油品的购进与销售以及对账目进行管理,同时该系统还能对某段

39、时间内的进货和销售油品的情况做记录,方便管理员的查找。此加油站管理系统是一个组织比较好,功能较完善的系统,它使复杂工作简单化, 其最大特点就是能根据顾客的消费情况设置不同的等级,使顾客能享受不同的优 惠。通过这次课程设计,我更加熟练的掌握了使用 ORACLE和VC+6.0进行数 据库软件开发的方法,加深了对数据库课程知识的理解,同时也巩固了所学的 VC+知识,最重要的是还学会了如何在 VC中编写好程序后与数据库进行连接, 知道了 ADO的一些相关知识,指导如何通过 ADO对数据库进行连接。由于时 间仓促,软件还有很多不足之处,如:查询部分不够完善,不能及时查询某种油 品某段时间内总获利等,同时

40、数据库还没有油品购进厂商。由于知识不够全面, 对有些功能未能实现。在平时学习中很少有这样的实践, 课程设计中发现自己懂得还甚少, 课堂上 所学知识不能很好的应用于实际中,在今后的学习中我要尽量加强理论与实践的 结合,通过不断的摸索来弥补自己在软件制作方面的差距。在这次课程设计中,让我发现在系统设计时,大方向的设计才是主要的,只 有在系统开发之前的对系统所表述的问题有充分的认识的情况下开始系统的设 计和实现才能做出预期的系统。而系统实现阶段遇到的技术问题是可以通过各种 渠道来解决的,它比实现阶段遇到的系统结构问题要容易解决的多。在实现阶段,对数据的认识又是非常重要的,因为它决定了系统的耦合和内聚

41、的成度, 这点在 应用程序的设计阶段能够充分的表现出来。应用程序作为最后实现的部分,它的是面向最终用户的,所以需要一定的图形界面和适用性, 但我在这一点上做的还 远远不够,在今后的系统设计中要努力改善。 最后,我们还要感谢学校的支持和 老师的有益帮助,尤其是指导我的满君丰满老师,对我的帮助是非常大的,这 样才能让我更加顺利和完善地完成了图书信息管理系统的设计和开发工作。6.2未来的展望在这次的系统设计和开发,让我认识了三层体系结构设计的系统开发经历和经验,这对我以后进行的系统开发有很大的帮助。 中间件作为时下最流行的应用 开发方向之一,它所表现出来的功能和技术, 对我们产生了很大的吸引力,这也

42、 是我们之所以选择层次的方式来实现此次的系统设计的原因,同时也为我们在今后学习方向提供了很高的参考价值。严格按照软件工程和软件开发标准来开发系统是很有必要的,数据库的开发要避免产生读写数据时的冲突,应用程序开发遇到的问题要多参考网络上的资 料,这是很有必要,在今后的系统开发中我们会把它们作为实施的重要参考。源代码附录7.1系统与数据库交互代码#i nclude "StdAfx.h"#i nclude "ADODataBase_SQLServer.h"HRESULT CADODataBase_SQLServer:l nit()if(FAILED(CADOD

43、ataBase:I nit()return E_UNEXPECTED;SetProvider("sqloledb");return S_OK;_RecordsetPtr CADODataBase_SQLServer:ExecuteQuery(CStri ng strQuery)memset( mpQuery, 0, 1024);strcpy(mpQuery, strQuery.GetBuffer(1024);strQuery.ReleaseBuffer();return CADODataBase:ExecuteQuery( mpQuery);int CADODataBase

44、_SQLServer:GetWorkers(CStri ngArray &strNumber,CStri ngArray& strName, CStri ngArray &strID, CStri ngArray & strType, CStri ngArray &strPassword)CStri ng strQuery;strQuery.Format("select * from Worker");if (!Query(strQuery) return 0;int nCount = 0;while (!lsE ndOfFile()

45、 GetO neRow(5);strNumber.Add(STRING(m_varO);strName.Add(STRING(m_var1);strlD.Add(STRING(m_var2);strType.Add(STRING(m_var3);strPassword.Add(STRING(m_var4);m_pRS->MoveNext();nCount +;retur n nCount;BOOL CADODataBase_SQLServer:AddNewDepot(i nt nNu mber, CStri ng strName, CStri ng strLocati on, float

46、 &fCapacity)CStri ng strQuery;strQuery.Format("i nsert into Depot values(%d,'%s','%s',%.2f)",nNu mber,strName,strLocati on,fCapacity);try Query(strQuery);catch(.) return FALSE;return TRUE;BOOL CADODataBase_SQLServer:ModifyDepot(intnNumber, CString strName, CStringstrLoc

47、ati on, float &fCapacity)CStri ng strQuery;strQuery.Format("update Depot set n ame = '%s', locati on = '%s', capacity = %.2f wherenu mber = %d",strName,strLocati on,fCapacity,nNu mber);try Query(strQuery);catch(.) return FALSE;return TRUE;BOOLCADODataBase_SQLServer:GetC

48、urre ntCo nte nt(i ntn DepotNumber,intn GasTypeNumber, float &fCurCo ntent)CStri ng strQuery;if (n GasTypeNumber <= 0)strQuery.Format("select count(amount) from Storage where depot = %d", n DepotNumber);elsestrQuery.Format("select count(amount) from Storage where depot = %d and

49、 gas_type = %d", n DepotNumber, n GasTypeNumber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(1);if (lo ng)(m_var0) = 0) fCurCo ntent = 0;return TRUE;if (n GasTypeNumber <= 0)strQuery.Format("select sum(amount) from Storage where depot = %d", n DepotN

50、umber);elsestrQuery.Format("select sum(amount) from Storage where depot = %d and gas_type = %d", n DepotNumber, n GasTypeNumber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(1);fCurCo ntent = (float)m_var0;return TRUE;BOOL CADODataBase_SQLServer:GetDepot(int

51、nNumber, CString &strName, CString &strLocatio n, float &fCapacity)CStri ng strQuery;strQuery.Format("select * from Depot where nu mber = %d", nNu mber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(4);strName = STRING(m_var1);strLocatio n = STRING

52、(m_var2);fCap acity = (float)(m_var3);return TRUE;BOOL CADODataBase_SQLServer:GetDepotByName(CStringstrName, int &nNumber,CStri ng &strLocatio n, float &fCapacity)CStri ng strQuery;strQuery.Format("select * from Depot where n ame = '%s'", strName);if (!Query(strQuery) r

53、eturn FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(4);nNu mber = (Ion g)(m_var0);strLocatio n = STRING(m_var2);fCap acity = (float)(m_var3);return TRUE;BOOL CADODataBase_SQLServer:RemoveDepot(i nt nNumber)CStri ng strQuery;strQuery.Format("delete from Depot where nu mber = %d", nNu mber

54、);Query(strQuery);return TRUE;int CADODataBase_SQLServer:GetDepots(CStri ngArray &strNumber,CStri ngArray& strName, CStri ngArray &strLocatio n, CStri ngArray &strCapacity)CStri ng strQuery;strQuery.Format("select * from Depot");if (!Query(strQuery) return 0;int nCount = 0;

55、while (!lsE ndOfFile() GetO neRow(4);strNumber.Add(STRING(m_varO); strName.Add(STRING(m_var1);strLocati on .Add(STRING(m_var2);strCapacity.Add(STRING(m_var3);m_pRS->MoveNext();nCount +;retur n nCount;BOOL CADODataBase_SQLServer:GetMember(int nNumber, CString &strName, CString &strlD, CStri ng & strCarNumber, float &fExp)CStri ng strQuery;strQuery.Format("select * from Member where nu mber = %d", nNu mber);if (!Query(strQuery) return FALSE;if (IsE ndOfFile()return FALSE;GetO neRow(5)

温馨提示

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

评论

0/150

提交评论