还剩21页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
目录TOC\o1-2\h\z\u1前言12需求分析
12.1课程设计目的
12.2课程设计任务
12.3设计环境
12.4__语言13分析与设计
13.1模块的划分
13.2创建关系表
23.3创建E-R图
43.4创建数据库
53.5各模块的实现
73.6测试分析94课程设计总结11____12致谢13附录(源程序清单)…………………………………………………………141前言通过设计一个个人信息管理系统,使该信息管理系统可以在Window2000Server平台上运行其功能包括个人工作单位信息、通讯录信息、___信息、日记信、个人财务管理等方面同时可以让某些个体自我注册一个账号来查询自己的所需信息2需求分析
2.1课程设计目的通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现同时要求对数据库的运营、管理及使用上进行必要的规划和实现
2.2课程设计任务系统需要管理以下主要信息
(1)通讯录信息,包括通讯人姓名、__方式、工作地点、城市、备注等;
(2)___信息,包括什么时间、__、地点等;
(3)日记信息;包括时间、地点、事情、人物等;
(4)个人财物信息,包括总收入,消费项目、消费金额、消费时间、剩余资金等
2.3设计环境
(1)WINDOWS2000/2003/XP系统
(2)Oracle数据库管理系统
2.4__语言PL/SQL语言3分析和设计
3.1模块的划分
1.登录模块:根据相应的用户名__,显示相应的所有记录如果没有对应的UID或PWD和UID不对应则报错
2.通讯录模块:显示用户的通讯录具体内容,可以查询__人的资料和添加新的__人
3.日记模块显示用户的日记本,供用户查阅和编写若日记较长,窗口能显示部分信息双击窗口能显示日记详细内容
4.财务管理模块显示用户的财务信息,记录新的收支信息计算出用户的总收入,总支出,和剩余金额5.___模块显示用户的___内容,提醒用户重要__的时间地点6.工作单位模块显示用户的工作单位内容,及工作情况,可查询个人工作情况等
7.用户注册模块:用于注册新用户若新用户的用户名已经存在,则报错
3.2创建关系表根据所需共创建contact,diary,memo,moneymng,emp,usertable6个表表
3.2-1contact属性数据类型是否为空中文描述NOint否序号(主键)UIDVarchar250否所属用户名CnameVarchar250否__人姓名CageVarchar250否__人年龄C___Varchar250否__人性别CconVarchar250否__方式CcityVarchar250是__人地址CmemoVarchar2__x是备注表
3.2-2diary属性数据类型是否为空中文描述NOint否序号(主键)UIDVarchar250否所属用户名Dtimedatetime否日记时间DtitleVarchar2__x是日记标题Do__ectVarchar2__x否日记内容DweatherVarchar250否天气表
3.2-3memo属性数据类型是否为空中文描述NOint否序号(主键)UIDVarchar2
(50)否所属用户名Mtimedatetime否__时间MnameVarchar2
(50)是__名称McauseVarchar2__x否__原因Mpla__Varchar2
(50)是__地点Mo__ectVarchar2__x否__表
3.2-4moneymng属性数据类型是否为空中文描述NOint否序号(主键)UIDVarchar250否所属用户名MitemVarchar250否收支项目MmoneyVarchar218否金额Mtimedatetime否收支时间MtypeVarchar210否收支总类MuserVarchar250否收支人员表
3.2-5emp属性数据类型是否为空中文描述NOint否序号(主键)UIDVarchar250否所属用户名EnameVarchar250否公司名EdeptVarchar250否工作部门Epla__Varchar250否工作地点EsalaryVarchar218否工资Etimedatetime否工作时间表
3.2-6usertable属性数据类型是否为空中文描述UIDVarchar250否所属用户名PWDVarchar250否__
3.3创建E-R图
3.4创建数据库KCSJ Createdatabasekcsj创建关系表ContactCreateTable[dbo].[contact]([NO][int]identity1,1NOTNULL,[UID][nvarchar]50NOTNULL,[Cname][nvarchar]50NOTNULL,[Ccon][nvarchar]50NOTNULL,[Ccity][nvarchar]50NULL,[Cmemo][nvarchar]__xNULL,)DiaryCreateTable[dbo].[diary]([NO][int]identity1,1NOTNULL,[UID][nvarchar]50NOTNULL,[Dtime][nvarchar]50NOTNULL[Dtitle][nvarchar]__xNOTNULL,[Do__ect][nvarchar]__xNOTNULL[Dweather][nvarchar]50NOTNULL)MemoCreateTable[dbo].[memo]([NO][int]identity1,1NOTNULL,[UID][nvarchar]50NOTNULL,[Mtime][datetime]NOTNULL,[Mname][nvarchar]50NOTNULL,[Mcause][nvarchar]__xNOTNULL[Mpla__][nvarchar]50NULL,[Mo__ect][nvarchar]__xNOTNULL)MoneymngCreateTable[dbo].[moneymng]([NO][int]identity1,1NOTNULL,[UID][nvarchar]50NOTNULL,[Mitem][nvarchar]50NOTNULL,[Mmoney][nvarchar]18,2NOTNULL[Mtime][datetime]NOTNULL,[Mtype][nvarchar]10NOTNULL)[Muser][nvarchar]50NOTNULLEmpCreateTable[dbo].[emp]([NO][int]identity1,1NOTNULL,[UID][nvarchar]50NOTNULL,[Ename][nvarchar]50NOTNULL,[Edept][nvarchar]50NOTNULL,[Epla__][nvarchar]50NOTNULL,[Esalary][nvarchar]18NOTNULL,[Etime][datetime]NOTNULL)UsertableCreateTable[dbo].[usertable]([UID][nvarchar]50NOTNULL[PWD][nvarchar]50NOTNULL)
3.5各模块的实现a.登陆模块SelectCount*FromusertableWhereUID=@varUIDandPWD=@varPWD根据用户提供的用户名@varUID和__@varPWD,从Usertable表中查询是否存在该用户,如果存在则读取对应的信息为了防止SQL注入问题,在程序Usertable表中的__不存储明文,而是由应用程序将__使用MD5加密后提交至数据库进行比对b.用户注册模块首先检测输入的用户名是否已经被注册SelectCount*FromusertableWhereUID=@varUID.若未被注册,则将注册信息提交至数据库Insertintousertable(UID,PWD)Values(@varUID,@varPWD)c.通讯录模块用户登陆后将自动显示自己的所有的记录SelectNO,Cname,Cage,C___,Ccon,Ccity,FromcontactWhereUID=@varUID.添加新的__人Insertintocontact(UID,Cname,Cage,C___,Ccon,Ccity,Cmemo)Values(@varUID,@varCname,@varCage,@varC___,@varCcon,Ccity,Cmemo)d.日志模块用户登陆后将自动显示自己所有的记录SelectNO,Dtime,Do__ect,DweatherFromdbo.diaryWhereUID=@varUID.添加新的日志Insertintodiary(UID,Do__ect,Dtitle,Dtime,Dweather)Values(@varUID,@varDo__ect,@varDtime,@varDtime,@varDweather)e.财务管理模块用户登陆后将自动显示自己所有的记录SelectNOMitem,Mmoney,Mtime,Mtype,MuserFromdbo.MoneymngWhereUID=@varUID.添加新的财务记录InsertintomoneymngUID,Mitem,Mtime,Mtype,Mmoney,MuserValues(@varUID,@varMitem,@varMtime,@varMtype,@varMmoney,@varMuser)财务计算1计算总支出SelectSumMmoneyFrommoneymngWhereMtype=‘支出’AndUID=@varUID.2计算总收入SelectSumMmoneyFrommoneymngWhereMtype=‘收入’AndUID=@varUIDf.工作单位模块用户登陆后将自动显示自己所有的记录SelectNO,Ename,Edept,Esalary,EtimeWhereUID=@varUID.添加新的工作信息InsertintoempUID,Ename,Edept,Esalary,EtimeValues@varUID@varEname,@varEdept,@varEsalary,@varEtimeg.___模块用户登陆后将自动显示自己所有的记录SelectNO,Mtime,Mpla__,Mname,Mcause,Mo__ectFromdbo.memoWhereUID=@varUID.添加新的备忘记录InsertintomemoUID,Mo__ect,Mtime,Mpla__,Mname,McauseValues@varUID,@varMo__ect,@varMtime,@varMpla__,@varMcause,@varMname
3.6测试分析
1、进入登陆窗口,注册新的用户若新的用户已经存在,则报错
2、进入信息管理界面浏览日记并添加或者删除信息
3、进入___系统查看系统
4、进入财务系统,查看个人财务系统
5、退出个人信息管理系统4课程设计总结经过一个多星期的紧张设计,我的数据库课程设计终于完成因为平常练习的少,老师讲的也有许多没有掌握的地方,所以在设计的过程中基本是一边查阅资料,一边做经过这次课程设计,让我知道了我们在课堂上学习的知识还很少,我们还要在课余时间通过网络和书籍自主学习一些更多更新的内容这次课程设计正好给了我们这样的一次机会在这短短的几天里,我确实学到了很多数据库的知识为我以后的深入学习和研究打下了基础____
[1]赵振平.Oracle数据库精讲与疑难解析[M].北京电子工业出版社,2007.
[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳辽宁大学出版社,2008.
[3]牛莉,刘远军等.计算机等级考试__教程[M].北京中国铁道出版社,2008.
[4]孙风栋.Oracle数据库基础教程[M].北京电子工业出版社,2007.
[5]郑阿齐.Oracle实用教程[M].北京电子工业出版社,2007.致谢 在本次论文设计过程中,老师对该论文从选题,构思到最后定稿的各个环节给予细心指引与教导使我得以最终完成课程设计在学习中老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,导师们的高深精湛的造诣与严谨求实的治学精神,将永远激励着我在此,谨向老师们致以衷心的感谢和崇高的敬意! 最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢附录(源程序清单)
1、窗体设计 共有两个窗体登录窗体,和界面住窗体 一个模块
2、代码
(1)模块Module1的设计OptionExplicit PublicSQLUserNameAsString‘存放SQLSERVER的用户登录帐号PublicSQLPasswordAsString‘存放用户登录__PublicMyConnectionAsNewADODB.Connection’用于建立与数据库的连接
(2)应用程序主窗口form1的代码设计主窗口form1的LOAD__的驱动程序 PrivateSubForm_Load MyConnection.ConnectionString=Provider=SQLOLEDB.1;DataSour__=WELKIN;_ InitialCatalog=PInfor__tion;user id=sa;password=1985212000 MyConnection.Open EndSub 下一步按钮的Click__驱动程序 PrivateSubCom__nd1_Click ‘进入下一个窗体的按钮 IfText
1.Text=saAndText
2.Text=1985212000Then MsgBox欢迎使用本软件!vbOKOnly+vbInfor__tion 欢迎进入 Form
2.Show UnloadMe Else: MsgBox 用户名或__错误! vbOKOnly+vbCritical错误 Text
1.Text= Text
2.Text= End If End Sub
(3)对contacts表进行操作的存储过程的定义A在contacts表中添加一条记录 CREATEPro__durecontactadd @namevarchar250@cityvarchar250 @agevarchar250@memovarchar250 @convarchar250@___varchar250ASbegin insertintocontacts name,city,age,memo,___,con,values @name,@city,@age,@memo,@___,@con select @@identityasTheNewIDendreturnB在contacts表中查询__人编号和姓名CREATE Pro__durecontactlistAsbegin selectcontactID name from contacts order by nameendreturnC在contacts表中查询__人的一条记录CREATE Pro__dure contactrecord @contactID integerAsbegin if@ContactID=0 begin select*from contacts wherecontactID=selectMincontactidfrom contacts end else begin select*from contacts wherecontactID=@contactID endendreturnD在contacts表中对一条记录进行更改CREATEPro__durecontactupdate @ContactIDinteger,@name varchar250, @cityvarchar250,@agevarchar250, @memovarchar250,@___varchar250,@convarchar250Asbegin updatecontactsset name=@name,city=@city,age=@age memo=@memo,___=@___,con=@con where ContactID=@ContactIDendreturnE在contacts表中删除一条记录CREATEPro__duredeletecontact @ContactIDintegerAsbegin DELETEfromcontacts wherecontactID=@ContactID endreturn
(4)对contactphones表进行操作的存储过程的定义A在表contactphones中添加一条__记录CREATEPro__durecontactphoneadd @contactIDinteger @phonetype varchar50 @phonenumbervarchar50Asbegin insertintocontactphones contactIDPhoneTypephonenumbervalues @contactID@PhoneType@phonenumberendreturnB在表contactphones中删除一条__记录CreatePro__durecontactphonedelete @contactphoneIDintegerAsbegin deletefromcontactphones wherecontactphoneID=@contactphoneIDendreturnC在表contactphones中查询__记录CREATEPro__durecontactphonelist @contactIDintegerAsbeginselectcontactphoneIDPhoneType+-+PhoneNumberasThephone fromcontactphoneswherecontactID=@contactID orderbyPhoneType+-+PhoneNumberendreturn
(5)DeleteContacts触发器的定义在表contacts上建的触发器当用户删除一条__人记录时,通过该触发器删除__人所有的__号码Trigger deletecontactsOn dbo.Contactsafter DeleteASbegin deletefromcontactphones wherecontactID=selectcontactIDfromdeletedend
(6)__人窗口form2的代码设计A Option ExplicitPrivatecurrentIDAsLong 存放当前__人编号PublicSubDisPlayContactID2UseAsLong 显示一条__人的记录 Dim RSContactAsADODB.Recordset SetRSContact=MyConnection.ExecuteExeccontactrecordID2Use 调用ContactRecord存储过程 If RSContact.EOF Then ’如果存储过程调用返回文件结束标识,则调用“清除 Com__nd7_Click’按钮的click程序,清除界面上的数据 Else ‘否则显示一条记录 currentID=RSContactContactID Text
1.Text=RSContactName Text
2.Text=RSContactAddress Text
3.Text=RSContactZipCode Text
4.Text=RSContactE__ilAddress Text
6.Text=RSContactContactNote DisplayPhoneList显示该__人的__号码 EndIfEndSubB调用contactRecord存储过程查询__人姓名和编号,然后加入到下拉列表combo1中PublicSubUpdateNameCombo DimRSNamesAsADODB.Recordset 定义一记录集变量 通过连接变量执行存储过程 Combo
1.Clear SetRSNames=MyConnection.ExecuteExeccontactlist Combo
1.Clear DoUntilRSNames.EOF Combo
1.AddItemRSNamesName Combo
1.ItemDataCombo
1.NewIndex=RSNamesContactID RSNames.MoveNext LoopEndSubC调用存储过程contactPhonelist,读取__人对应的__号码,然后将其加入到列表框List1中PublicSubDisplayPhoneList DimRSPhoneListAsADODB.Recordset List
1.Clear SetRSPhoneList=MyConnection.ExecuteExeccontactphonelistcurrentID DoUntilRSPhoneList.EOF List
1.AddItemRSPhoneListThePhone List
1.ItemDataList
1.NewIndex=RSPhoneListContactPhoneID RSPhoneList.MoveNext LoopEndSub
(7)form2各控件的__驱动程序A调用DisPlayContact子程序来显示combo1下拉表中被选项目的对应记录PrivateSubCombo1_Click DisPlayContactCombo
1.ItemDataCombo
1.ListIndexEndSubB调用contacAdd存储过程,添加一条记录至contacts表中,同时记录__人编号和__人姓名加入combo1下拉表中 PrivateSubCom__nd3_Click’__人添加按钮的驱动程序 DimRSAddNewAsADODB.Recordset SetRSAddNew=MyConnection.ExecuteExeccontactaddText
1.TextText
2.TextText
3.TextText
4.TextText
6.Text currentID=RSAddNewTheNewID Combo
1.AddItem Text
1.Text Combo
1.ItemDataCombo
1.NewIndex=RSAddNewTheNewIDEndSubC:__人按钮的驱动程序PrivateSubCom__nd8_Click IfcurrentID=0Then Com__nd3_Click__人添加按钮 Else MyConnection.ExecuteExeccontactupdate currentIDText
1.TextText
2.Text Text
3.Text Text
4.TextText
6.Text EndIf UpdateNameComboEnd SubD__人删除按钮的__驱动程序PrivateSubCom__nd4_Click IfcurrentID=0 Then Com__nd5_Click ‘__人清除按钮 Else MyConnection.ExecuteExecdeletecontactcurrentID UpdateNameCombo DisPlayContact 0 EndIfEndSubE:清除当前窗口信息PrivateSubCom__nd5_Click currentID=0 Text
1.Text= Text
2.Text= Text
3.Text= Text
4.Text= Text
6.Text=EndSubF退出按钮PrivateSubCom__nd7_Click 退出程序 UnloadMeEndSubG调用子程序DiaPlayContact显示contacts表中第一条记录,然后调用UpdateNameCombo将contacts表中记录__人编号和__人姓名加入combo1下拉表PrivateSubForm_Load DisPlayContact 0 UpdateNameComboEndSub。