版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南大学数据库课程设计实验报告专业班级:电气1101班姓名:伍珣 学号:0909110106 指导老师:安剑奇 目录项目背景1.需求分析2.系统功能2.1租借管理2.2借出记录2.3会员信息管理2.4会员充值2.5通知公告2.6帐号管理2.7高级权限3. 羽毛球会员管理系统数据分析3.1羽毛球会员管理系统E-R图3.2数据表的结构3.3 CHECK约束3.4存储过程4.系统设计4.1 主界面4.2租借管理4.3会员信息管理4.4会员充值4.5通知公告4.6帐号管理4.7高级权限5.心得体验附:源代码羽毛球会员管理系统项目背景计算机已经成为生活中不可缺少的重要工具,有些事情可以通过计算机来完成,
2、提高办事效率。目前,羽毛球是最受人们欢迎的运动之一。随着人们生活水平的提高,越来越多的人开始去球馆打球,许多羽毛球馆拥有自己的客户。为了方便管理客户以及球馆场地和球拍的租借,开发了羽毛球管理系统为整个球馆的管理带来便利。1.需求分析首先概括一下这个项目的基本要求。总体上: 需要一个软件应用系统,这个产品可以帮助球馆管理人员管理会员信息,球场信息,球拍信息,球场和球拍的租借信息等所有工作。 所有的数据需要通过一种主流的方式进行存储和管理,如使用数据库技术。对于会员而言: 查看、修改个人资料。 查询个人租借记录。 修改帐号密码。 查看球馆通知、赛事。对于普通球场管理员而言: 对球馆进行租借管理,包
3、括租借球拍、球场。 查询所有租借记录。 对会员信息进行管理,包括查看及修改会员的基本信息。 对会员帐户金额进行管理,包括充值及查询余额。 编辑、查看通知,会员登录后可以查看。 对会员帐号进行管理,包括查看帐号、添加会员、修改密码以及删除会员。对高级球场管理员而言: 提供一个功能全面的会员管理平台。 在高级权限中,高级管理员可以按实际需求增删球场或球拍、设置租金。2.系统功能根据以上对羽毛球会员管理系统的分析,一个标准的羽毛球会员管理系统应该包括以下功能:2.1租借管理租借管理用于会员在球馆租借球场和球拍时用。包含的功能如图所示。租借分为球场租借和球拍租借。租借时首先检索空闲球场(球拍),在表格
4、中点击以选择要租借的球场(球拍),输入租借人的帐号并选择租借时间,租金根据所选球场(球拍)的租金以及租借时间不同而不同,最后按“租借”键确认租借。已经租借的球场(球拍)在租借时段内不能再次被租借。当达到租借时间时,系统会自动弹出消息提示相应的租借信息。租借管理消息提示(为了方便,此处设置0.5小时租借时长为一分钟,租金为5元)2.2借出记录借出记录用于查看会员租借球场和球拍的信息。记录中包括租借时刻、场地(球拍)号、帐号、返还时间和所需租金。借出记录2.3会员信息管理会员信息管理用于查看和修改会员的基本信息。包含的功能如图所示。“查看会员信息”用于查看会员帐号、姓名、性别、年龄、联系电话、联系
5、地址、帐户余额以及身份证号。其中“选择查看”可以查找指定帐号的信息,“所有查看”中可以对数据按帐号、姓名、年龄、帐户余额排序查看。“修改会员信息”用于修改选定帐号的基本信息。修改前需要检索要修改的帐号,检索成功后点击数据所在列获取帐号信息至“操作”框中,在“操作”框中修改数据后按“提交”键保存修改。当需要修改该帐号所有信息时可以按“全部清空”将获取的所有信息从“操作”框中删除。查看会员信息修改会员信息2.4会员充值“会员充值”可以查询余额和进行充值。“查询余额”可以查看会员当前时刻所剩金额,由于涉及个人隐私问题,需要输入所查询帐号的密码,当会员余额不足以租借球场(球拍)时,可以在充值界面进行充
6、值。充值2.5通知公告“通知公告”用于管理员发布,会员查看通知和赛事。“编辑通知”为管理员功能,分为编辑通知公告和编辑热点赛事。编辑前需选定类型并点击“编辑”方可输入文字,编辑完成后点击“提交”发布通知。 “查看通知”用于查看发布的通知、赛事等信息。“切换”键可以返回初始界面。编辑通知查看通知2.6帐号管理帐号管理用于查看、添加、修改和删除会员的帐号信息。包含的功能如图所示。“查看帐号”用于管理员查看帐号信息,分为查看会员帐号、查看管理员帐号和查看所有。普通管理员只能查看帐号的身份信息及注册时间,高级管理员还可以查看所有帐号的密码。“添加帐号”用于添加管理员(高级管理员权限)和会员。添加帐号时
7、先选定帐号类型,添加会员需要填写帐号密码、会员姓名、性别、年龄、联系方式、联系地址以及身份证号,添加管理员只需填写密码即可。信息填写完整后按“立即注册”提交。“修改密码”用于管理员跟会员修改帐号密码。修改密码时需要输入当前密码保证帐号安全,输入验证码防止程序自动篡改密码。高级管理员可以修改所有用户的密码,普通管理员只能修改所有会员的密码,会员只能修改自己的密码。“删除帐号”用于删除管理员和会员。删除帐号需要输入当前密码保证帐号安全,输入验证码防止程序自行删除造成数据丢失。高级管理员可以删除所有用户,普通管理员只能删除所有会员。查看帐号(高级管理员)查看帐号(普通管理员)注册帐号修改密码删除帐号
8、2.7高级权限“高级权限”属于高级管理员权限。用于增删物资和其他设置。包含的功能如图所示。“增删物资”用于增删球拍和球场,高级管理员在此添加新物资时需要填写物品编号,租金(以及物品名称)。系统将提交后的数据以及物品的添加时间一同保存至数据库中,供以后租借用。当需要移除球拍或球场时,可以输入现有的编号进行移除,也可以在检索结果中选定某个球拍或球场进行移除,如果该球拍或球场正在使用中,则不可移除。“设置租金”用于高级管理员设置球拍和球场的租金。设置租金时,首先检索需要设置的编号,检索成功后选择编号,在“设置租金”一栏输入租金,按“提交键”保存,注意租金必须大于零,否则不能提交。增删物资设置租金3.
9、羽毛球会员管理系统数据分析根据以上需求分析,一个基本的羽毛球会员管理系统数据库中大致包括7张数据表,分别存放相应子功能的数据信息。3.1羽毛球会员管理系统E-R图根据上面的设计,规划出的实体有用户实体,会员信息实体,场地实体,球拍实体,场地租借实体,球拍租借实体和通知实体。整个羽毛球管理系统的E-R图如图所示。3.2数据表的结构3.2.1用户表用户表用于保存所有用户的帐号信息,表结构如图所示。字段名数据类型长度主键否描述帐号int是用户用于登录的帐号密码varchar20帐号密码身份varchar10身份用于限制权限注册时间datetime记录帐号注册时间3.2.2会员信息表会员信息表用于保存
10、会员的基本信息,表结构如图所示。字段名数据类型长度主键否描述帐号int是用户表对应的帐号姓名varchar15性别varchar2年龄int联系电话varchar20联系地址varchar50会员等级varchar10会员等级决定花费时的折扣帐户余额money身份证号varchar183.2.3场地表场地表用于保存会员的基本信息,表结构如图所示。字段名数据类型长度主键否描述场地号int是每个场地都有一个唯一的场地号租金money每小时租金所需人民币状态varchar6记录场地当前的使用状况日期datetime记录场地添加时间3.2.4球拍表球拍表用于保存会员的基本信息,表结构如图所示。字段名数
11、据类型长度主键否描述球拍号int是每个球拍都有一个唯一的球拍号球拍名varchar20租金money每小时租金所需人民币状态varchar6记录球拍当前的使用状况日期datetime记录球拍添加时间3.2.5场地租借表场地租借表用于保存会员的基本信息,表结构如图所示。字段名数据类型长度主键否描述场地租借号int是用唯一的编号标记每次场地租借场地号int租借场地的场地号帐号int租借帐号租借时刻datetime租借起始时间返还时间datetime租借到期时间所需租金money这段时间内一共花费的租金3.2.6球拍租借表球拍租借表用于保存会员的基本信息,表结构如图所示。字段名数据类型长度主键否描述
12、球拍租借号int是用唯一的编号标记每次球拍租借球拍号int租借球拍的球拍号帐号int租借帐号租借时刻datetime租借起始时间返还时间datetime租借到期时间所需租金money这段时间内一共花费的租金3.2.7通知表通知表用于保存会员的基本信息,表结构如图所示。字段名数据类型长度主键否描述通知编号int是用唯一的编号标记每个通知通知内容text通知用户的信息通知时间date通知发布时间通知人int发布通知的用户类型varchar10指定通知的类型3.3 CHECK约束各表CHECK约束如下表所示。数据表约束名约束表达式用户表身份约束身份='高级管理员' OR 身份=
13、9;管理员' OR 身份='会员'会员信息表会员约束会员等级='普通会员' OR 会员等级='高级会员'帐号约束帐号>(0) AND 帐号<(999999999)年龄约束(年龄>=(18)性别约束性别='男' OR 性别='女'余额约束帐户余额>=(0)身份证号约束身份证号 like '0-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-90-9%'场地表场地号约束场地号>(0)球场状态约束(状态='使用中
14、9; OR 状态='空闲'球场租金约束租金>=(0)球拍表球拍号约束球拍号>(0)状态约束状态='使用中' OR 状态='空闲'租金约束租金>=(0)3.4存储过程系统使用了7个存储过程,分别用于创建管理员、创建用户、更新用户、删除用户、租借球场,租借球拍和验证帐号密码。3.4.1 CreateAdministrator(创建管理员)Create PROCEDURE dbo.CreateAdministratorstr1 int,str2 varchar(20)ASdeclare flag intset flag=0INSERT
15、 INTO 用户表VALUES(str1,str2,'管理员',getdate()set flag=1RETURN flag3.4.2 CreateUser(创建用户)CREATE PROCEDURE dbo.CreateUserstr1 int,str2 varchar(20),str3 varchar(15),str4 varchar(2),str5 int,str6 varchar(20),str7 varchar(50),str8 varchar(18)ASdeclare insert1 intdeclare insert2 intdeclare maxerr ints
16、et maxerr = 0begin transactionINSERT INTO 用户表VALUES(str1,str2,'会员',getdate()set insert1 = errorif insert1>maxerrset maxerr=insert1INSERT INTO 会员信息表VALUES(str1,str3,str4,str5,str6,str7,'普通会员',0,str8)set insert2 = errorif insert2>maxerrset maxerr=insert2if maxerr<>0beginrol
17、lbackprint '事务已回滚'endelsecommitRETURN maxerr3.4.3 UpdateUser(更新用户)CREATE PROCEDURE dbo.UpdateUsername int,code varchar(20)ASdeclare flag intupdate 用户表set 密码=codewhere 帐号=name;set flag = 1RETURN flag3.4.4 DeleteUser(删除用户)CREATE PROCEDURE dbo.DeleteUsername int,code varchar(20)ASdeclare maxerr
18、 intdeclare dele1 intdeclare dele2 intdeclare dele3 intdeclare dele4 intset maxerr=0begin transactiondelete from 用户表where 帐号=name and 密码=code;set dele1=errorif dele1>maxerrset maxerr=1delete from 会员信息表where 帐号=name;set dele2=errorif dele2>maxerrset maxerr=1delete from 场地租借表where 帐号=name;set de
19、le3=errorif dele3>maxerrset maxerr=1delete from 球拍租借表where 帐号=name;set dele4=errorif dele4>maxerrset maxerr=1if maxerr<>0beginrollbackprint '事务已回滚'endelsebegincommitendRETURN maxerr3.4.5 RentQC(租借球场)CREATE PROCEDURE dbo.RentQCnum int,name int,time datetime,rent moneyASdeclare max
20、err intdeclare alt1 intdeclare alt2 intdeclare alt3 intdeclare alt4 intset maxerr=0begin transactionupdate 场地表 set 状态='使用中' where 场地号=numset alt1=errorif alt1>maxerrset maxerr=alt1insert into 场地租借表(场地号,帐号,租借时刻,返还时间,所需租金) values(num,name,getdate(),time,rent)set alt2=errorif alt2>maxerrs
21、et maxerr=alt2update 会员信息表 set 帐户余额=帐户余额-rent where 帐号=nameset alt3=errorif alt3>maxerrset maxerr=alt3if maxerr<>0beginrollbackprint '出错!事务已回滚'endelsebegincommitendRETURN maxerr3.4.6 RentQP(租借球拍)CREATE PROCEDURE dbo.RentQPnum int,name int,time datetime,rent money-rest floatASdeclare
22、 maxerr intdeclare alt1 intdeclare alt2 intdeclare alt3 intdeclare alt4 intset maxerr=0begin transactionupdate 球拍表 set 状态='使用中' where 球拍号=numset alt1=errorif alt1>maxerrset maxerr=alt1insert into 球拍租借表(球拍号,帐号,租借时刻,返还时间,所需租金) values(num,name,getdate(),time,rent)set alt2=errorif alt2>max
23、errset maxerr=alt2update 会员信息表 set 帐户余额=帐户余额-rent where 帐号=nameset alt3=errorif alt3>maxerrset maxerr=alt3if maxerr<>0beginrollbackprint '出错!事务已回滚'endelsebegincommitendRETURN maxerr3.4.7 CompareCode(验证密码)CREATE PROCEDURE dbo.CompareCodename int,code varchar(20)ASdeclare flag intset
24、flag=0if exists(select * from 用户表where 帐号=name and 密码=code)set flag=1RETURN flag4.系统设计4.1 主界面用户登录输入帐号和密码,系统连接到数据库验证帐号和密码是否配对,主要代码如下。 private void pictureBox3_Click(object sender, EventArgs e) if(textBox1.Text = "") MessageBox.Show("帐号不能为空!","提示"); else if(textBox2.Text
25、= "") MessageBox.Show("密码不能为空!","提示"); else SqlConnection conn = new SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Badminton.mdf;Integrated Security=True;User Instance=True"); try conn.Open(); /验证密码是否正确 SqlCommand cmd = conn.CreateComm
26、and(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "CompareCode" SqlParameter inparm_1 = cmd.Parameters.Add("name", SqlDbType.Int); inparm_1.Direction = ParameterDirection.Input; inparm_1.Value = textBox1.Text.Trim(); SqlParameter inparm_2 = cmd.Parameters.Ad
27、d("code", SqlDbType.VarChar); inparm_2.Direction = ParameterDirection.Input; inparm_2.Value = textBox2.Text.Trim(); SqlParameter outparm_1 = cmd.Parameters.Add("flag", SqlDbType.Int); outparm_1.Direction = ParameterDirection.ReturnValue; cmd.ExecuteNonQuery(); if (int)(cmd.Parame
28、ters"flag".Value) = 0) MessageBox.Show("密码或帐号错误!"); else string query = "select 帐号,身份 from 用户表 where 帐号=" + textBox1.Text.Trim(); SqlCommand cmd1 = new SqlCommand(query, conn); SqlDataReader reader = cmd1.ExecuteReader(); reader.Read(); name = reader0.ToString().Trim();
29、 identity = reader1.ToString().Trim(); reader.Close(); pictureBox2.Visible = false; textBox1.Visible = false; textBox2.Visible = false; pictureBox_login.Visible = false; VIPLoad(); RentLoad(); pictureBox_login.Image = Image.FromFile("imagebackground0.jpg"); toolStripStatusLabel1.Text = &qu
30、ot;当前用户:" + name + " " + identity; toolStripStatusLabel2.Text = "登录时间:" + DateTime.Now.ToString(); timer1.Enabled = true; conn.Close(); catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); 登录后,系统根据帐号的身份限定使用权限,由VIPLoad()方法实现,主要代码如下。private void VIPLoad() if
31、 (identity = "管理员") 高级权限ToolStripMenuItem.Visible = false; else if(identity="会员") 添加帐号ToolStripMenuItem.Visible = false; 查看帐号ToolStripMenuItem.Visible = false; 删除帐号ToolStripMenuItem.Visible = false; 充值ToolStripMenuItem.Visible = false; 高级权限ToolStripMenuItem.Visible = false; 租借管理T
32、oolStripMenuItem.Visible = false; 查看ToolStripMenuItem.Visible = false; 编辑通知ToolStripMenuItem.Visible = false; 进入系统后,所有球场和球拍的状态都初始化为“空闲”,由RentLoad()方法实现,主要代码如下。private void RentLoad() SqlConnection conn = new SqlConnection("Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Badminton.mdf;In
33、tegrated Security=True;User Instance=True"); string query1 = "update 球拍表 set 状态='空闲'" string query2 = "update 场地表 set 状态='空闲'" try conn.Open(); SqlCommand cmd1 = new SqlCommand(query1, conn); SqlCommand cmd2 = new SqlCommand(query2, conn); cmd1.ExecuteNonQuer
34、y(); cmd2.ExecuteNonQuery(); conn.Close(); catch (Exception ex) MessageBox.Show(ex.Message); finally conn.Close(); 定义一个Rent类来临时存储租借信息,包括租借类型、租借的编号、租借的起止时间、花费、租借人等信息。Rents序列存储所有正在租借中的信息。当已有会员租借物品时,系统需要从当前时间开始计时,达到租借时间时弹出提示消息。Rent类的定义如下。public class Rent private string type;/租借类型 private int num;/编号 p
35、rivate DateTime dtime; private string state;/租借状态 private decimal cost; public string person; public string begin;/起始时间 public string end;/截止时间 public string Type get return type; set if(value="球场" |value ="球拍") type=value; public int Num get return num; set if(value>0) num=va
36、lue; public DateTime DT get return dtime; set dtime=value; public string State get return state; set if (value = "使用中" | value = "空闲") state = value; public decimal Cost get return cost; set if (value > 0) cost = value; public Rent(string type, int num, DateTime dtime, string
37、state,string ps,string be,string en,decimal c) Type = type; Num = num; DT = dtime; State = state; person = ps; begin = be; end = en; Cost = c; 定义一个RentQCorQP()方法获取租借信息。public void RentQCorQP(string type, int num, DateTime dt, string state, string ps, string be, string en, decimal c) RENT = new Rent(
38、type, num, dt, state, ps, be, en, c); Rents.Add(RENT); 为了确保物资到期返还,新增一个timer计时控件,不断遍历Rents序列,当有到期的租借时,弹出消息框,将租借状态修改为“空闲”,并将该租借从Rents序列中移除。主要代码如下。 private void timer2_Tick(object sender, EventArgs e) try for (int i = Rents.Count - 1; i >= 0; i-) Rent r = (Rent)Rentsi; DateTime dt = DateTime.Now; if
39、 (r.DT <= dt && r.State = "使用中") r.State = "空闲" MessageBox.Show(" " + r.Type + r.Num + "租借已到时间!nn 详细信息n 帐号:" + r.person + "n 租借时间:" + r.begin + "n 返还时间:" + r.end + "n 租金:"+r.Cost+"元", "租借管理"); string
40、 query = "" switch (r.Type) case "球场": query = "update 场地表 set 状态='空闲' where 场地号=" + r.Num.ToString(); break; case "球拍": query = "update 球拍表 set 状态='空闲' where 球拍号=" + r.Num.ToString(); break; SqlConnection conn = new SqlConnection(&qu
41、ot;Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Badminton.mdf;Integrated Security=True;User Instance=True"); try conn.Open(); SqlCommand cmd = new SqlCommand(query, conn); int count = cmd.ExecuteNonQuery(); if (count != 1) MessageBox.Show(r.Type + r.Num.ToString() + "状态出错!", "提示"); conn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城乡污水处理和管网建设工程项目可行性研究报告写作模板-申批备案
- 2025年江西陶瓷工艺美术职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年昆明铁道职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年揭阳职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 2025年氢能源行业发展动态与前景分析
- 展览展示服务合同模板
- 幼儿园支教工作活动方案总结四篇
- 计件工资劳动合同范文
- 酒店转让简单合同范本
- 场摊位的租赁合同年
- 2025年度高端商务车辆聘用司机劳动合同模板(专业版)4篇
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2025长江航道工程局招聘101人历年高频重点提升(共500题)附带答案详解
- 2025年黑龙江哈尔滨市面向社会招聘社区工作者1598人历年高频重点提升(共500题)附带答案详解
- 《妊娠期恶心呕吐及妊娠剧吐管理指南(2024年)》解读
- 《黑神话:悟空》跨文化传播策略与路径研究
- 《古希腊文明》课件
- 居家养老上门服务投标文件
- 长沙市公安局交通警察支队招聘普通雇员笔试真题2023
- 2025年高考语文作文满分范文6篇
- 零售业连锁加盟合同
评论
0/150
提交评论