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

下载本文档

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

文档简介

目录TOC\o"1-5"\h\z目录 I\o"CurrentDocument"一•课程设计简介 1\o"CurrentDocument"1.1课程设计的目的 1\o"CurrentDocument"1.2课程设计的内容 1\o"CurrentDocument"2系统分析 3\o"CurrentDocument"2.1用户工作流程 3\o"CurrentDocument"2.2用户业务需求 3\o"CurrentDocument"3系统设计 4\o"CurrentDocument"3.1设计思想 4\o"CurrentDocument"3.2系统功能结构图 4\o"CurrentDocument"3.3模块功能设计 5\o"CurrentDocument"4系统数据库设计 6\o"CurrentDocument"4.1系统数据库的建立 6\o"CurrentDocument"4.2系统E-R图 6\o"CurrentDocument"4.3存储过程设计 84.4触发器的设计 9\o"CurrentDocument"4.5数据库的连接 10\o"CurrentDocument"5系统实现 11\o"CurrentDocument"5.1系统实现工具与支持平台 11\o"CurrentDocument"5.2系统主要的功能界面与实现代码 11\o"CurrentDocument"5.3系统主要功能实现 21\o"CurrentDocument"6总结与展望 22\o"CurrentDocument"6.1收获与体会 22\o"CurrentDocument"6.2未来的展望 22\o"CurrentDocument"7源代码附录 237.1系统与数据库交互代码 23\o"CurrentDocument"参考文献 34致谢 35\o"CurrentDocument"课程设计检查表 364•课程设计简介1.1课程设计的目的随着人类社会的进步和科学技术的发展,人们生活水平也在不断的提高,拥有车的人越来越多,这又影响着油的耗量急剧增大,加油站也也来越多。 现在人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,人们已经习惯快速的获得信息以及完成各种事情,加油站的反战中当然也要考虑这些因素。本次设计的加油站管理系统就是为满足人们的需求而设计的,此加油占管理系统是为了解决人们生活中加油的快捷、方便以及减轻加油站管理人员和其他工作人员工作的负担,帮助他们很好的管理和工作的顺利进行。1.2课程设计的内容本系统采用的是微软公司的MicrosoftVisualC++6.0开发工具做为开发系统程序。在连接数据库上,利用ADO对象模型,创建几个简单的对象和数据来源进行连接,然后从中取得所需要的数据,进行数据访问操作后保存。DAO或DAO或RDO对象来访问数据来源,都会对这些对象模型众多而且复杂的组成结构印象深刻。但利用ADO对象模型,就可以只创建几个简单的对象和数据来源进行连接,然后从中取得所需要的数据,进行数据访问操作后保存。ADO(ActiveXDataObjects)对象模型主要由三个对象成员: Connection、Command与Recordset对象;以及三个集合对象:Errors、Parameters与Fields对象所组成。ADO对象模型与DAO、RDO另一个较大的差异,在于某些ADO对象可以直接创建而不需依据上下层按顺序产生,比如我们可以直接创建一个 Command对象而不需要先行创建该对象的上层 Connection对象,ADO会在该Comman对象产生时自动创建上层Connection对象。此加油站要完成以下任务:实现用户的登陆,以很好管理工作人员的分工。实现系统的管理,包括管理工作人员信息,油库信息,会员信息,会员等级信息等。能够记录油品购进和销售情况,剩余量等信息。工作人员能够直接查询库存情况,会计人员能够对账目进行管理。此系统还要能够实现数据库对个功能模块的访问。其实现的具体任务还包括:在连接数据库后先要有登陆界面,在确认用用户身份后,符合身份的工作人员便可登陆,进入系统主界面,可以在主界面上访问个功能模块。各功能键包括:工作人员管理、油品信息管理、油品类型信息管理、会员信息管理、添加进货记录、添加销售记录、库存查询、账目管理;通过工作人员信息管理模块查询各工作人员信息;通过对油品的管理模块查询油品的单价,销售储量,存储地等,通过对会员的管理模块能查询顾客等级、花费等。2系统分析2.1用户工作流程下面是对本企业的业务流程的描述:2.2用户业务需求此系统要满足用户的如下需求:对不同工作类型的员工要能辨别其身份,根据身份限制其权限,设置完成其工作任务。⑵当购进油时要记录油的相关信息,对不同的油放入相应的油库,同时记录其价格,储量等。要记录销售信息,同时根据销售情况对油库灯做相应的修改对不同的顾客根据其购买油量,消费金额等给其设置相应的会员等级,根据等级的不同给予不同的优惠政策对油库进行编号,不同的油库存放不同的油,可根据用户需要快速在相应油库找到所需的油3系统设计3.1设计思想系统分成前台和后台几个相对进程,这些进程都进行集中式管理。整个系统采用模块化结构设计,并且有较强的可操作性和扩展性。采用合理的数据流设计思想,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2系统功能结构图根据对管理系统进行可行性分析和结构化程序设计的要求, 可得到系统的总体结构如图3-1所示:加油站管理系统的分功能模块如图 3.2所示:3.3模块功能设计系统功能设计是设计一个加油站管理系统,要求满足油品管理的基本要求、油品销售管理的基本要求、工作人员管理的基本要求、油库管理的基本要求、 销售管理的基本要求以及系统管理的基本要求。并且能够实现方便的扩张,满足加油站发展的需求,能够保障加油站管理数据的安全,准确对于工作人员有不同的职位,不同职位人员所拥有的工作权限也不一样,对于油有购油信息、出售情况、有的类别以及油量的多少等情况,能设置一些优惠政策,比如会员可以优惠。本系统共包括五大模块,分别是用户登录模块、系统管理模块、经销操作模块、查询操作模块、数据库防护问模块。每个模块的功能如下:(1)用户登陆,根据不同用户身份启用不同的职务⑵系统管理,包括工作人员信息管理、油库信息管理、油品信息管理、会员信息、会员等级信息管理。进销操作,包括进货信息和销售信息。查询操作,包括库存查询和账目管理。数据库访问模块,提供各模块数据库操作接口4系统数据库设计4.1系统数据库的建立数据库的设计尽量的实现与应用程序做到最低等级的耦合, 按照三层模式两级联系的方式设计数据库,把数据库设计成层次清晰的,高效的实用数据库。 在该系统的数据库设计方面,把数据库的设计分为四层:基本表、存储过程、触发器。其中触发器的作用是这个表修改后,自动触发到另外一个表,这样可以减少代码的编写。因为该系统是采用三层架构设计的,可通过应用服务器的扩展来实现新功能的添加。而在该课程设计的内容定义方面,保证了数据的独立性,该系统对数据记录的操作也因为其课程设计中定义的数据操作方式和操作内容而注定不会产生脏数据及数据读写的不一致性,故在数据库设计方面采用触发器。4.2系统E-R图数据流图第二层数据流图如图4.2~4.4所示:E-R模型根据数据流图设计E-R模型,如图4.5所示:3、将产生的E-R模型转化为关系模型如下:工作人员(工作号,姓名,身份证号,员工类型,密码)油库管理(油库编号,工作号)油库(油库编号,名称,地点,容量)油品(油品编号,名称,价格,储量,油库编号).._会员(会员编号,姓名,身份证号,等级名称,车牌号,总消费额)会员等级(等级名称,折扣,最低消费额)进货油品(油品编号,工作号,进货时间,油库编号,.一进货量,单价)销售油品(油品编号,工作号,销售时间,油库编号,单价,客户,折扣,销售量)4.3存储过程设计1、创建用于油品入库的存储过程:CREATORREPLACEROCEDUREGAS_InfoAdd(pgas_typeINnumber(8),pdepotINvarchar(50),pamountINvarchar(30),ppriceINfloat,pget_dateINdate,pworkerINvarchar(30))ASBEGINInsertintoGas_lnfovalues(pgas_type,pdepot,pamount,pprice,pprice,pget_date,pworker);ENDGAS_InfoAdd;2、创建添加工作人员的存储过程:CREATEORREPLACEPROCEDUREworker_InfoAdd(pnumberINnumber(8),pnameINvarchar(25),pidINnumberr(18),ptypeINvarchar(20),ppasswordINvarchar(12))ASBEGINInsertintoworker_Infovalues(pnumber,pname,pid,ptype,ppassword)ENDworker_InfoAdd;4.4触发器的设计1、仓U建一个触发器,实现当一个油库撤销时,修改相应的油品信息的触发器:CREATEORREPLACETRRIGERUP_GAS(BEFOREDELETEONDEPOTFOREACHROWBEGINUpdateGastypewheredepot.number=Gastype.numberAndnumber=:oldnumber;EndUP_GAS;4.5数据库的连接应用程序与OraclelOg数据库的连接是通过创建ADO数据源,然后在程序中利用代码与数据库建立连接来实现的。具体实现方法是:在模块中声明调用 ADO连接控件,这样便能在任何时间连接数据库了。 使用ADOConnection对象连接到OraclelOg。在查询等按钮的单击事件中访问数据库。可以使用应用程序配置文件建立一条到数据库服务器的连接, 返回一个关键字ConnectionString,在实体数据链路层定义一个用于存储过程的一个基类DBdata.cs在这个基类中接受该关键字ConnectionString,使用SqlConnection连接数据库。配置文件连接数据库的代码:<addkey="ConnectionString" value="server=(local);database=Supermarket;uid=sa;pwd="/>。存储过程基类接受该关键字的代码:System.Configuration.ConfigurationSettings.AppSettings[ "ConnectionString"].ToString();5系统实现5.1系统实现工具与支持平台用户界面:本系统采用MicrosoftVisualC++6.0设计,用户交互界面采用的是基于Windows的窗口界面。硬件要求:运行本系统的硬件基本要求如下:CPU:IntelP4及以上;内存:1024MB及以上;硬盘:40GB及以上。软件要求:数据库服务器:Oracle10g。5.2系统主要的功能界面与实现代码下面为运行后的界面图:1、系统的登录界面与代码:实现代码如下:voidCgasStationDlg::OnLogin(){CstringstrBtnText;m_btnLogin.GetWindowText(strBtnText);if(strBtnText==登陆”{CloginDlgloginDlg;if(loginDlg.DoModal()!=IDOK)return;if(!ADOSQLServer.lsValidWorkerPassword(loginDlg.m_nNumber,loginDlg.m_strPassword)){MB_ERROR(密码错误,登陆失败!”;return;}oooooooooooelse{if(MB_QUERY( 确定要注销当前用户么? ”==IDNO)return;m_btnLogin.SetWindowText(登陆”;m_btnWorkerMgr.EnableWindow(FALSE);ooooooooooom_btnLogin.EnableWindow(FALSE);}}2、加油站管理系统主窗口界面如下:3、工作人员信息管理模块的界面与代码:实现代码如下:BOOLCWorkerMgrDlg::OnlnitDialog(){CDialog::OnlnitDialog();constchar*list_column[]={II厶白戶、II编号,"姓名","身份证号","类型",1111};inti=0;while(*list_column[i]!=0x00){m」istWorker.lnsertColumn(i,list_column[i++],LVCFMT_LEFT,100);}m」istWorker.SetExtendedStyle(LVS_EX_FULLROWSELECT);returnTRUE;}voidCWorkerMgrDlg::OnAdd(){intnNumber=-1;if(!ADOSQLServer.AutoAssignNumber("Worker",nNumber)){MB_ERROR("无法添加工作人员信息,可能是数据库已满! ”);return;}CWorkerInfoDlgworkerInfoDlg;workerInfoDIg.m_nNumber=nNumber;if(workerInfoDlg.DoModal()==IDOK){if(!ADOSQLServer.AddNewWorker(workerInfoDIg.m_nNumber,workerInfoDlg.m_strName,workerInfoDlg.m_strlD,workerInfoDIg.m_nWorkerType,workerInfoDlg.m_strPassword)){ MB_ERROR添加工作人员信息失败! ”);}RefreshList();}}voidCWorkerMgrDlg::OnModify(){intnItem=m」istWorker.GetSelectionMark();if(nItem==-1)return;CWorkerInfoDlgworkerInfoDlg;CStringstrNumber=m」istWorker.GetltemText(nltem,0);GET_INT(workerInfoDlg.m_nNumber,strNumber);ADOSQLServer.GetWorker(workerInfoDIg.m_nNumber,workerInfoDlg.m_strName,workerInfoDlg.m_strlD,workerInfoDIg.m_nWorkerType,workerInfoDlg.m_strPassword);if(workerInfoDlg.DoModal()==IDOK){

if(!ADOSQLServer.ModifyWorker(workerlnfoDIg.m_nNumber,workerlnfoDlg.m_strName,workerInfoDlg.m_strlD,workerInfoDIg.m_nWorkerType,workerInfoDlg.m_strPassword)){MB_ERROR修改工作人员信息失败! ”);}RefreshList();}}voidCWorkerMgrDlg::OnRemove(){intnItem=m」istWorker.GetSelectionMark();if(nItem==-1)return;intnNumber;CStringstrNumber=m」istWorker.GetltemText(nltem,0);GET_INT(nNumber,strNumber);if(MB_QUERY(”确定要删除此项么? ")==IDYES){if(!ADOSQLServer.RemoveWorker(nNumber)){MB_ERROR删除工作人员信息失败! ”);}RefreshList();}}voidCWorkerMgrDlg::RefreshList(){ m」istWorker.DeleteAllltems();strPassword);CStringArraystrNumber,strName,strlD,strType,strPassword;strPassword);ADOSQLServer.GetWorkers(strNumber,strName,strlD,strType,for(inti=O;i<strNumber.GetSize();i++){m」istWorker.lnsertltem(i,strNumber.GetAt(i));m」istWorker.SetltemText(i,1,strName.GetAt(i));m」istWorker.SetltemText(i,2,strlD.GetAt(i));intnType;GET_INT(nType,strType.GetAt(i));switch(nType){case0:m」istWorker.SetltemText(i,3," 销售员");break;case1:m」istWorker.SetltemText(i,3," 进货员");break;case2:m」istWorker.SetltemText(i,3," 会计");break;case3:m」istWorker.SetltemText(i,3," 经理");break;default:m」istWorker.SetltemText(i,3," 未知类型");break;}}}voidCWorkerMgrDlg::OnShowWindow(BOOLbShow,UlNTnStatus){ CDialog::OnShowWindow(bShow,nStatus);//TODO:AddyourmessagehandlercodehereRefreshList();}voidCWorkerMgrDlg::OnDblclkListWorker(NMHDR*pNMHDR,LRESULT*pResult){ OnModify();*pResult=0;}voidCWorkerMgrDlg::OnSearch(){ m」istWorker.DeleteAllltems();UpdateData();intnType;CStringstrNumber,strName,strlD,strPassword;nType,if (!ADOSQLServer.GetWorker(m_nNumber, strName,strID,nType,strPassword)){MB_INFO("没有找到此编号的工作人员! ”);RefreshList();return;}strNumber.Format("%d",m_nNumber);m」istWorker.lnsertltem(O,strNumber);m」istWorker.SetltemText(0,1,strName);m」istWorker.SetltemText(0,2,strID);switch(nType){case0:m」istWorker.SetltemText(0,3," 销售员");break;case1:m」istWorker.SetltemText(0,3," 进货员");break;case2:m」istWorker.SetltemText(0,3," 会计");break;case3:m」istWorker.SetltemText(0,3," 经理");break;default:m」istWorker.SetltemText(0,3," 未知类型");break;}}voidCWorkerMgrDlg::OnSearchAII(){RefreshList();4、油库信息管理界面与实现代码:实现代码如下:BOOLCDepotMgrDlg::OnlnitDialog()CDialog::OnlnitDialog();constchar*list_column[]={II厶白戶、II编号,"名称","位置","容量",1111};inti=0;while(*list_column[i]!=0x00){m」istDepot.lnsertColumn(i,list_column[i++],LVCFMT_LEFT,100);}m」istDepot.SetExtendedStyle(LVS_EX_FULLROWSELECT);returnTRUE;//returnTRUEuniessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCDepotMgrDlg::OnAdd(){intnNumber=-1;if(!ADOSQLServer.AutoAssignNumber("Depot",nNumber)){MB_ERROR(”无法添加油库信息,可能是数据库已满! ”);return;}CDepotlnfoDIgdepotInfoDIg;depotlnfoDlg.m_nNumber=nNumber;if(depotInfoDlg.DoModal()==IDOK){if(!ADOSQLServer.AddNewDepot(depotInfoDIg.m_nNumber,depotInfoDlg.m_strName,depotInfoDlg.m_strLocation,depotInfoDlg.m_fCapacity)){MB_ERROR("添加油库信息失败! ”);}RefreshList();}}voidCDepotMgrDlg::OnModify(){intnItem=m」istDepot.GetSelectionMark();if(nItem==-1)return;CDepotInfoDIgdepotInfoDlg;CStringstrNumber=m」istDepot.GetltemText(nltem,0);GET_INT(depotInfoDlg.m_nNumber,strNumber);ADOSQLServer.GetDepot(depotInfoDlg.m_nNumber,depotInfoDlg.m_strName,depotInfoDlg.m_strLocation,depotInfoDlg.m_fCapacity);if(depotInfoDlg.DoModal()==IDOK){if(!ADOSQLServer.ModifyDepot(depotInfoDIg.m_nNumber,depotInfoDlg.m_strName,depotInfoDlg.m_strLocation,depotInfoDlg.m_fCapacity))MB_ERROR(”修改油库信息失败! ”);}RefreshList();}}voidCDepotMgrDlg::OnRemove(){intnItem=m」istDepot.GetSelectionMark();if(nItem==-1)return;intnNumber;CStringstrNumber=m」istDepot.GetltemText(nltem,0);GET_INT(nNumber,strNumber);if(MB_QUERY(”确定要删除此项么? ")==IDYES){if(!ADOSQLServer.RemoveDepot(nNumber)){MB_ERROR(”删除油库信息失败! ”);}RefreshList();}}voidCDepotMgrDlg::RefreshList(){m」istDepot.DeleteAllltems();CStringArraystrNumber,strName,strLocation,strCapacity;ADOSQLServer.GetDepots(strNumber,strName,strLocation,strCapacity);for(inti=O;i<strNumber.GetSize();i++){m」istDepot.lnsertltem(i,strNumber.GetAt(i));m」istDepot.SetltemText(i,1,strName.GetAt(i));m」istDepot.SetltemText(i,2,strLocation.GetAt(i));m」istDepot.SetltemText(i,3,strCapacity.GetAt(i));}}voidCDepotMgrDlg::OnShowWindow(BOOLbShow,UINTnStatus)CDialog::OnShowWindow(bShow,nStatus);RefreshList();}voidCDepotMgrDlg::OnDblclkListDepot(NMHDR*pNMHDR,LRESULT*pResult){ OnModify();*pResult=0;}5、会员信息管理界面:其实现类似工作人员信息管理模块,界面如图 22,同时还要创建能查询会员等级的会员等级模块,以及添加会员信息的模块5.3系统主要功能实现1.前台前台仅包括工作人员查询等必须且仅需的功能,尽可能地做到简化操作程序,利于管理员快捷、准确地进行操作。2.后台充分利用数据库的大容量、高效率等特点,为用户提供强大的功能支持,对油品入库业务、客户管理业务进行管理以及其他相关的管理6总结与展望6.1收获与体会此加油站管理系统既能对工作人员进行管理,对不同的工作人员根据职位的不同执行不同的职能,还能管理油品的购进与销售以及对账目进行管理, 同时该系统还能对某段时间内的进货和销售油品的情况做记录, 方便管理员的查找。此加油站管理系统是一个组织比较好,功能较完善的系统,它使复杂工作简单化,其最大特点就是能根据顾客的消费情况设置不同的等级,使顾客能享受不同的优惠。通过这次课程设计,我更加熟练的掌握了使用ORACLE和VC++6.0进行数据库软件开发的方法,加深了对数据库课程知识的理解,同时也巩固了所学的VC++知识,最重要的是还学会了如何在VC中编写好程序后与数据库进行连接,知道了ADO的一些相关知识,指导如何通过ADO对数据库进行连接。由于时间仓促,软件还有很多不足之处,如:查询部分不够完善,不能及时查询某种油品某段时间内总获利等,同时数据库还没有油品购进厂商。由于知识不够全面,对有些功能未能实现。在平时学习中很少有这样的实践,课程设计中发现自己懂得还甚少,课堂上所学知识不能很好的应用于实际中,在今后的学习中我要尽量加强理论与实践的结合,通过不断的摸索来弥补自己在软件制作方面的差距。在这次课程设计中,让我发现在系统设计时,大方向的设计才是主要的,只有在系统开发之前的对系统所表述的问题有充分的认识的情况下开始系统的设计和实现才能做出预期的系统。而系统实现阶段遇到的技术问题是可以通过各种渠道来解决的,它比实现阶段遇到的系统结构问题要容易解决的多。 在实现阶段,对数据的认识又是非常重要的,因为它决定了系统的耦合和内聚的成度,这点在应用程序的设计阶段能够充分的表现出来。 应用程序作为最后实现的部分,它的是面向最终用户的,所以需要一定的图形界面和适用性,但我在这一点上做的还远远不够,在今后的系统设计中要努力改善。最后,我们还要感谢学校的支持和老师的有益帮助,尤其是指导我的满君丰满老师,对我的帮助是非常大的,这样才能让我更加顺利和完善地完成了图书信息管理系统的设计和开发工作。6.2未来的展望在这次的系统设计和开发,让我认识了三层体系结构设计的系统开发经历和经验,这对我以后进行的系统开发有很大的帮助。中间件作为时下最流行的应用开发方向之一,它所表现出来的功能和技术,对我们产生了很大的吸引力,这也是我们之所以选择层次的方式来实现此次的系统设计的原因, 同时也为我们在今后学习方向提供了很高的参考价值。严格按照软件工程和软件开发标准来开发系统是很有必要的, 数据库的开发要避免产生读写数据时的冲突,应用程序开发遇到的问题要多参考网络上的资料,这是很有必要,在今后的系统开发中我们会把它们作为实施的重要参考。源代码附录7.1系统与数据库交互代码#include"StdAfx.h"#include"ADODataBase_SQLServer.h"HRESULTCADODataBase_SQLServer::lnit(){if(FAILED(CADODataBase::Init()))returnE_UNEXPECTED;SetProvider("sqloledb");returnS_OK;}_RecordsetPtrCADODataBase_SQLServer::ExecuteQuery(CStringstrQuery){memset(m」pQuery,0,1024);strcpy(m」pQuery,strQuery.GetBuffer(1024));strQuery.ReleaseBuffer();returnCADODataBase::ExecuteQuery(m」pQuery);}intCADODataBase_SQLServer::GetWorkers(CStringArray&strNumber, CStringArray&strName,CStringArray&strID,CStringArray&strType,CStringArray&strPassword){CStringstrQuery;strQuery.Format("select*fromWorker");if(!Query(strQuery)){return0;}intnCount=0;while(!lsEndOfFile()){GetOneRow(5);strNumber.Add(STRING(m_var[O]));strName.Add(STRING(m_var[1]));strlD.Add(STRING(m_var[2]));strType.Add(STRING(m_var[3]));strPassword.Add(STRING(m_var[4]));m_pRS->MoveNext();nCount++;}returnnCount;}BOOLCADODataBase_SQLServer::AddNewDepot(intnNumber,CStringstrName,CStringstrLocation,float&fCapacity){CStringstrQuery;strQuery.Format("insertintoDepotvalues(%d,'%s','%s',%.2f)",nNumber,strName,strLocation,fCapacity);try{Query(strQuery);}catch(...){returnFALSE;}returnTRUE;}BOOLCADODataBase_SQLServer::ModifyDepot(int nNumber,CStringstrName,CStringstrLocation,float&fCapacity){CStringstrQuery;strQuery.Format("updateDepotsetname='%s',location='%s',capacity=%.2fwherenumber=%d",strName,strLocation,fCapacity,nNumber);try{Query(strQuery);}catch(...){returnFALSE;}returnTRUE;}BOOL CADODataBase_SQLServer::GetCurrentContent(int nDepotNumber, intnGasTypeNumber,float&fCurContent){CStringstrQuery;if(nGasTypeNumber<=0)strQuery.Format("selectcount(amount)fromStoragewheredepot=%d",nDepotNumber);elsestrQuery.Format("selectcount(amount)fromStoragewheredepot=%dandgas_type=%d",nDepotNumber,nGasTypeNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(1);if((long)(m_var[0])==0){fCurContent=0;returnTRUE;}if(nGasTypeNumber<=0)strQuery.Format("selectsum(amount)fromStoragewheredepot=%d",nDepotNumber);elsestrQuery.Format("selectsum(amount)fromStoragewheredepot=%dandgas_type=%d",nDepotNumber,nGasTypeNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(1);fCurContent=(float)m_var[0];returnTRUE;}BOOLCADODataBase_SQLServer::GetDepot(intnNumber,CString&strName,CString&strLocation,float&fCapacity){CStringstrQuery;strQuery.Format("select*fromDepotwherenumber=%d",nNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(4);strName=STRING(m_var[1]);strLocation=STRING(m_var[2]);fCapacity=(float)(m_var[3]);returnTRUE;}BOOLCADODataBase_SQLServer::GetDepotByName(CString strName,int&nNumber,CString&strLocation,float&fCapacity){CStringstrQuery;strQuery.Format("select*fromDepotwherename='%s'",strName);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(4);nNumber=(Iong)(m_var[0]);strLocation=STRING(m_var[2]);fCapacity=(float)(m_var[3]);returnTRUE;}BOOLCADODataBase_SQLServer::RemoveDepot(intnNumber){CStringstrQuery;strQuery.Format("deletefromDepotwherenumber=%d",nNumber);Query(strQuery);returnTRUE;}intCADODataBase_SQLServer::GetDepots(CStringArray&strNumber, CStringArray&strName,CStringArray&strLocation,CStringArray&strCapacity){CStringstrQuery;strQuery.Format("select*fromDepot");if(!Query(strQuery)){return0;}intnCount=0;while(!lsEndOfFile()){GetOneRow(4);strNumber.Add(STRING(m_var[O]));strName.Add(STRING(m_var[1]));strLocation.Add(STRING(m_var[2]));strCapacity.Add(STRING(m_var[3]));m_pRS->MoveNext();nCount++;}returnnCount;}BOOLCADODataBase_SQLServer::GetMember(intnNumber,CString&strName,CString&strlD,CString&strCarNumber,float&fExp){CStringstrQuery;strQuery.Format("select*fromMemberwherenumber=%d",nNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(5);strName=STRING(m_var[1]);strID=STRING(m_var[2]);strCarNumber=STRING(m_var[3]);fExp=(float)(m_var[4]);returnTRUE;}BOOLCADODataBase_SQLServer::GetMemberAgio(intnNumber,float&fAgio){CStringstrQuery;floatfExp;strQuery.Format("selectexpenditurefromMemberwherenumber=%d",nNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(1);fExp=(float)(m_var[0]);CStringArraystrTemp,strAgio,strExp;intnCount=GetMemberLevels(strTemp,strTemp,strAgio,strExp);if(nCount<=1){fAgio=1;returnTRUE;}float*agio=newfloat[nCount];float*exp=newfloat[nCount];fAgio=1.0;for(inti=0;i<strAgio.GetSize();i++){GET_FLOAT(agio[i],strAgio.GetAt(i));GET_FLOAT(exp[i],strExp.GetAt(i));if(fExp>=exp[i]){fAgio=agio[i];break;}}delete[]agio;delete[]exp;returnTRUE;}BOOLCADODataBase_SQLServer::AddNewGasType(intnNumber,CStringstrName,float&fPrice){CStringstrQuery;strQuery.Format("insertintoGasTypevalues(%d,'%s',%.2f)",nNumber,strName,fPrice);try{Query(strQuery);}catch(...){returnFALSE;}returnTRUE;}BOOLCADODataBase_SQLServer::GetGasTypeByName(CStringstrName,int&nNumber,float&fPrice){CStringstrQuery;strQuery.Format("select*fromGasTypewherename='%s'",strName);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(3);nNumber=(Iong)(m_var[0]);fPrice=(float)(m_var[2]);returnTRUE;}BOOLCADODataBase_SQLServer::RemoveGasType(intnNumber){CStringstrQuery;strQuery.Format("deIetefromGasTypewherenumber=%d",nNumber);Query(strQuery);returnTRUE;}BOOLCADODataBase_SQLServer::AddNewMemberLeveI(intnNumber,CStringstrName,float&fAgio,float&fExp){CStringstrQuery;strQuery.Format("insertintoMemberLevelvalues(%d,'%s',%.2f,%0.2f)",nNumber,strName,fAgio,fExp);try{Query(strQuery);}catch(...){returnFALSE;}returnTRUE;}BOOLCADODataBase_SQLServer::ModifyMemberLevel(int nNumber,CStringstrName,float&fAgio,float&fExp){CStringstrQuery;strQuery.Format("updateMemberLevelsetname='%s',agio=%.2f,expenditure=%0.2fwherenumber=%d",strName,fAgio,fExp,nNumber);try{Query(strQuery);}catch(...){returnFALSE;}returnTRUE;}BOOLCADODataBase_SQLServer::GetMemberLevel(int nNumber,CString&strName,float&fAgio,float&fExp){CStringstrQuery;strQuery.Format("select*fromMemberLevelwherenumber=%d",nNumber);if(!Query(strQuery)){returnFALSE;}if(IsEndOfFile())returnFALSE;GetOneRow(4);strName=STRING(m_var[1]);fAgio=(float)(m_var[2]);fExp=(float)(m_var[3]);returnTRUE;}BOOLCADODataBase_SQLServer::RemoveMemberLevel(intnNumber){CStringstrQuery;strQuery.Format("deletefromMemberLevelwherenumber=%d",nNumber);Query(strQuery);returnTRUE;}intCADODataBase_SQLServer::GetMemberLevels(CStringArray &strNumber,CStringArray&strName,CStringArray&strAgio,CStringArray&strExp){CStringstrQuery;strQuery.Format("select*fromMemberLevelorderbyexpendituredesc");if(!Query(strQuery)){return0;}intnCount=0;while(!IsEndOfFile()){GetOneRow(4);strNumber.Add(STRING(m_var[O]));strName.Add(STRING(m_var[1]));CStringstrTemp;strTemp.Format("%.2f',(float)m_var[2]);strAgio.Add(strTemp);strTemp.Format("%.2f',(float)m_var[3]);strExp.Add(strTemp);m_pRS->MoveNext();nCount++;}returnnCount;intCADODataBase_SQLServer::GetStorages(CString strDepot,CString strGasType,CStringArray&strDepotName,CStringArray&strGasTypeName,CStringArray&strAmount){intnDepotNumber,nGasTypeNumber;CStringstrTemp;floatfTemp;nDepotNumber=nGasTypeNumber=0;if(strDepot!="全部"){if(!GetDepotByName(strDepot,nDepotNumber,strTemp,fTemp))return-1;}if(strGasType!="全部"){if(!GetGasTypeByName(strGasType,nGasTypeNumber,fTemp))return-1;}CStringstrQuery,strQueryCount;if(nDepotNumber!=0 &&nGasTypeNumber==0){strQueryCount.Format("select count(*)fromStoragewheredepot=%d",nDepotNumber);strQuery.Format("select*fromStoragewheredepot=%d",nDepotNumber);}elseif(nDepotNumber==0 &&nGasTypeNumber!=0){strQueryCount.Format("selectcount(*)fromStoragewheregas_type=%d",nGasTypeNumber);strQuery.Format("select*fromStoragewheregas_type=%d",nGasTypeNumber);}elseif(nDepotNumber!=0 &&nGasTypeNumber!=0){strQueryCount.Format("selectcount(*)fromStoragewheregas_type=%danddepot=%d",nGasTypeNumber,nDepotNumber);strQuery.Format("select*fromStoragewheregas_type=%danddepot=%d",nGasTypeNumber,nDepotNumber);}else{strQueryCount.Format("selectcount(*)fromStorage");strQuery.Format("select*fromStorage");}if(!Query(strQueryCount)){return-1;}GetOneRow(1

温馨提示

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

评论

0/150

提交评论