C课程设计银行个人账户管理系统_第1页
C课程设计银行个人账户管理系统_第2页
C课程设计银行个人账户管理系统_第3页
C课程设计银行个人账户管理系统_第4页
C课程设计银行个人账户管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、C#课程设计报告题目:银行个人账户管理系统专 业: 网络工程 班 级: 网络 101 计算机科学与信息学院目 录1 需求分析11.1 系统概述11.2 功能性需求11.3 非功能性需求22 概念设计23 逻辑设计34 数据库设计44.1 数据库表属性44.2 数据库表建立44.3 预插入数据55 系统设计65.1 管理员登录65.1.1 界面65.1.2 流程图65.1.3 主要代码75.2 后台管理85.2.1 顶部85.2.2 中部95.2.3 底部95.3 创建账户105.3.1 界面105.3.2 流程图105.3.3 主要代码115.3.4 结果125.4 账户管理135.4.1 登

2、录界面135.4.2 流程图145.4.3 进入账户145.5 存款145.5.1 运行界面145.5.2 主要代码155.6 取款165.6.1 运行界面165.6.2 主要代码165.7 收支明细195.7.1 运行页面195.7.2 主要代码205.8 删除账户225.8.1 运行界面225.8.2 主要代码235.8.3 结果246 设计过程及心得25分工说明251 需求分析1.1 系统概述在没有使用银行管理系统前,采取的是人工方式,相对而言耗时大,效率低且造成一定的资源浪费。我们通过设计银行管理系统,可以对银行的一般业务进行有序管理,对于客户的个人资料也不需要做大量烦琐的登记工作,变

3、的相对简单容易操作且不用耗费大量人力财力。初步分析,该系统的主要功能是管理每个用户的信息,管理员登陆系统后,可以查看用户的信息,修改用户的信息,查看用户的余额,帮用户存、取款,开户和销户。1.2 功能性需求通过分析,该系统只有一个用户管理模块,管理员登陆模块后管理用户的信息,框图如下:1.3 非功能性需求本系统采用的是基于E-R图的设计方法。根据以上情况,该系统总体目标如下:(1)以真实、准确数据为基础,以先进、有效、合理的管理方法为核心,以现代计算机技术为手段,建设银行个人账户管理系统。(2)提高银行办事效率,银行负责人及工作人员能及时、准确地掌握各种信息,为决策提供有效的依据。(3)实现内

4、部管理电脑化,实现信息共享。(4)使银行的账户管理工作系统化、规范化、自动化,从而达到提高账户管理效率的目的。(5)使办公人员可以轻松快捷地完成对账户管理的任务。2 概念设计通过以上的分析,可以知道,该系统的实体有管理员、用户,其实体如下:将以上的实体图集成为E-R图得到如下:3 逻辑设计将以上的E-R图转换为关系模型,得到如下:管理员(AdminID,AdminPassword,AdminName);账户表(账号,户名,余额,手机号码,身份证号,密码);记录表(账号,收支,金额,余额,时间,操作员);4 数据库设计4.1 数据库表属性本系统包含了如下三个表:管理员:字段名称数据类型字段长度允

5、许空否备注AdminIDvarchar50NO主键AdminPasswordvarchar50NOAdminNamevarchar50NO账户表:字段名称数据类型字段长度允许空否备注账号intNO主键户名varchar50NO余额floatNO手机号码char11NO身份证号char18NO密码char6NO记录表:字段名称数据类型字段长度允许空否备注账号intNO收支varchar10NO金额floatNO余额floatNO时间datetimeNO操作员varchar50NO4.2 数据库表建立这里我们建表的时候没有用代码,是直接用手工添加的。4.3 预插入数据预先插入管理员的数据,以登录系

