C#课程设计—自动取款机模拟软件设计

更新时间:2023-08-27 23:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

**学院

课程设计说明书

(2012/2013学年第一学期)

课程名称 : 软件程序设计 题 目 : 自动提款机模拟软件 专业班级 :

学生姓名 : 放羊娃 学 号: 指导教师 :

设计周数 : 2周

设计成绩 :

2013年1月18日

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

目 录

1、课程设计目的 2、系统的分析与设计 2.1需求分析 2.1.1 课设任务 2.1.2 课设要求 2.2系统的设计

2.2.1 数据库的分析与设计 2.2.2逻辑层次的设计 2.3程序设计 2.3.1 程序流程图 2.3.2系统实施

3、课程设计总结或结论 4、参考文献

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

1、 课程设计目的

通过c#课程设计,使学生能将学到的面向对象的程序设计思想应用到具体的工作和学习中,加深对类与对象的理解。

进一步巩固所学的c#及数据库的相关理论知识,提高分析和解决实际问题的能力。 2、系统的分析与设计

ATM机很方便,没有休息日,上班时间也长,除了换钱的半个小时左右,可以通宵达旦的工作。几乎相当于3个银行工作人员倒班干活。大大提高了银行效率,节约了人力和储户的时间。缺点是,有些人不会使用,会产生吞卡等现象,给部分人带来麻烦。但随着人们素质放入提高,这些缺点的影响已经越来越小了。 2.1需求分析 2.1.1 课设任务

(1)根据技术要求和现有开发环境,分析题目。

(2)选定设计方案,包括,软件功能结构,画出软件框架结构图,关键程序流程图, 数据库中表的结构设计等。

(4)使用C#语言和.net框架,并结合数据库,实现软件。 (5)调试,修改并完善程序。 2.1.2 课设要求

(1)仿某银行的运行界面。

(2)用户凭正确的卡号和密码进入系统(若输入密码错误次数达到上限,锁定账号)。 (3)取款、交费、转账、查询余额、修改密码等功能。 (4)其他功能(包括开户,存款,销户等功能)。 2.2系统的设计

(1)输入:用户通过键盘进行输入。

(2)性能:可使用户在无任何经验的情况下进行操作ATM自助式服务。 (3)功能方面:取款、查询余额、修改密码、记录查询、交费、转账。

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

2.2.1 数据库的分析与设计

由自动提款机模拟软件系统的需求分析我们可以知道,本系统应为windows应用窗体的设计,据提供的实验环境及以前所学的理论知识,采用SQL数据库,根据自动提款机模拟软件的功能要求,在Database1数据库中建立两张表来存储信息,分别为userinfo和recordinfo。

userinfo表中用来存储用户的卡号,密码,用户名,余额及用于卡号锁定的字段

recordInfo表中用于存储用户的卡号,用户名,存取结余,主要用于数据库的更新操作。

表2-2 用户操作信息表(recordInfo)

2.2.2逻辑层次的设计

本次课设的自动提款机模拟软件系统可以使用户进行登录、取款、转账、查询余额、修改密码、记录查询和交费等基本业务。

ATM自动提款机结构基本框图:

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

图2-1 ATM系统的基本框图

2.3程序设计

用户进入后,点击用户登录进入登陆界面,在登录窗口中输入卡号和密码,判断卡号与

密码是否正确,若卡号与密码正确则进入用户操作界面,并根据用户的相关操作给用户提供相应的服务。若卡号与密码不正确,弹出对话框提示用户确认卡号和密码错误后重新输入,并对输入错误次数进行计数,若输入密码错误次数大于3次,则锁定该帐号。

2.3.1 程序流程图

软件设计程序流程图如图2-2所示:

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

图2-2 程序流程图 2.3.2系统实施

本系统主要通过运用C#的Windows窗体的设计进行开发和实施,主要通过如下几个功能模块来完成系统的具体的实施过程:

(1)用户登陆窗体:通过登陆界面可以进行用户的登陆过程,进而实现相应的用户操作。即当用户名与密码都正确时用户就可以登陆进行所需的操作,其界面如图2-3所示:

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

图2-3 登陆界面

代码如下:

namespace Windowasd {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); } int c;

public static string lockID;

private void button4_Click(object sender, EventArgs e) {

maskedTextBox1.Text = ""; }

