(完整)面向对象程序设计
(完整)面向对象程序设计
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们
对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)面向对象程序设计)
的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进
步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以
下为(完整)面向对象程序设计的全部内容。
(完整)面向对象程序设计
实验一
实验一面向对象程序设计
1.实验目的
(1).掌握如何创建类和对象
(2)。掌握如何为定义的类编写相应的方法
(3).掌握如何通过属性访问对象中的数据
(4)。掌握如何创建基类及其派生类
2.实验内容
实验要求为个人银行存款定义两类,一个活期存款账户CheckingCustom类,另一个
是定期存款FixedCustom类.
用户操作界面如图:
图1
3。
实
验
要
求
实验
中实
现的功能如下:
(完整)面向对象程序设计
(1).创建活期账户时,必须提供账户名和开户金额,而账号则根据存款分类自动生
成。
(2)。无论活期还是定期账户都可以随时存款、取款。
(3)。活期存款账号范围为10001~19999,活期存款利息一律按当前余额的0.5%计
算。每次取款时无论存款时间长短都要根据余额结算一次利息,并将利息附加到余
额中,然后取出指定款数,向现有账户追加存款时,不进行计算。
(4).定期存款账号范围为20001~29999,活期存款利息方法如下:如果当前余额大
于500,利息6%,否则利息3%。每次取款时无论存款时间长短都要根据余额结算一
次利息,并将利息附加到余额中,然后取出指定款数,向现有账户追加存款时,不进
行计算。
(5).要允许用户随时查询自己的存款信息,查询时要提供用户名、存款类型和账号。
(6)。程序要易于扩充,即需要增加存款业务类型时,要能够利用已经实现的功能,
尽量用少的代码实现。
4.实验步骤
(1)。创建一个名为bankcustom的Windows窗体应用程序,在【解决方案资源管理
器】中,重命名为MainForm。cs,然后再次窗体上完成个人存款业务处理
的设计界面。
界面如下:
图2
(2).添
加一个
类文件
Custom。
cs,处
理活期
存款和
定期存
款共有
的业务.
1)声
明三个
属性:
AccountName:账户名称
AccountNumber:账号(自动生成)
AccountBalance:账户余额
(完整)面向对象程序设计
2)提供一个公共的Deposit方法,向账户中添加存款
3)提供一个公共的Withdraw方法,从账户取款
Custom。cs的代码如下:
usingSystem;
c;
usingSystem。Linq;
;
namespaceWindowsFormsApplication1
{
classCustom
{
privatestringaccountName;//开户名
publicCustomTypeBankCustomType{get;protectedt;}//存款
类型
publicstringAccountNumber{get;protectedt;}//账号
publicfloatAccountBalance{get;protectedt;}//账户余额
publicstringAccountName//姓名
{
get
{
returnaccountName;
}
t
{
if(string。IsNullOrEmpty(value))
{
thrownewException(”账户不能为null或空字符串”);
}
el
{
for(inti=0;i〈;i++)
{
if(er(value[i])==fal)
{
thrownewException("账户只允许用汉字和字母
组成”);
}
el
{accountName=value;}
}
(完整)面向对象程序设计
}
}
}
publicList〈string>PerAccountList{get;t;}
publicvoidDiposit(floatmoney)//存款
{
if(money<=0)
{
thrownewException(”存款不能为0或负值”);
}
el
{
AccountBalance+=money;
AddList("存款",money);
}
}
protectedvoidAddList(stringtypeInfo,floatmoney)
{
(string。Format(
"账号:{0},姓名:{1},存款类型:{2},”+"{3:yyyy—MM-dd
[HH:mm:ss]}{4}{5:f2}元,余额{6:f2}元”,
AccountNumber,
AccountName,
BankCustomType,
,
typeInfo,
money,
AccountBalance));
}
publicboolValidBeforeWithdraw(floatmoney)
{
if(money<=0)
{
thrownewException(”取款余额不能无0或负数”);
//returnfal;
}
if(money〉AccountBalance)
{
thrownewException("取款数不能大于余额”);
//returnfal;
}
(完整)面向对象程序设计
returntrue;
}
publicvirtualvoidWithdraw(floatmoney)
{
AccountBalance-=money;
AddList(”取款”,money);
}
}
}
(3).向项目中添加一个名为CheckingCustom。cs类文件,让其继承自Custom类,在
CheckingCustom类中处理活期存款业务。
代码如下:
usingSystem;
tions。Generic;
usingSystem。Linq;
usingSystem。Text;
namespaceWindowsFormsApplication1
{
classCheckingCustom:Custom
{
privatestaticintnewAccountNumber=10001;
publicfloatInterestRate
{
get{return0。005f;}
}
publicCheckingCustom(stringaccountName,floataccountBalance)
{
if(newAccountNumber>19999)
thrownewException("活期存款账户已经用完”);
el
{
this。AccountName=accountName;
this。AccountBalance=accountBalance;
this。BankCustomType=CustomType.活期存款;
tNumber=ng();
newAccountNumber++;
PerAccountList=newList〈string〉();
AddList(”开户",accountBalance);
}
}
(完整)面向对象程序设计
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==fal)
return;
floatrate=InterestRate*AccountBalance;
AccountBalance+=rate;
AddList("利息结算”,rate);
aw(money);
}
}
}
(4)。向项目中添加一个名为FixedCustom。cs类文件,让其继承自Custom类,在
FixedCustom类中处理定期存款业务.
代码如下:
usingSystem;
usingSystem。c;
usingSystem。Linq;
usingSystem。Text;
namespaceWindowsFormsApplication1
{
classFixedCustom:Custom
{
privatestaticintnewAccountNumber=20001;
publicfloatInterestRate
{
get
{
if(AccountBalance〉500)
return0。06f;
el
return0。03f;
}
}
publicFixedCustom(stringaccountName,floataccountBalance)
{
if(newAccountNumber>29999)
{
thrownewException("定期存款账户已用完");
}
el
{
(完整)面向对象程序设计
tName=accountName;
tBalance=accountBalance;
this。BankCustomType=CustomType。定期存款;
tNumber=ng();
newAccountNumber++;
PerAccountList=newList
AddList("开户”,accountBalance);
}
}
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==fal)
return;
floatrate=InterestRate*AccountBalance;
AccountBalance+=rate;
AddList("利息结算”,rate);
ba。Withdraw(money);
}
}
}
(5).定义一个枚举类,实现选择活期存款或定期存款
代码如下:
usingSystem;
tions。Generic;
;
usingSystem。Text;
namespaceWindowsFormsApplication1
{
publicenumCustomType
{
活期存款,
定期存款
}
}
(6).完成主界面的程序功能,代码如下:
usingSystem;
usingSystem。Collections。Generic;
entModel;
;
usingSystem。Drawing;
(完整)面向对象程序设计
;
;
s。Forms;
namespaceWindowsFormsApplication1
{
publicpartialclassForm1:Form
{
privatestaticSortedDictionary〈string,Custom>customers=new
SortedDictionary
publicForm1()
{
InitializeComponent();
string[]accountTypeString=Enum。GetNames(typeof
(CustomType));
。AddRange(accountTypeString);
comboBoxNewAccountType。SelectedIndex=0;
osition=FormStartPosition。CenterScreen;
}
privatevoidbutton1_Click(objectnder,EventArg)
{
floatmoney;
if(float。TryPar(textBoxInitMoney。Text,outmoney)==
fal)
{
MessageBox。Show("开户金额不正确”,”无法开
户”,,MessageBoxIcon。Question);
return;
}
CreateCustom(,textBoxAccountName。
Text,money);
}
privatevoidCreateCustom(stringcustomTypeString,string
urName,floatinitMoney)
{
CustomnewCustom=null;
if(customTypeString==”活期存款")
{
try
(完整)面向对象程序设计
{
newCustom=newCheckingCustom(urName,initMoney);
}
catch(Exceptionex)
{
MessageBox。Show(ng());
}
}
el
{
try
{
newCustom=newFixedCustom(urName,initMoney);
}
catch(Exceptionex)
{
(ex。ToString());
return;
}
}
if(newCustom!=null)
{
customers。Add(newCustom。AccountNumber,newCustom);
UpdateAccountInfo(tNumber);
}
}
privatevoidUpdateAccountInfo(stringaccount)
{
();
Customcustom=customers[account];
foreach(varinfoincustom。PerAccountList)
{
listBoxUrInfo。Items。Add(info);
}
}
privatevoidbutton2_Click(objectnder,EventArg)
{
floatmoney;
if(!ParMoney(textBoxMoney。Text,”存款",out
money))return;
Customcustom=GetCustom();
(完整)面向对象程序设计
if(custom==null)return;
try
{
custom。Diposit(money);
UpdateAccountInfo(custom。AccountNumber);
}
catch(Exceptionex)
{
MessageBox。Show(ng());
}
}
privateboolParMoney(stringmoneyString,stringtypeInfo,out
floatmoney)
{
if(float。TryPar(moneyString,outmoney)==fal)
{
(typeInfo+”金额不正确","",
,on);
returnfal;
}
returntrue;
}
privateCustomGetCustom(stringkey)
{
if(!nsKey(key))
{
("无此账户,请先开户!”);
returnnull;
}
el
{
returncustomers[key];
}
}
privatevoidbutton3_Click(objectnder,EventArg)
{
floatmoney;
if(!ParMoney(textBoxMoney。Text,"取款",out
money))return;
Customcustom=null;
custom=GetCustom();
(完整)面向对象程序设计
if(custom==null)return;
try
{
custom。Withdraw(money);
UpdateAccountInfo(custom。AccountNumber);
}
catch(Exceptionex)
{
MessageBox。Show(ex。Message);
}
}
}
5。实验效果:
图3主界面
(完整)面向对象程序设计
图4开户界面
图5存款业务界面
图6取款业务界面
(完整)面向对象程序设计
六、错误调试
开始编程序的时候出现了很多错误,有的是由于自己粗心打错的缘由,比如说把
publicCustomTypeBankCustomType{get;protectedt;}里面的分号写到外面。后面把程
序写好之后开始运行,出现下面的错误提示:
图7错误一
问题如下:
namespaceWindowsFormsApplication1
{
classEnum
{
publicenumCustomType
{
活期存款,定期存款
}
}
}
这段程序不应该这样写,而是把应该把classEnum{}去掉,这样这个问题就解决了.
把程序写完就可以运行了.但是运行之后不断带入数字,发现用户存款为负数的时候
也可以开户,这不符合我们的程序要求,
图8错误二
遇到这个问题的时候,我们知道是哪里出了错误,只要把数据类型转换一下,问题就
可以得到解决,但想了很多办法,都不见效,最后把课本仔细研究了一番,想出了
一个解决的办法,把程序floatmoney;if((,outmoney)==
(完整)面向对象程序设计
fal)改为:floatmoney=32(textBox2。Text);intr=32
();if(r〈=0)
改完之后,继续运行程序如图:
图9错误三
上述的问题经过我和同学们一起奋斗,终于将此次试验的结果调试出来了。花了很
多时间,但是很值得。
本文发布于:2022-12-09 20:08:20,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/74655.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |