s6-1
设计项目s6-1。编写一个程序,用以接受用户输入的两个double类型的值。一个值表示用户想要存放在银行账户中的金额。另一个值表示用户想要从银行账户中提取的金额。创建自定义异常,以确保提取的金额始终小于或等于当前的余额。引发异常时,程序应显示一则错误消息。否则,程序应显示从用户存款中扣除取款额之后的账户余额。
MainForm.cs:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:创建自定义异常
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace s6_1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
try
{
if(Convert.ToDouble(this.textBox2.Text) < Convert.ToDouble(this.textBox3.Text))
{
throw new ExceptionClass("ERROR:取款金额不能大于当前存款金额!");
}
else
{
this.textBox1.Enabled = true;
this.textBox1.Text = Convert.ToString(Convert.ToDouble(this.textBox2.Text)-Convert.ToDouble(this.textBox3.Text));
}
}
catch(ExceptionClass ex)
{
MessageBox.Show(ex.Message);
}
}
void TextBox2TextChanged(object sender, EventArgs e) {}
void TextBox3TextChanged(object sender, EventArgs e) {}
}
}
ExceptionClass.cs:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:创建自定义异常
*/
using System;
namespace s6_1
{
public class ExceptionClass:ApplicationException
{
public ExceptionClass(string message) : base(message)
{
}
}
}
Program.cs:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:创建自定义异常
*/
using System;
using System.Windows.Forms;
namespace s6_1
{
internal sealed class Program
{
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
窗体设计:
测试结果:
测试不抛出异常的正常情况:输入存入金额为100元,取出金额为80元,点击确认按钮,程序正常运行,计算得出当前金额为20元,结果正确。
测试异常情况:输入存入金额为100元,取出金额为120元,点击确认按钮,程序弹出异常提示窗口。
s6-2
设计项目s6-2。编写一个程序,要求用户输入邮件地址,Email地址必须符合规范。编写一个邮件地址格式不符合规范的自定义异常继承自ApplicationException,如果邮件地址格式不符合规范,则抛出这个异常。邮件地址规范是:确保电子邮件地址含有符号“@”,且只出现一次;含有符号“.”,且只出现一次;符号“_”不能出现在电子邮件地址的开头。
MainForm.cs:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:邮箱格式验证
*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace s6_2
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void TextBox1TextChanged(object sender, EventArgs e) {}
void Button1Click(object sender, EventArgs e)
{
try
{
string str = this.textBox1.Text;
int AtNum=0, PointNum=0;
bool flag=false;
int length=str.Length-1;
for(int i=0;i<length;i++)
{
if(str[i]=='@')
{
AtNum++;
}
else if(str[i]=='.')
{
PointNum++;
}
else if(str[0]=='_')
{
flag=true;
}
}
if(AtNum!=1)
{
throw new ExceptionClass("格式错误!符号“@”应有且仅有一个");
}
if(PointNum!=1)
{
throw new ExceptionClass("格式错误!符号“.”应有且仅有一个");
}
if(flag)
{
throw new ExceptionClass("格式错误!符号“_”不能出现在开头");
}
else
{
MessageBox.Show("邮箱格式正确!");
}
}
catch(ExceptionClass ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
ExceptionClass:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:邮箱格式验证
*/
using System;
namespace s6_2
{
public class ExceptionClass:ApplicationException
{
public ExceptionClass(string message) : base(message)
{
}
}
}
Program.cs:
/*
* 作者:JeronZhou
* 日期: 2021-10-09
* 功能:邮箱格式验证
*/
using System;
using System.Windows.Forms;
namespace s6_2
{
internal sealed class Program
{
private static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
窗体设计:
测试结果:
测试不抛出异常的正常情况,输入邮箱981866921@qq.com,点击验证邮箱,弹出邮箱格式正确窗口。
测试字符“@”出错的异常情况,输入邮箱981866921qq.com,点击验证邮箱,弹出异常提示窗口。
测试字符“.”出错的异常情况,输入邮箱981866921@qqcom,点击验证邮箱,弹出异常提示窗口。
测试字符“_”开头的异常情况,输入邮箱_981866921@qq.com,点击验证邮箱,弹出异常提示窗口。