private void button3_Click(object sender, EventArgs e) {

if ((maskedTextBox2.Text.Trim() != "")) {

SqlConnection Timeout=30;User Instance=True");

conn

=

new

SqlConnection(@"Data Security=True;Connect

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

conn.Open();

string ssql = "select * from userinfo where yonghu='" + maskedTextBox2.Text.Trim() + "'"; SqlCommand ccmd = new SqlCommand(ssql, conn); SqlDataReader dr1 = ccmd.ExecuteReader(); if (dr1.Read()) {

dr1.Close();

lockID = maskedTextBox2.Text.Trim().ToString(); string

isornot

=

"select

mima

from

userinfo

where

yonghu='"

+

maskedTextBox2.Text.Trim().ToString() + "' ";

SqlCommand cmd0 = new SqlCommand(isornot, conn); SqlDataReader drr = cmd0.ExecuteReader();

if (drr.Read() && drr["mima"].ToString() == "1") {

MessageBox.Show("您的帐号已被锁定,请与银行管理员联系!"); drr.Close(); } else {

drr.Close(); string

sql

=

"select

*

from

userinfo

where

yonghu='"

+

maskedTextBox2.Text.Trim().ToString() + "'and mima='" + maskedTextBox1.Text.Trim().ToString() + "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) {

maskedTextBox2.Text = dr["yonghu"].ToString(); Form2 frm = new Form2(); frm.Show(); this.Hide(); } else {

if (this.c++ < 3) {

MessageBox.Show("您密码不正确,请重新输入!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Error);

maskedTextBox2.Text = "";

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

maskedTextBox1.Text = "";

} else {

dr.Close();

string sql1 = "update userinfo set mima='1' where yonghu='" + maskedTextBox2.Text.Trim() + "'";

SqlCommand cmd1 = new SqlCommand(sql1, conn); if (cmd1.ExecuteNonQuery() == 1) {

MessageBox.Show("您已经输入超过三次,该帐号将被锁定,请联系银行管理员!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } else {

MessageBox.Show("账号不正确");

}

conn.Close(); } else {

MessageBox.Show("请输入卡号与密码!", "警告!!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);

maskedTextBox2.Text = ""; maskedTextBox1.Text = ""; ; } }

private void button1_Click(object sender, EventArgs e) {

Application.Exit(); }

private void Form1_Load(object sender, EventArgs e) { }

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

}

(2)ATM自动取款机服务界面,主菜单可以实现以下服务,其界面如图2-4所示:

图2-4 主菜单

代码如下:

namespace Windowasd {

public partial class Form2 : Form {

public Form2() {

InitializeComponent(); }

private void button2_Click(object sender, EventArgs e) {

Form3 frm = new Form3(); frm.Show(); this.Hide(); }

private void button5_Click(object sender, EventArgs e) {

Form4 frm = new Form4(); frm.Show();

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

this.Hide(); }

private void button3_Click(object sender, EventArgs e) {

Form5 frm = new Form5(); frm.Show(); this.Hide(); }

private void button4_Click(object sender, EventArgs e) {

Form6 frm = new Form6(); frm.Show(); this.Hide(); }

private void button7_Click(object sender, EventArgs e) {

Form1 frm = new Form1(); frm.Show(); this.Hide(); //Application.Exit(); }

private void button1_Click(object sender, EventArgs e) {

Form7 frm = new Form7(); frm.Show(); this.Hide(); }

private void button6_Click(object sender, EventArgs e) {

Form8 frm = new Form8(); frm.Show(); this.Hide(); }

private void Form2_Load(object sender, EventArgs e) {

} }

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

}

(3)取款窗体:通过该界面用户可以从自己的账户中进行取款操作,但是取款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作,当用户余额不足以提取时提示余额不足,其界面如图2-5所示:

图2-5:取款界面 代码如下:

namespace Windowasd {

public partial class Form3 : Form {

public Form3() {

InitializeComponent(); }

private void button3_Click(object sender, EventArgs e) {

Form2 frm = new Form2(); frm.Show(); this.Hide(); }

private void button2_Click(object sender, EventArgs e) {

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

maskedTextBox1.Text = ""; }

private void button1_Click(object sender, EventArgs e) {

SqlConnection Timeout=30;User Instance=True"); conn.Open();

string sql = "SELECT * FROM userinfo WHERE yonghu='" + Form1.lockID+ "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Read();

decimal jine = Convert.ToDecimal(dr[2]);

decimal sqje = Convert.ToDecimal(maskedTextBox1.Text); decimal change = sqje;

string presentname = Convert.ToString(dr[1]); string cardid = "'" + Form1.lockID + "'"; string time = Convert.ToString(DateTime.Now); dr.Close(); if (jine > sqje) {

if (sqje % 100 == 0) {

MessageBox.Show("请在秒内取款……"); decimal leftmoney = jine - sqje;

string ssql = "Update userinfo set yue = '" + leftmoney + "' where yonghu ='" + Form1.lockID + "'";

SqlCommand ccmd = new SqlCommand(ssql, conn); MessageBox.Show("取款成功"); int i = ccmd.ExecuteNonQuery(); if (i == 1) {

maskedTextBox1.Text = ""; } } else {

MessageBox.Show("本机只提供以百元为单位的金额,请正确输入金额!"); maskedTextBox1.Text = ""; } } else {

conn

=

new

SqlConnection(@"Data Security=True;Connect

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

MessageBox.Show("您的余额不足!"); maskedTextBox1.Text = ""; }

conn.Close(); }

private void Form3_Load(object sender, EventArgs e) { } } }

(4)存款窗体:通过该界面用户可以从自己的账户中进行取存款操作,但是存款的金额必须在规定范围内且为100元的整数倍,否则无法进行操作,其界面如图2-6所示:

图2-6 存款界面 代码如下:

namespace Windowasd {

public partial class Form4 : Form {

public Form4() {

InitializeComponent(); }

private void button3_Click(object sender, EventArgs e) {

maskedTextBox1.Text = ""; }

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

private void button2_Click(object sender, EventArgs e) {

Form2 frm = new Form2(); frm.Show(); this.Hide(); }

private void button1_Click(object sender, EventArgs e) {

SqlConnection Timeout=30;User Instance=True"); conn.Open();

string sql = "SELECT * FROM userinfo WHERE yonghu='" + Form1.lockID + "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Read();

decimal jine = Convert.ToDecimal(dr[2]);

decimal sqje = Convert.ToDecimal(maskedTextBox1.Text); string presentname = Convert.ToString(dr[1]); string cardid = "'" + Form1.lockID + "'"; decimal change = sqje;

string time = Convert.ToString(DateTime.Now); dr.Close(); if (sqje % 100 == 0) {

MessageBox.Show("操作正在,请稍侯……"); decimal leftmoney = jine + sqje;

string ssql = "Update userinfo set yue = '" + leftmoney + "' where yonghu ='" + Form1.lockID + "'";

SqlCommand ccmd = new SqlCommand(ssql, conn); MessageBox.Show("存款成功!"); maskedTextBox1.Text = ""; int i = ccmd.ExecuteNonQuery(); if (i == 1) {

maskedTextBox1.Text = ""; } else {

MessageBox.Show("操作失败,请重试!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } }

conn

=

new

SqlConnection(@"Data Security=True;Connect

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

else {

MessageBox.Show("本机只提供以百元为单位的金额,请正确输入金额!"); } }

private void Form4_Load(object sender, EventArgs e) {

} } }

(6)转账窗体:通过该界面用户可以给除自己外的其他账户进行转账,其界面如图2-7所示:

图2-7转账窗口 代码如下:

namespace Windowasd {

public partial class Form5 : Form {

public Form5() {

InitializeComponent(); }

private void button3_Click(object sender, EventArgs e) {

SqlConnection

conn

=

new

SqlConnection(@"Data

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Timeout=30;User Instance=True"); conn.Open();

Security=True;Connect

string sql = "SELECT * FROM userinfo WHERE yonghu='" + Form1.lockID + "'"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader dr = cmd.ExecuteReader(); dr.Read();

decimal jine = Convert.ToDecimal(dr[2]); string wo = Convert.ToString(dr[1]);

decimal sqje = Convert.ToDecimal(maskedTextBox1.Text); dr.Close(); if (jine > sqje) {

MessageBox.Show("正在操作,请稍侯……"); decimal leftmoney = jine - sqje;

string ssql = "Update userinfo set yue = '" + leftmoney + "' where yonghu ='" + Form1.lockID + "'";

SqlCommand ccmd = new SqlCommand(ssql, conn);

int i = ccmd.ExecuteNonQuery(); if (i == 1) {

string sqql = "select * from userinfo where yonghu='" + maskedTextBox2.Text.Trim() + "'";

SqlCommand cmdd = new SqlCommand(sqql, conn); SqlDataReader drr = cmdd.ExecuteReader(); if (drr.Read()) {

decimal je = Convert.ToDecimal(drr[2]); string presentname = wo;

string cardid = "'" + Form1.lockID + "'"; decimal change = sqje;

string time = Convert.ToString(DateTime.Now); je = je + sqje; drr.Close();

string sqql1 = "Update userinfo set yue='" + je + "'where yonghu='" + maskedTextBox2.Text.Trim() + "'";

SqlCommand cmmdd = new SqlCommand(sqql1, conn); int n = cmmdd.ExecuteNonQuery(); if (n == 1) {

MessageBox.Show("转账成功!"); maskedTextBox2.Text = "";

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

maskedTextBox1.Text = ""; } else {

MessageBox.Show("转账失败!"); maskedTextBox2.Text = ""; maskedTextBox1.Text = ""; }

} else {

MessageBox.Show("操作失败,请重试!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else

{ } } else {

MessageBox.Show("您的余额不足,请重新输入金额!"); maskedTextBox1.Text = ""; } }

private void button1_Click(object sender, EventArgs e) {

maskedTextBox1.Text = ""; }

private void button2_Click(object sender, EventArgs e) {

Form2 frm = new Form2(); frm.Show(); this.Hide(); }

private void Form5_Load(object sender, EventArgs e) { }

private void label2_Click(object sender, EventArgs e) { } } }

C#课程设计—自动取款机模拟软件设计,附软件界面截图、程序源代码和数据库设计,仅供学习使用。

(7)交费窗体:通过该界面用户可以自行交费,其界面如图2-8所示:

图2-8 交费窗口 代码如下:

namespace Windowasd {

public partial class Form6 : Form {

public Form6() {

InitializeComponent(); }

private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) { }

private void button1_Click(object sender, EventArgs e) {

Form2 frm = new Form2(); frm.Show(); this.Hide(); }

private void button2_Click(object sender, EventArgs e) {

maskedTextBox1.Text = "";

本文来源:https://www.bwwdw.com/article/y1ii.html

Top