6、统。账户表可以登录系统后创建,所以不需要预插入数据。既然无账户数据,记录表当然就没有数据。5 系统设计5.1 管理员登录5.1.1 界面登录界面居中,并且顶部留有一定空间,聚焦在工号:5.1.2 流程图流程图如下:5.1.3 主要代码点击登录按钮,调用myBtnButton_Click()函数,Login.aspx.cs部分代码:protected void CheckLogin() SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.sqlexpress;database=银行个人账户管理

7、系统;integrated security=true;" /连接数据库的字符串 if (con.State = System.Data.ConnectionState.Closed) con.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select * from 管理员 where AdminID=ID and AdminPassword=pwd" SqlParameter p = new SqlParameter("ID", this.myAdminID.Tex

8、t); cmd.Parameters.Add(p); p = new SqlParameter("pwd", this.myAdminPassword.Text); cmd.Parameters.Add(p); cmd.Connection = con; SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (dr"AdminPassword".ToString() = this.myAdminPassword.Text) Session"valid" = true; /用来

9、判断系统的登录 Session"adminName" = dr"AdminName".ToString(); /操作员Session Response.Redirect("SystemFrame.aspx"); else this.ltErrInfo.Text = "<script>alert('登录信息错误!');</script>" else this.ltErrInfo.Text = "<script>alert('登录信息错误!'

10、);</script>" protected void myBtnButton_Click(object sender, EventArgs e) CheckLogin();5.2 后台管理正确登录后即可进去后台管理页面:后台管理页面分为三部分:顶部显示信息附有退出按钮;中部分为账户管理、创建账户、删除账户三个链接;底部是显示窗口,中部的连接页面将在这里显示。5.2.1 顶部顶部左边显示“银行个人账户管理系统”:顶部右边利用生成的操作员Session显示操作员,并有退出按钮:SystemFrame.aspx上部div代码:<div> <table sty

11、le="width: 100%"> <tr> <td> <h1>银行个人账户管理系统</h1> </td> <td style="text-align: right">操作员:<%=Session"adminName".ToString() %></td> <td style="text-align: right"> <asp:Button ID="Button_Quit" r

12、unat="server" Text="退出" OnClick="Quit_Click" /> </td> </tr> </table></div>5.2.2 中部SystemFrame.aspx中部div代码:<div style="margin-top: 10px"> <%-中部分-%> <a href="AccountManagerLogin.aspx" target="MainFrame&quo

13、t;>账户管理</a> <a href="CreateAccount.aspx" target="MainFrame">创建账户</a> <a href="DeleteAccount.aspx" target="MainFrame">删除账户</a></div>5.2.3 底部SystemFrame.aspx底部div代码:<div style="margin-top: 10px; height: 500px;"

14、> <%-下部分-%> <iframe src="Main.aspx" name="MainFrame" id="MainFrame" style="border-width: 1px; border-color: red; width: 100%; height: 100%;"></iframe></div>MainFrame.aspx代码:<div> <h2 style="margin-top: 30px;">欢迎

15、使用银行管理系统</h2></div>5.3 创建账户5.3.1 界面界面居中,并且顶部留有一定空间,聚焦在账号:5.3.2 流程图5.3.3 主要代码CreateAccount.aspx.cs部分代码:SqlConnection con = new SqlConnection();try con.ConnectionString = "server=.sqlexpress;database=银行个人账户管理系统;integrated security=true;" if (con.State = System.Data.ConnectionStat

16、e.Closed) con.Open(); #region 创建账户,同时添加第一次收支记录 string sql = "insert into 账户表(账号,户名,余额,手机号码,身份证号,密码) values(UserID,UserName,Money,UserTel,IDcard,pwd) insert into 记录表 (账号,收支,金额,余额,时间,操作员) values(UserID,'存入',Money,Balances,DateTime,AdminName)" SqlCommand cmd = new SqlCommand(sql, con)

