数据库课程电话计费管理系统.docx
《数据库课程电话计费管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程电话计费管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
数据库课程电话计费管理系统
数据库课程设计报告
设计题目:
电话计费管理系统
1.课程设计目的
熟悉数据库设计的各个阶段,会使用visio工具实现阶段性设计的表达,并使用语言实现数据库的连接,完成数据的显示、修改、插入和删除。
学生根据所学的数据库原理与程序设计知识,能够针对一个小型的数据库管理系统进行需求分析、系统设计、数据库设计、编码,测试等,完成要求的功能,从而达到掌握开发一个小型数据库的目的。
2.系统需求分析阶段
2.1数据流图
2.1.1电话计费管理系统的数据流图
2.2数据字典
数据流编号:
D01
数据流名称:
客户受理
简述:
工作人员对客户进行受理
数据流来源:
客户要求
数据流输出:
客户受理情况
数据流组成:
客户姓名、受理号码、受理内容
数据流编号:
D02
数据流名称:
客户资料
简述:
客户的基本信息
数据流来源:
客户
数据流输出:
资料信息
数据流组成:
客户姓名、联系电话、联系地址、套餐名称、手机号码、手机密码
数据流编号:
D03
数据流名称:
收款
简述:
收银员对客户业务进行受理,客户缴费
数据流来源:
客户信息
数据流输出:
客户
数据流组成:
手机号码、客户姓名、应收费用、余额
数据流编号:
D04
数据流名称:
通话信息
简述:
客户的通话被记录了下来
数据流来源:
客户
数据流输出:
客户通话记录
数据流组成:
来电号码、去电号码、通话时长、通话时间、单位费用、总费用
数据流编号:
D05
数据流名称:
收款员
简述:
收款员登录系统进行工作
数据流来源:
收款员
数据流输出:
收款员信息
数据流组成:
姓名、密码
数据流编号:
D06
数据流名称:
客户消费
简述:
收银员登录系统后对客户进行受理
数据流来源:
收银员
数据流输出:
受理信息
数据流组成:
手机号码、客户姓名、通话费、新业务费、费用合计、套餐名称
3.功能需求分析
电话计费库管理系统功能:
1) 月花费查询:
客户可对每月的话费进行查询(每项记录包括通话费、新业务费、费用合计、实缴费用合计等信息)。
2) 帐户余额查询:
客户可查询话费单上的余额。
3) 用户资料查询:
客户可以查阅个人资料。
4) 业务查询:
客户可以实时了解个部门的各项活动。
5) 查询读者:
可根据条件进行高级查询,并允许模糊查询。
5)缴费信息:
管理员可根据用户所缴的话费进行计费,并反馈给用户,用户在交费的同时可打印发票。
7) 插入读者:
添加新读者,需要填入足够的信息,并判断信息是否有效。
6) 月话费管理:
管理员可对每月的话费记录进行逐条添加、更新和删除。
7) 客户受理结果:
管理员可对每月的话费记录进行逐条添加、更新和删除。
4.概念结构设计阶段
4.1ER
5.逻辑结构设计阶段:
5.1关系模式
E-R图向关系模型的转换
实体及其属性
客户:
{客户姓名,联系电话,联系地址,套餐名称}
应收款额:
{账户编号,手机号码,应收费用,余额}
话费信息库:
{手机号码,客户姓名,通话费,新业务费,费用合计,套餐名称}
收费员:
{收费员编号,姓名,年龄}
客户受理:
{手机号码,客户姓名,受理内容,受理时间}
通话信息:
{手机号码,来电号码,去电号码,单位费用,通话时长,总费用}
联系的属性
使用:
{手机密码}
计费:
{密码}
根据转换规则将实体转换为关系模式
本实例中没有1:
1关系对于1:
n联系,将它们与n端的关系模式合并。
该关系模式中应加入1端的码和联系本身的属性。
客户:
{客户姓名,所在城市,套餐名称,手机号码,手机密码}
收费员:
{收费员编号,姓名,年龄,手机号码,密码}
对于m:
n的联系,必须单独转换为一个关系模式,属性由各实体的码和联系本身的属性组成,关系的码为组成联系各实体的码的组合。
支付:
{客户姓名,联系电话,收费员编号}
处理:
{手机号码,收费员编号}
电话计费系统的E-R图,转换为以下关系模式:
客户:
{手机号码,所在城市,套餐名称,客户姓名,手机密码}
收费员:
{收费员编号,姓名,年龄,手机号码,密码}
话费信息:
{手机号码,客户姓名,通话费,费用合计,套餐名称}
客户受理:
{手机号码,收费员编号,客户姓名,受理内容,受理时间}
通话信息:
{手机号码,来电号码,去电号码,单位费用,通话时长,总费用}
6.物理结构设计阶段
客户受理表
客户资料表
收款表
通话信息表
收费员表
消费表
7.数据库实施阶段
7.1界面设计
1)登录界面
2)boss界面
3)主界面
4)客户受理子界面(有添加客户信息、修改客户信息、删除客户信息、查询客户信息功能):
7.2部分代码模块
登录模块
PublicClassRegisterLoginManagerClass
DimFlagAsBoolean
FunctionSelectUIand(ByValUserAsUserInfoClass)AsBoolean
DimDalUserAsNewUserDAO
DimUserdbsAsNewUserInfoClass
DimflagAsBoolean
Userdbs.Name=User.Name
Userdbs.Password=User.Password
flag=DalUser.selectUserInfo(Userdbs)
Returnflag
EndFunction
FunctionSelectRegister(ByValUserAsUserInfoClass)AsBoolean
DimDalUserAsNewUserDAO
DimUserdbsAsNewUserInfoClass
Userdbs.Name=User.Name
Userdbs.Password=User.Password
Userdbs=DalUser.InsertUserInfo(Userdbs)
'判断操作
IfUserdbs.Name=vbNullThen
ReturnFalse
Else
ReturnTrue
EndIf
EndFunction
EndClass
ImportsSystem.Data.SqlClient
PublicClassUserDAO
'连接数据库
DimsqlCnStrAsString="server=.;uid=sa;pwd=sql;database=TelManage_data"
DimsqlCnAsSqlConnection=NewSqlConnection(sqlCnStr)
'自定义检查参数
FunctionselectUserInfo(ByValUserAsUserInfoClass)AsBoolean
DimsqlAsString="select*fromUserinforwhereuser_name='"&User.Name&"'anduser_pwd='"&User.Password&"'"
'sql语句
DimcmdAsSqlCommand=NewSqlCommand(sql,sqlCn)'定义sqlCommand对象
'DimreadAsSqlDataReader'定义sqlDataReader对象
DimreadAsIDataReader
DimUserDataTableAsNewDataTable'定义一个DataTable对象
DimUser1AsNewUserInfoClass
sqlCn.Open()
read=cmd.ExecuteReader()
DimflagAsBoolean
flag=read.Read()
UserDataTable.Load(read)
'ReturnUser1
IfNotIsNothing(sqlCn)Then
sqlCn.Close()
EndIf
Returnflag
EndFunction
FunctionInsertUserInfo(ByValUserdbsAsUserInfoClass)AsUserInfoClass
ThrowNewNotImplementedException
EndFunction
EndClass
PublicClassUserInfoClass
PrivateUserNameAsString
PublicPropertyNameAsString
Get
ReturnUserName
EndGet
Set(ByValvalueAsString)
UserName=value
EndSet
EndProperty
PrivateUserPwdAsString
PublicPropertyPasswordAsString
Get
ReturnUserPwd
EndGet
Set(ByValvalueAsString)
UserPwd=value
EndSet
EndProperty
EndClass
执行增删改查函数模块(部分):
ImportsSystem.Data.SqlClient
PublicClasskehuchaxunForm1
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimdidAsString=Me.TextBox1.Text
DimconnectionStringAsString="Server=.;uid=sa;pwd=sql;database=TelManage_data"
DimcommandTextAsString="SELECT*FROMkehushouli"
UsingconnectionAsNewSqlConnection(connectionString)
DimCommandAsSqlCommand=NewSqlCommand(commandText,connection)
connection.Open()
DimreaderAsSqlDataReader=Command.ExecuteReader()
While(reader.Read()=True)
Me.TextBox1.Text&=reader(0)&""&reader
(1)&""&reader
(2)&vbCrLf
EndWhile
connection.Close()
EndUsing
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Me.Close()
EndSub
PrivateSubTextBox1_TextChanged(senderAsObject,eAsEventArgs)HandlesTextBox1.TextChanged
EndSub
EndClass
ImportsSystem.Data.SqlClient//删除
PublicClasskehushanchu
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimdidAsString=Me.TextBox1.Text
DimconnectionStringAsString="Server=.;uid=sa;pwd=sql;database=TelManage_data"
DimcommandTextDeleteAsString="DELETEFROMkehushouliWHEREkehuxingming=@id"
UsingconnectionAsNewSqlConnection(connectionString)
connection.Open()
DimcmdDeleteAsSqlCommand=NewSqlCommand(commandTextDelete,connection)
cmdDelete.Parameters.AddWithValue("@id",TextBox1.Text)
Try
DimresultAsInteger=cmdDelete.ExecuteNonQuery()
Ifresult=1Then
MsgBox("成功")
Else
MsgBox("删除记录失败")
EndIf
CatchexAsException
MsgBox(ex.ToString())
EndTry
connection.Close()
EndUsing
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Me.Close()
EndSub
EndClass
ImportsSystem.Data.SqlClient//插入
PublicClasskehutianjiaForm1
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimconnectionStringAsString="Server=.;uid=sa;pwd=sql;database=TelManage_data"
DimcommandTextInsertAsString="INSERTINTOkehushouli(kehuxingming,shoujihaoma,shoulineirong)VALUES(@a,@b,@c)"
UsingconnectionAsNewSqlConnection(connectionString)
connection.Open()
DimcmdInsertAsSqlCommand=NewSqlCommand(commandTextInsert,connection)
cmdInsert.Parameters.AddWithValue("@a",TextBox1.Text)
cmdInsert.Parameters.AddWithValue("@b",TextBox2.Text)
cmdInsert.Parameters.AddWithValue("@c",TextBox3.Text)
Try
DimresultAsInteger=cmdInsert.ExecuteNonQuery()
Ifresult=1Then
MsgBox("插入成功")
EndIf
CatchexAsException
MsgBox(ex.ToString())
EndTry
connection.Close()
EndUsing
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Me.Close()
EndSub
EndClass
ImportsSystem.Data.SqlClient//修改
PublicClasskehuxiugai
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimconnectionStringAsString="Server=.;uid=sa;pwd=sql;database=TelManage_data"
DimcommandTextUpdateAsString="UpdatekehushouliSetshoujihaoma=@bbb,shoulineirong=@cccwherekehuxingming=@aaa"
UsingconnectionAsNewSqlConnection(connectionString)
connection.Open()
DimcmdUpdateAsSqlCommand=NewSqlCommand(commandTextUpdate,connection)
cmdUpdate.Parameters.AddWithValue("@aaa",TextBox1.Text)
cmdUpdate.Parameters.AddWithValue("@bbb",TextBox2.Text)
cmdUpdate.Parameters.AddWithValue("@ccc",TextBox3.Text)
Try
DimresultAsInteger=cmdUpdate.ExecuteNonQuery()
Ifresult=1Then
MsgBox("修改成功")
Else
MsgBox("修改失败")
EndIf
CatchexAsException
MsgBox(ex.ToString())
EndTry
connection.Close()
EndUsing
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Me.Close()
EndSub
PrivateSubkehuxiugai_Load(senderAsObject,eAsEventArgs)HandlesMyBase.Load
EndSub
EndClass
8.实验总结:
过这次课程设计,从设计需求分析,到各模块功能的设计及数据库设计,我对电话计费管理系统有了较深入的了解,基本掌握了数据库设计的思想。
通过本次设计,对数据库系统概论这门课有了全新的认识,经过本次课程设计,我受益匪浅,从一个整体上把握了一个数据库的设计方法,同时对于如何利用语言去连接数据库,并且操纵数据库有了一定的了解和掌握。
希望以后自己能够继续学习数据库,对它有更深层次的了解。
项目的开发过程:
系统分析->建模->概要设计->详细设计->编码->测试->维护。
软件开发时期的具体设计和实现在前一个时期定义的软件,4个阶段组成:
概要设计、详细设计、编码和单元测试、综合测试,其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
运行维护时期的主要任务是使软件持久地满足用户的需要。
数据流图(dataflowdiagram,DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。