《企业用电管理系统设计24110.docx》由会员分享,可在线阅读,更多相关《企业用电管理系统设计24110.docx(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库课程实训(2016)数据库课程程实训报告告( 20115- 22016年度第2学期)题目: 企业用用电管理系系统 专业软件工程学生姓名成晓伟班级软件1411学号141000750994指导教师徐静完成日期2016.7.11目 录目 录21 课题内内容和要求求11.1课题题描述11.2 课课题要求12 需求分分析12.1 对对功能的规规定12.2 数数据需求分分析23 系统设设计33.1 功功能模块设设计33.2 数数据库概念念设计43.2.22 E-RR图43.3 数数据库逻辑辑设计53.4 数数据库物理理设计53.5 数数据库表间间联系64系统实现现64.1登陆陆模块实现现64.2查询
2、询模块实现现74.3 添添加模块实实现84.4 删删除模块实实现94.5 修修改模块实实现104.6 生生成电费单单模块实现现105 代码调调试与功能能测试115.1 测测试方案115.2 测测试结果126 收获与与体会16参考文献17附录18附录1源程程序部分清清单18 3企业用电管管理系统设设计1 课题内内容和要求求 1.1课题题描述系统设计的的的信息有有:(1) 用电企业(用用电企业编编号、用电电企业名、地地址、电话话、联系人人);(2) 电费信息(谷谷价、峰价价);(3) 用电情况(用用电企业编编号、谷电电量、峰电电量、年月月、年合计计用电量、年年合计用电电费)。1.2 课课题要求要求
3、能够进进行如下操操作:(1) 能够统计各各个用电企企业的月耗耗电量以及及电费;(2) 能够统计查查询各个用用电企业的的总的谷电电量和峰电电量;(3) 能够统计该该地区的峰峰谷电量比比例以及电电费情况;(4) 能维护基本本数据;(5) 用户分级管管理,人机机界面良好好。2 需求分分析2.1 对对功能的规规定1、理解需需求理解需求是是在问题及及其最终解解决方案之之间架设桥桥梁的第一一步。开发发者只有和和用户充分分理解了需需求之后才才能开始设设计系统,否否则,对需需求定义的的任何改进进,设计上上都必须大大量的返工工。下面是对系系统的终端端用户和客客户调研后后得到的需需求规格说说明书。(1)由于于使用
4、者为为相关电力力部门及学学习使用,系系统开始时时,便可以以进入到欢欢迎界面。(2)进入入到系统之之后,友好好的界面可可以很清晰晰的分为企企业信息管管理跟企业业用电信息息管理两大大选择。(3)点击击企业信息息管理,下下拉菜单中中选项可以以实现对企企业信息的的查询、添添加、修改改、删除操操作。(4)点击击企业用电电管理信息息,下拉菜菜单中选项项可以实现现对企业用用电管理信信息的查询询、添加、修修改和删除除操作。(5)系统统客户端运运行在Wiindowws平台下下,服务器器可以运行行在Winndowss或Uniix平台下下。系统还还应该有一一个较好的的图形用户户界面。(6)系统统应该有很很好的可扩扩
5、展性。2、需求分分析需求分析是是从客户的的需求中提提取出软件件系统能够够帮助用户户解决的业业务问题,通通过对用户户业务问题题的分析,确确定系统的的功能需求求。这个步步骤是对理理解需求的的升华,直直接关系到到该系统的的质量。分分析的根本本目的是在在开发者和和提出需求求的人之间间建立一种种理解和沟沟通机制,因因此,系统统的需求分分析也应该该是开发人人员和用户户或客户一一起完成的的。2.2 对对性能的规规定1、精度在精度需求求上,根据据使用需要要,在各项项数据的输输入,输出出及传输过过程中,可可以满足各各种精度的的需求。如如:根据关关键字精度度的不同,查查找可分为为精确查找找和泛型查查找,精确确查找
6、可精精确匹配系系统使用者者所知道的的企业名称称及编号快快速便捷的的查询所要要知道的信信息。2、时间特特性要求在软件方面面,响应时时间,更新新处理时间间都比较快快且迅速,完完全满足用用户要求。3、灵活性性当用户需求求,如操作作方式,运运行环境,结结果精度,数数据结构于于其他软件件接口等发发生变化时时,设计的的软件要做做适当调整整,灵活性性非常大。 2.2 数数据需求分分析 数据字典(1)faactorry名称:factory别名:无描述:企业的基本信息组成:factory=(num+facname+repname+tel+usefnum+usegnum+usemoney)(2) wworkeer
7、名称:worker别名:无描述:员工及管理员的基本信息组成:worker=(id+workername+password+level)3 系统设设计3.1 功功能模块设设计3.2 数数据库概念念设计3.2.11实体属性性图 3.2.22 E-RR图3.3 数数据库逻辑辑设计企业(编号号,企业名名,法人代代表)电价(峰电电量,谷电电量,峰电电价,谷电电价,总电电费)系统用户(编号,姓名,密码,权限)3.4 数数据库物理理设计表一:factoory列名数据类型允许Nulll值numvarchhar(550)是facnaamevarchhar(550)是repnaamevarchhar(550)是t
8、elvarchhar(550)是usefnnumint是usegnnumint是usemooneyint是numfacnaamerepnaametelusefnnumusegnnumusemooney001新华书店陈国勇1780225900001131410222333002苏果超市陈博文1780225900002151622532863003微软公司毕世勇1780225900003368524674952004乐天玛特丁小杰1780225900004301127943105005三厂中学陈家勇1780225900005242219742875表二:workeer列名数据类型允许Nulll值i
9、dint否workeernammevarchhar(550)否passwwordvarchhar(550)否leveelint否idworkeernammepasswwordleveel111张三12345561112李四12345561113熊大12345562114熊二123455623.5 数数据库表间间联系 数数据库中所所建的两张张表facctoryy与worrker之之间并没有有任何直接接的联系,一一个代表的的是企业信信息,一个个代表的是是员工信息息。4系统实现现4.1登陆陆模块实现现privaate classs BuuttonnactiionPeerforrmed impllem
10、ennts AActioonLissteneer/为登陆陆按钮BuuttonnactiionPeerforrmed添添加事件监监视器pubblic voidd acttionPPerfoormedd(ActtionEEventt e)/从woorkerr表中获得得元组信息息进行登陆陆,下面为为获得元组组登陆代码码a=userrnamee2.geetTexxt();s=passswordd2.geetTexxt();trycconn=DrivverMaanageer.geetConnnecttion(url, useer, ppasswword);cconn.setAAutoCCommiit(t
11、rrue);SSysteem.ouut.prrintlln(和和数据库已已经建立连连接!); sttmt=(Stattemennt) cconn.creaateSttatemment(); rrs=(RResulltSett)stmmt.exxecutteQueery(seleect * froom woorkerr );if(c.equaals(aa)&bb.equuals(s)mmessaage.ssetTeext(姓名和密密码不能为为空);ellse if(truee)wwhilee(rs.nnext()iif(rss.gettStriing(22).eqqualss(a)& rss.g
12、ettStriing(33).eqqualss(s)&rs.getIInt(44)=llevell)messsage.setTText(数据库库连接成功功!);if(leevel=1)operrate22 appp2=neew opperatte2();app22.settLocaationnRelaativeeTo(nnull);elseeoperrate app33=neww opeeratee();app33.settLocaationnRelaativeeTo(nnull);eelsemesssage.setTText(用户名名和密码或或者身份不不正确);rss.cloose();st
13、tmt.cclosee();coonn.cclosee();4.2查询询模块实现现privaate classs BuuttonnactiionPeerforrmed impllemennts AActioonLissteneer/为查询询按钮BuuttonnactiionPeerforrmed添添加事件监监视器pubblic voidd acttionPPerfoormedd(ActtionEEventt e)/从woorkerr表中获取取元组,并并且显示在在系统上faacnamme=seearchh.gettTextt();ttryconnn=DriiverMManagger.ggetCo
14、onnecctionn(urll, usser, passswordd);connn.settAutooCommmit(ttrue);Systtem.oout.pprinttln(和数据库库已经建立立连接!); sstmt=(Staatemeent) connn.creeateSStateementt();rss=(ReesulttSet)stmtt.exeecuteeQuerry(sselecct * fromm facctoryy );whhile(rs.nnext()iif(rss.gettStriing(22).eqqualss(faccnamee)textt1.seetTexxt(r
15、ss.gettStriing(11);textt2.seetTexxt(rss.gettStriing(22);textt3.seetTexxt(rss.gettStriing(33);textt4.seetTexxt(rss.gettStriing(44);textt5.seetTexxt(+(rss.gettInt(5);textt6.seetTexxt(+rs.getIInt(66);textt7.seetTexxt(+rs.getIInt(77);rss.cloose();sttmt.cclosee();coonn.cclosee();4.3 添添加模块实实现privaate clas
16、ss BuuttonnactiionPeerforrmed impllemennts AActioonLissteneer/为添加加按钮BuuttonnactiionPeerforrmed添添加事件监监视器pubblic voidd acttionPPerfoormedd(ActtionEEventt e)/在系统统内输入要要添加的元元组信息,通通过添加按按钮添加到到数据库中中的facctoryy表内x11=texxt1.ggetTeext();x22=texxt2.ggetTeext();x33=texxt3.ggetTeext();x44=texxt4.ggetTeext();x55=te
17、xxt5.ggetTeext();x66=texxt6.ggetTeext();x77=texxt7.ggetTeext();ttryconnn=DriiverMManagger.ggetCoonnecctionn(urll, usser, passswordd);connn.settAutooCommmit(ttrue);Systtem.oout.pprinttln(和数据库库已经建立立连接!);prrepsttmt1=(PreepareedStaatemeent) connn.preepareeStattemennt(IINSERRT INNTO ffactoory(nnum,ffacna
18、ame,rrepnaame,ttel,uusefnnum,uusegnnum,uusemooney)+VALUUES(?,?,?,?,?,?,?);prrepsttmt1.setSStrinng(1, x1);prrepsttmt1.setSStrinng(2, x2);prrepsttmt1.setSStrinng(3, x3);prrepsttmt1.setSStrinng(4, x4);prrepsttmt1.setSStrinng(5, x5);prrepsttmt1.setSStrinng(6, x6);prrepsttmt1.setSStrinng(7, x7);prrepsttm
19、t1.execcuteUUpdatte();coonn.cclosee();4.4 删删除模块实实现privaate classs BuuttonnactiionPeerforrmed impllemennts AActioonLissteneerpubblic voidd acttionPPerfoormedd(ActtionEEventt e)x11=texxt1.ggetTeext();ttryconnn=DriiverMManagger.ggetCoonnecctionn(urll, usser, passswordd);connn.settAutooCommmit(ttrue);Sy
20、sttem.oout.pprinttln(和数据库库已经建立立连接!); sstmt=(Staatemeent) connn.creeateSStateementt();sttmt.eexecuuteUppdatee(deeletee froom faactorry whhere num=+x11);coonn.cclosee();4.5 修修改模块实实现privaate classs BuuttonnactiionPeerforrmed impllemennts AActioonLissteneerpubblic void acttionPPerfoormedd(ActtionEEventt
21、 e)x11=texxt1.ggetTeext();x22=texxt2.ggetTeext();x33=texxt3.ggetTeext();x44=texxt4.ggetTeext();tryyconnn=DriiverMManagger.ggetCoonnecctionn(urll, usser, passswordd);connn.settAutooCommmit(ttrue);Systtem.oout.pprinttln(和数据库库已经建立立连接!);prrepsttmt2=(PreepareedStaatemeent) connn.preepareeStattemennt(uupd
22、atte faactorry seet nuum=?,useggnum=?,ussefnuum=?,usemmoneyy=? wwheree numm=?);prrepsttmt2.setSStrinng(1, x1);prrepsttmt2.setSStrinng(2, x2);prrepsttmt2.setSStrinng(3, x3);prrepsttmt2.setSStrinng(4, x4);prrepsttmt2.setSStrinng(5, x1);prrepsttmt2.execcuteUUpdatte();prrepsttmt2.closse();coonn.cclosee(
23、);4.6 生生成电费单单模块实现现privaate classs BuuttonnactiionPeerforrmed impllemennts AActioonLissteneerpubblic voidd acttionPPerfoormedd(ActtionEEventt e)faacnamme=seearchh.gettTextt();tryconnn=DriiverMManagger.ggetCoonnecctionn(urll, usser, passswordd);connn.settAutooCommmit(ttrue);Systtem.oout.pprinttln(和数据库
24、库已经建立立连接!); sstmt=(Staatemeent) connn.creeateSStateementt();rss=(ReesulttSet)stmtt.exeecuteeQuerry(sselecct * fromm facctoryy );whhile(rs.nnext()iif(rss.gettStriing(22).eqqualss(faccnamee)x1=rrs.geetStrring(5);x2=rrs.geetStrring(6);x3=rrs.geetStrring(7);textt1.seetTexxt(rss.gettStriing(55);textt2.se
25、etTexxt(rss.gettStriing(66);textt3.seetTexxt(rss.gettStriing(77);rss.cloose();sttmt.cclosee();coonn.cclosee();5 代码调调试与功能能测试5.1 测测试方案(1)分别别输入用户户、管理员员查看登陆陆进去后的的界面(2)分别别用用户和和管理员查查询企业用用电信息(3)添加加企业用电电信息(4)修改改企业用电电信息(5)删除除企业用电电信息(6)生成成电费单5.2 测测试结果 管理员登登陆 管理理员登陆后后的界面 管管理员登陆陆后查询的的界面 用用户登陆后后查询的界界面 点击添添加后的界界面
26、 输入数数据添加成功 点击修改改进行修改改信息 修修改成功 点击删删除后出现现的界面 删除成成功 点击击生成电费费单出现的的界面在桌面生成成的电费单单6 收获与与体会一、这次课课程设计的的心得体会会通过实践践我的收获获如下:一开始接触触数据结构构课程设计计真的挺难难的,好多多都不会,不不是逻辑方方面的问题题,而不具具备动手能能力,脑子子里总有一一团火,比比如对于这这个题目,一一开始有很很多的想法法,想到了了从逻辑上上怎么实现现他,要编编写哪些程程序,但是是一到需要要编写了就就开始为难难了,可以以说是几乎乎不知道从从哪里入手手,参考了了书本里的的程序,仿仿照他的结结构一步一一步做下来来,现在对对
27、于单链表表的各种操操作已经算算是比较熟熟练了,但但我知道光光有理论知知识还远远远不够,需需要多动手手,写的多多了自然就就能手到擒擒来。二、根据我我在实习中中遇到得问问题,我将将在以后的的学习过程程中注意以以下几点:1、认真上上好专业实实验课,多多在实践中中锻炼自己己。2、写程序序的过程中中要考虑周周到,严密密。3、在做设设计的时候候要有信心心,有耐心心,切勿浮浮躁。4、认真的的学习课本本知识,掌掌握课本中中的知识点点,并在此此基础上学学会灵活运运用。5、在课余余时间里多多写程序,熟熟练掌握在在调试程序序的过程中中所遇到的的常见错误误,以便能能节省调试试程序的时时间。67参考文献1 钱钱雪忠,王
28、燕玲,林林挺.数据库原理理及技术M.北北京:清华华大学出版版社,2011.2 钱钱雪忠,罗海驰,陈国俊.数据库原原理及技术术课程设计计M.北京:清清华大学出出版社,22014.附录附录1源程程序部分清清单附录1.11recoord代码码imporrt jaava.aawt.*;imporrt jaava.aawt.eeventt.*;imporrt jaava.ssql.CConneectioon;imporrt jaava.ssql.DDriveerMannagerr;imporrt jaava.ssql.SSQLExxcepttion;imporrt jaava.ssql.RResullt
29、Sett;imporrt jaava.ssql.SStateementt;imporrt jaavax.swinng.*;publiic classs Reecordd exttendss JFrrameprivvate stattic finaal longg seriialVeersioonUIDD = 11L;privvate JLabbel uusernname,passswordd;privvate JTexxtFieeld uusernname22;privvate JTexxtFieeld ppasswword22,messsagee;privvate JButtton butt
30、ton;privvate JRaddioBuuttonn boxx1,boox2;privvate ButttonGrroup butttongrroup;privvate Striing aa,s;privvate Striing cc=;privvate Striing bb=;privvate int llevell=2;/prrivatte Sttringg juzzi; publlic RRecorrd()supper(Recoord);settSizee(3000,3000);tryyUIMaanageer.seetLoookAnddFeell(UIMManagger.ggetSy
31、ystemmLookkAndFFeelCClasssNamee();caatch(Exceeptioon e)Conntainner ccontaainerr=gettConttentPPane();conntainner.ssetBaackgrroundd(Collor.llighttGrayy);conntainner.ssetLaayoutt(nulll);useernamme=neew JLLabell(用户户名:,JLabbel.RRIGHTT);passsworrd=neew JLLabell( 密密码: ,JLaabel.RIGHHT);butttonggroupp=neww B
32、utttonGGroupp();boxx1=neew JRRadiooButtton(员工,truee);boxx2=neew JRRadiooButtton(管理员);useernamme2=nnew JJTexttFielld(200);passsworrd2=nnew JJTexttFielld(200);messsagee=neww JTeextFiield(欢迎使使用企业用用电管理系系统);messsagee.settHoriizonttalAllignmment(JTexxtFieeld.CCENTEER);buttton=new JJButtton(登录);useernamme.
33、seetBouunds(50, 50, 50, 25);useernamme2.ssetBooundss(1000, 500, 1220, 225);passsworrd.seetBouunds(50, 85, 50, 25);passsworrd2.ssetBooundss(1000,85, 1200, 255);messsagee.settBounnds(555,1660, 1190, 25);boxx1.seetBouunds(50,1120,550,255);boxx2.seetBouunds(110,120,70,225);buttton.setBBoundds(1990, 1120
34、, 60, 25);butttonggroupp.addd(boxx1);butttonggroupp.addd(boxx2);ButttonaactioonPerrformmed bbuttooner=new BButtoonacttionPPerfoormedd();buttton.addAActioonLissteneer(buuttonner);RaddioBuuttonnHanddler handdler = neew RaadioBButtoonHanndlerr();boxx1.adddIteemLissteneer(haandleer);boxx2.adddIteemLisst
35、eneer(haandleer);conntainner.aadd(uusernname);conntainner.aadd(uusernname22);conntainner.aadd(ppasswword);conntainner.aadd(ppasswword22);conntainner.aadd(bbox1);conntainner.aadd(bbox2);conntainner.aadd(bbuttoon);conntainner.aadd(mmessaage);settVisiible(truee);settDefaaultCCloseeOperratioon(JFFramee.
36、EXIIT_ONN_CLOOSE);publlic stattic voidd maiin(Sttringg aargs)Reccord app=new RRecorrd();appp.settLocaationnRelaativeeTo(nnull);privvate classs RaadioBButtoonHanndlerr impplemeents ItemmListtenerrpubblic voidd iteemStaateChhangeed(IttemEvvent evennt) iff(boxx1.issSeleectedd()mmessaage.ssetTeext(员工登录录
37、);llevell=2;ellse if(boox2.iisSellecteed()mmessaage.ssetTeext(管理员登登录);llevell=1;privvate classs BuuttonnactiionPeerforrmed impllemennts AActioonLissteneerpubblic voidd acttionPPerfoormedd(ActtionEEventt e)/登录a=userrnamee2.geetTexxt();s=passswordd2.geetTexxt();trryCClasss.forrNamee(drriverr);caatch(C
38、lasssNottFounndExcceptiion aarg0)SSysteem.ouut.prrint(claass nnot ffind exceeptioon occcur. messsagee is:);trryCClasss.forrNamee(drriverr);/加载驱驱动ccatchh(ClaassNootFouundExxcepttion evennt)SSysteem.ouut.prrint(claass nnot ffind exceeptioon occcur. messsagee is:);SStateementt stmmt;RResulltSett rs;SStrinng urrl=jjdbc:sqlsserveer:/locaalhosst:14433; DataabaseeNamee=企业用用电;SStrinng drriverr=coom.miicrossoft.sqlsserveer.jddbc.SSQLSeerverrDrivver;SStrinng usser=sa;SStrinng paasswoord=1234456;CConneectioon coonn=nnull;trrycconn=DrivverMaanageer.geetConnnecttion(url, useer, ppasswword);cconn.se