17、; SqlParameter p = new SqlParameter("UserID", this.userID.Text); cmd.Parameters.Add(p); p = new SqlParameter("UserName", this.userName.Text); cmd.Parameters.Add(p); p = new SqlParameter("Money", this.Money.Text); cmd.Parameters.Add(p); p = new SqlParameter("UserTel

18、", this.userTel.Text); cmd.Parameters.Add(p); p = new SqlParameter("IDcard", this.IDcard.Text); cmd.Parameters.Add(p); p = new SqlParameter("pwd", this.UserPassword.Text); cmd.Parameters.Add(p); p = new SqlParameter("Balances", this.Money.Text); cmd.Parameters.Add(

19、p); p = new SqlParameter("DateTime", DateTime.Now); cmd.Parameters.Add(p); p = new SqlParameter("AdminName", Session"adminName".ToString(); cmd.Parameters.Add(p); cmd.ExecuteNonQuery(); #endregion Session"userNum" = this.userID.Text; Session"money" =

20、 this.Money.Text; Session"explain" = "存入" this.ltTip.Text = "<script>alert('创建成功!');</script>" this.userID.Text = "" this.userName.Text = string.Empty; this.Money.Text = string.Empty; this.userTel.Text = string.Empty; this.IDcard.Text = str

21、ing.Empty; this.UserPassword.Text = string.Empty; this.userID.Focus();catch (Exception ex) this.ltTip.Text = "<script>alert('创建失败!');</script>" this.userID.Focus();finally if (con.State = System.Data.ConnectionState.Open) con.Close(); 5.3.4 结果输入正确信息:显示创建成功:查看数据库:账户表有了一条

22、用户信息:记录表也有了一条存入记录:再创建一个账户,留用删除。5.4 账户管理5.4.1 登录界面界面居中,并且顶部留有一定空间,聚焦在账号:5.4.2 流程图5.4.3 进入账户显示账户信息:5.5 存款5.5.1 运行界面只需输入金额,提交就可以了:5.5.2 主要代码SaveMoney.aspx.cs部分代码:SqlConnection con = new SqlConnection();try float f1 = float.Parse(this.saveMoney.Text); float f2 = float.Parse(Session"userBalances&quo

23、t;.ToString(); float f3 = f1 + f2; /计算新的余额 con.ConnectionString = "server=.sqlexpress;database=银行个人账户管理系统;integrated security=true;" if (con.State = System.Data.ConnectionState.Closed) con.Open(); /更新账户金额,同时添加交易记录 string sql = "update 账户表 set 余额=newMoney where 账号=userID insert into 记录

24、表 (账号,收支,金额,余额,时间,操作员) values(UserID,'存入',Money,Balances,DateTime,AdminName);" SqlCommand cmd = new SqlCommand(sql, con); SqlParameter p = new SqlParameter("newMoney", f3); cmd.Parameters.Add(p); p = new SqlParameter("userID", Session"UserID".ToString(); cm

25、d.Parameters.Add(p); p = new SqlParameter("Money", this.saveMoney.Text); cmd.Parameters.Add(p); p = new SqlParameter("Balances", Session"userBalances".ToString(); cmd.Parameters.Add(p); p = new SqlParameter("DateTime", DateTime.Now); cmd.Parameters.Add(p); p =

26、 new SqlParameter("AdminName", Session"adminName".ToString(); cmd.Parameters.Add(p); cmd.ExecuteNonQuery(); Session"userBalances" = f3.ToString(); /更新余额Session this.ltTip.Text = "<script>alert('存款成功!');</script>"catch (Exception ex) this.lt

27、Tip.Text = "<script>alert('存款失败!');</script>" this.saveMoney.Focus();finally if (con.State = System.Data.ConnectionState.Open) con.Close(); 5.6 取款5.6.1 运行界面取款需要再次验证密码:5.6.2 主要代码Withdrawals.aspx.cs部分代码:SqlConnection con = new SqlConnection();con.ConnectionString = "

28、server=.sqlexpress;database=银行个人账户管理系统;integrated security=true;"if (con.State = System.Data.ConnectionState.Closed) con.Open();SqlCommand cmd = new SqlCommand();cmd.CommandText = "select * from 账户表 where 账号=uID and 密码=pwd"SqlParameter p = new SqlParameter("uID", Session&quo

29、t;UserID".ToString();cmd.Parameters.Add(p);p = new SqlParameter("pwd", this.UserPassword.Text); /验证输入框里的密码cmd.Parameters.Add(p);cmd.Connection = con;SqlDataReader dr = cmd.ExecuteReader();if (dr.Read() if (dr"密码".ToString() = this.UserPassword.Text) if (con.State = System.Da

30、ta.ConnectionState.Open) con.Close(); con.ConnectionString = "server=.sqlexpress;database=银行个人账户管理系统;integrated security=true;" if (con.State = System.Data.ConnectionState.Closed) con.Open(); try float f1 = float.Parse(this.withdrawalsMoney.Text); float f2 = float.Parse(Session"userBa

31、lances".ToString(); float f3 = f2 - f1; if (f3 <= 0) this.ltTip.Text = "<script>alert('余额不足!');</script>" this.withdrawalsMoney.Focus(); return; /更新账户金额,同时添加交易记录 string sql = "update 账户表 set 余额=newMoney where 账号=userID insert into 记录表 (账号,收支,金额,余额,时间,操作员) v

32、alues(UserID,'取出', Money, Balances, DateTime, AdminName) ;" cmd = new SqlCommand(sql, con); p = new SqlParameter("newMoney", f3); cmd.Parameters.Add(p); p = new SqlParameter("userID", Session"UserID".ToString(); cmd.Parameters.Add(p); p = new SqlParameter(&

33、quot;Money", this.withdrawalsMoney.Text); cmd.Parameters.Add(p); p = new SqlParameter("Balances", Session"userBalances".ToString(); cmd.Parameters.Add(p); p = new SqlParameter("DateTime", DateTime.Now); cmd.Parameters.Add(p); p = new SqlParameter("AdminName&qu

34、ot;, Session"adminName".ToString(); cmd.Parameters.Add(p); cmd.ExecuteNonQuery(); Session"userBalances" = f3.ToString(); this.ltTip.Text = "<script>alert('取款成功!');</script>" catch (Exception) this.ltTip.Text = "<script>alert('取款失败!'

35、;);</script>" this.withdrawalsMoney.Focus(); finally if (con.State = System.Data.ConnectionState.Open) con.Close(); else this.ltTip.Text = "<script>alert('密码错误!');</script>" else this.ltTip.Text = "<script>alert('密码错误!');</script>&quo

36、t;5.7 收支明细5.7.1 运行页面显示各条收支记录:数据库记录表:很明显,余额没处理对,系统里的余额是最终余额了,而没显示每次收支记录后的余额,而且小数点位数较多,这是string转换为float时没有处理位数而导致的;而数据库的余额显示慢一次,本次收支的余额没有及时更新,显示在了下一次。这是一个bug,因为是最后写报告时才发现,所以没有时间再去调试修改,望老师见谅。5.7.2 主要代码Details.aspx.部分代码:<tr> <td>第<%=Session"CurrentPage" %>页/共<%=Session&quo

37、t;TotalPages" %>页(<%=Session"TotalCount" %>条) </td> <td> <% if (Session"CurrentPage".ToString() = "1" | Session"CurrentPage".ToString() = "0") Response.Write("首页 上一页"); else %> <a href="?currentPage=1

38、&PageSize=<%=Session"PageSize" %>" target="_self">首页</a> <a href="?currentPage=<%=int.Parse(Session"CurrentPage".ToString()-1 %>&PageSize=<%=Session"PageSize" %>" target="_self">上一页</a> &l

39、t;% %> </td> <td> <% if (Session"CurrentPage".ToString() = Session"TotalPages".ToString() Response.Write("下一页 尾页"); else %> <a href="?currentPage=<%=int.Parse(Session"CurrentPage".ToString()+1 %>&PageSize=<%=Session&qu

40、ot;PageSize" %>" target="_self">下一页</a> <a href="?currentPage=<%=int.Parse(Session"TotalPages".ToString()%> &PageSize=<%=Session"PageSize" %>" target="_self">尾页</a> <% %> </td> <td>跳

41、转<asp:TextBox runat="server" ID="tbTartgetPage" Width="30" />页</td> <td> <asp:Button runat="server" ID="btnGo" Text="Go" OnClick="btnGo_Click" /> <asp:DropDownList runat="server" ID="ddlPa

42、geSize" AutoPostBack="true" OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged"> <asp:ListItem Text="2行" Value="2"></asp:ListItem> <asp:ListItem Text="5行" Value="5"></asp:ListItem> <asp:ListItem Text

43、="10行" Value="10"></asp:ListItem> <asp:ListItem Text="20行" Value="20"></asp:ListItem> <asp:ListItem Text="50行" Value="50"></asp:ListItem> </asp:DropDownList> </td> <td> <asp:Button runat

44、="server" ID="btQuit" Text="返回" OnClick="btnQuit_Click" /> </td></tr>Details.aspx.cs部分代码:protected void Page_Load(object sender, EventArgs e)string str = "账号=" + Session"userID".ToString();cmd.CommandText = string.Format(&quo

45、t;select count(*) from 记录表 where 0", str); int totalCount = int.Parse(cmd.ExecuteScalar().ToString();int totalPages = (int)Math.Ceiling(double)totalCount / pageSize);Session"TotalCount" = totalCount;Session"TotalPages" = totalPages;#region 处理当前页int currentPage;if (!int.TryPa

46、rse(Request"CurrentPage", out currentPage) currentPage = 1;currentPage = currentPage < 1 ? 1 : currentPage;currentPage = currentPage > totalPages ? totalPages : currentPage;Session"CurrentPage" = currentPage;#endregioncmd.CommandText = string.Format("select * from (sel

47、ect row_number() over (order by 账号 asc) as RowNo,* from 记录表 where 0) as TempTable where RowNo>PageSize*(CurrentPage-1) and RowNo<PageSize*CurrentPage+1", str);SqlParameter p = new SqlParameter("PageSize", pageSize);cmd.Parameters.Add(p);p = new SqlParameter("CurrentPage&quo

48、t;, currentPage);cmd.Parameters.Add(p);dr = cmd.ExecuteReader();protected void btnGo_Click(object sender, EventArgs e) string url = string.Format("Details.aspx?CurrentPage=0&PageSize=1", this.tbTartgetPage.Text, Session"PageSize"); Response.Redirect(url);protected void ddlPag

49、eSize_SelectedIndexChanged(object sender, EventArgs e) DropDownList ddl = (DropDownList)sender; string url = string.Format("Details.aspx?CurrentPage=1&PageSize=0", ddl.SelectedItem.Value); Response.Redirect(url);5.8 删除账户5.8.1 运行界面界面居中,并且顶部留有一定空间,聚焦在账号,需要验证身份证号和密码:5.8.2 主要代码DeleteAccoun

50、t.aspx.cs部分代码:protected void btnYes_Click(object sender, EventArgs e)cmd.CommandText = "select * from 账户表 where 账号=uID and 密码=pwd and 身份证号=IDc"SqlParameter p = new SqlParameter("uID", this.UserID.Text);cmd.Parameters.Add(p);p = new SqlParameter("pwd", this.UserPassword.Text);cmd.Parameters.Add(p);p = new SqlParameter("IDc", this.IDcard.Text);cmd.Parameters.Add(p);cmd.Connection = con;SqlDataReader dr = cmd

温馨提示

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

评论

0/150

提交评论