《C课程设计自动存取款机软件设计》由会员分享,可在线阅读,更多相关《C课程设计自动存取款机软件设计(13页珍藏版)》请在金锄头文库上搜索。
1、 科信学院课程设计说明书 (2012/2013学年第一学期) 课程名称 : 软件程序设计 题 目 : 自动存取款机软件设计 专业班级 : 学生姓名 : 放羊娃 学 号: 指导教师 : 设计周数 : 2周 设计成绩 : 2013年1月18日 1 课程设计目的(1)初步掌握使用C#工具设计一个具体实例的方法,包括软件的设计,调试的全过程。(2)通过本次设计掌握使用c#语言中窗体的建立,各个控件的使用,以及界面的设计。(3)进一步巩固所学的C#及数据库的相关理论知识,提高分析和解决实际问题的能力。 2 课程的分析ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现
2、代计算机化的网络系统。可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。 减少了用户办理业务的等待时间;用户可以随时随地可以随心所欲存取款,并且操作简单易懂;用户还可以选择在柜台办理业务或自己在自动提款机和自动取款机办理业务。2.1需求分析2.1.1 课设任务(1)根据技术要求和现有开发环境,分析题目(2)选定设计方案(3)画出软件框架结构图,关键程序流程图(4)使用C#语言和.net框架,并结合数据库,实现软件(5)调试,修改并完善程序2.1.2 课设要求(1)模仿银行ATM的运行界面。(2)凭正确的卡号和密码进入系
3、统。(3)实现取款,余额查询,修改密码,交费,转账,存款操作。2.2系统的设计(1)输入:用户通过键盘进行输入。(2)性能:可使用户在无任何经验的情况下进行操作ATM自助式服务。(3)功能方面:取款、查询余额、修改密码、存款、交费、转账。2.2.1 数据库的分析与设计由自动提款机模拟软件系统的需求分析可知,本系统应为windows应用窗体的设计,据提供的实验环境及以前所学的理论知识,采用SQL数据库,根据自动提款机模拟软件的功能要求,在shuju数据库中建立两张表来存储信息,分别为Table1和RecordIofo。Table1表中用来存储用户的卡号,密码,用户名,余额及用于卡号锁定的字段用户
4、基本信息表(Table1) recordIofo表中用于存储用户的卡号,用户名,存取结余,主要用于数据库的更新操作。 2.2.2 取款机逻辑层次设计本次课设的自动提款机模拟软件系统可以使用户进行登录、取款、转账、查询余额、修改密码、存款和交费等基本业务。ATM系统基本结构框图如图2-1所示: 2.3 程序设计用户进入后,点击用户登录进入登陆界面,在登录窗口中输入卡号和密码,判断卡号与密码是否正确,若卡号与密码正确则进入用户操作界面,并根据用户的相关操作给用户提供相应的服务。若卡号与密码不正确,弹出对话框提示用户确认卡号和密码错误后重新输入,并对输入错误次数进行计数,若输入密码错误次数大于3次,
5、则锁定该帐号。2.3.1 程序流程图 2.3.2 窗体的具体实施和代码(1)用户登陆窗体:通过登陆界面可以进行用户的登陆过程,进而实现相应的用户操作。即当用户名与密码都正确时用户就可以登陆进行所需的操作。 代码为:if (mask1.Text.Trim() != "")string connString = "DataSource=.SQLEXPRESS;AttachDbFilename=|DataDirectory|shuju.mdf;IntegratedSecurity=True;Connect Timeout=30;User Instance=True&qu
6、ot;SqlConnection conn = new SqlConnection(connString);conn.Open();string ssql = "select * from Table1 where kahao=" + mask1.Text.Trim() + "" SqlCommand ccmd = new SqlCommand(ssql, conn);SqlDataReader dr1 = ccmd.ExecuteReader();if (dr1.Read()dr1.Close();name = mask1.Text.Trim().To
7、String();string isornot = "select lock from Table1 where kahao=" +mask1.Text.Trim().ToString() + " "SqlCommand cmd0 = new SqlCommand(isornot, conn);SqlDataReader drr = cmd0.ExecuteReader();if (drr.Read() && drr"lock".ToString() = "1")MessageBox.Show(&q
8、uot;您的帐号已被锁定,请与银行管理员联系!");mask2.Text = ""mask1.Text = ""drr.Close();elsedrr.Close();string sql = "select * from Table1 where kahao=" +mask1.Text.Trim().ToString() + "and mima=" + mask2.Text.Trim().ToString() + ""SqlCommand cmd = new SqlCommand(s
9、ql, conn);SqlDataReader dr = cmd.ExecuteReader();if (dr.Read()mask1.Text = dr"kahao".ToString();FrmMian frm = new FrmMian();frm.Show();this.Hide();elseif (this.A+ < 2)MessageBox.Show("您密码不正确,请重新输入!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);mask2.Text = &qu
10、ot;"mask1.Text = ""elsedr.Close();string sql1 = "update Table1 set lock=1 where kahao=" + name + ""SqlCommand cmd1 = new SqlCommand(sql1, conn);if (cmd1.ExecuteNonQuery() = 1)MessageBox.Show("您已经输入超过三次,该帐号将被锁定,请联系银行管理员!", "错误", MessageBoxButtons
11、.OK, MessageBoxIcon.Error);mask2.Text = ""mask1.Text = ""elseMessageBox.Show("账号不正确"); conn.Close();elseMessageBox.Show("请输入卡号与密码!", "警告!", MessageBoxButtons.OK, MessageBoxIcon.Warning); mask1.Text = ""mask2.Text = ""(2)存款窗体:通过该界面
12、用户可以从自己的账户中进行存款操作,但是存款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作。 代码为:string connString = "DataSource=.SQLEXPRESS;AttachDbFilename=|DataDirectory|shuju.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"SqlConnection conn = new SqlConnection(connString);conn.Open();string sql = "S
13、ELECT * FROM Table1 WHERE kahao=" + frmlo.name + "" SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader dr = cmd.ExecuteReader();dr.Read();decimal jine = Convert.ToDecimal(dr4);decimal sqje = Convert.ToDecimal(textBox1.Text);string presentname = Convert.ToString(dr4);string cardi
14、d = "" + frmlo.name + ""decimal change = sqje;string time = Convert.ToString(DateTime.Now);dr.Close();if (sqje % 100 = 0) MessageBox.Show("操作正在,请稍侯");decimal leftmoney = jine + sqje;string ssql = "Update Table1 set yue = " + leftmoney + " where kahao =" + frmlo.name + ""SqlCommand ccmd = new SqlCommand(ssql, conn);cunkuang frm = new cunkuang();frm.Show();this.Hide();textBox1.Text = ""int i = ccmd.ExecuteNonQuery();if (i = 1)textBox1.Text