C#课程设计报告.docx
《C#课程设计报告.docx》由会员分享,可在线阅读,更多相关《C#课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
C#课程设计报告
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握C#编程、面向对象的基础知识,较熟练地编写基于C#的windows应用程序,了解C#的常用类库、编程技巧、异常处理。
联系已学的内容,巩固所学的理论,增强独立工作能力。
通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
为后继课程()的实验以及课程设计打下较扎实的基础。
2.课题题目
(1)银行业务管理系统设计与实现
3.设计要求:
(1)课程设计环境要求
操作系统:
WindowsXPSP3或是Windows7,
内存要求:
至少512MB。
开发环境要求:
安装了VS2008SP1的VS2008Professional简体中文版。
(2)设计内容要求
在银行业务管理中,不同银行规定有不同的账户类型,如整存整取、零存整取、存本取息、通知存款、定额定期、订货两便和活期储蓄等。
本课程设计不处理这么复杂的内容,而是假定只提供三种账户,活期存款账户、定期存款账户和零存整取账户。
1)活期存款账户规定
创建活期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,活期存款账号的范围为10001~19999(包括10001和19999),默认为%,每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
2)定期存款账户规定
创建定期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,定期存款账号的范围为20001~29999(包括20001和2999),定期存款要求一次性存款、一次性取款,100元起存,期限规定为只提供1年、3年和5年三种定期。
三种到期利率默认分别为%、%和%,如果到期后客户没有取款、超出存款期限部分的利率按%计算。
如果客户提前取款,取款时利率全部按%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=定期利率*存款金额
超期利息=(存款金额+到期利息)*超期利率
3)零存整取规定
创建零存整取账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,零存整取账号的范围为30001~39999(包括30001和3999),零存整取要求每月都必须存固定的金额,5元起存,一次取款,存款期限规定为只提供1年、3年和5年三种,到期利率默认为%、%和%,如果到期后客户没有取款,超出存款期限部分的利率按%。
如果客户没有按规定存款,取款时利率全部按%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=到期利率*每月固定金额*月数
超期利息=(总存款金额+到期利息)*超期利率
4)要允许用户随时查询自己的存取款信息。
查询时要求提供用户名、存款类型和账户。
5)程序要易于扩充,即需要增加存款业务类型时,要能够利用已经实现的功能,通过尽量少的代码快速实现。
(3)课程设计文档要求
1)每位同学提交一份打印的课程设计报告。
2)报告内容要求
系统功能介绍,并用viso画出系统整体框架图
主要模块划分,并用viso画出系统功能模块图
程序运行界面截图及说明。
系统主要亮点介绍。
设计中遇到的问题、难点及解决方法。
3)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
4)不得抄袭他人课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第1周星期三8时:
00分——12时:
00分
第1周星期四8时:
00分——12时:
00分
第1周星期五8时:
00分——12时:
00分
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用4号宋体加粗,正文用小四号宋体,行距为22.
1、系统开发背景1
2、系统功能模块1
3、主要模块划分2
、活期存款账户规定2
、定期存款账户规定2
、零存整取账户规定3
4、程序运行界面截图及说明3
、开户3
、存款和取款4
、显示界面4
5、源代码:
4
6、调试过程中的问题、难点及解决方法15
7、评分表16
注意:
1.此目录供参考。
(目录中的页码要写好。
)
2.课设报告的装订顺序:
此文档的前五页->目录->正文->评分表。
起始页码从正文开始。
(注意:
前四页的内容中的课题题目需列出具体题目)
1、系统开发背景
全面熟悉、掌握C#编程、面向对象的基础知识,较熟练地编写基于C#的windows应用程序,了解C#的常用类库、编程技巧、异常处理。
联系已学的内容,巩固所学的理论,增强独立工作能力。
通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
为后继课程()的实验以及课程设计打下较扎实的基础。
2、系统功能模块
用户可以根据需求选择不同的银行,然后在银行里面选择不同的存款类型,一般的存储类型有:
整存整取、零存整取、存本取息、通知存款、定额定期、订货两便和活期储蓄等。
本课程设计不处理这么复杂的内容,而是假定只提供三种账户,活期存款账户、定期存款账户和零存整取账户。
这样用户选择存储类型后,就可以开户,存款和取款等业务了。
3、主要模块划分
、活期存款账户规定
创建活期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,活期存款账号的范围为10001~19999(包括10001和19999),默认为%,每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
、定期存款账户规定
创建定期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,定期存款账号的范围为20001~29999(包括20001和2999),定期存款要求一次性存款、一次性取款,100元起存,期限规定为只提供1年、3年和5年三种定期。
三种到期利率默认分别为%、%和%,如果到期后客户没有取款、超出存款期限部分的利率按%计算。
如果客户提前取款,取款时利率全部按%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=定期利率*存款金额
超期利息=(存款金额+到期利息)*超期利率
、零存整取账户规定
创建零存整取账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,零存整取账号的范围为30001~39999(包括30001和3999),零存整取要求每月都必须存固定的金额,5元起存,一次取款,存款期限规定为只提供1年、3年和5年三种,到期利率默认为%、%和%,如果到期后客户没有取款,超出存款期限部分的利率按%。
如果客户没有按规定存款,取款时利率全部按%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=到期利率*每月固定金额*月数
超期利息=(总存款金额+到期利息)*超期利率
4、程序运行界面截图及说明
、开户
、存款和取款
、显示界面
5、源代码:
/**/
classCustoms
{
privatestringaccountName;
publicCustomTypeBankCustomType{get;protectedset;}
publicstringAccountNumber{get;protectedset;}
publicfloatAccountBalence{get;protectedset;}
publicstringTime;
publicintflag;
publicfloatbenjin;
publicintYear;
publicstringAccountName
{
get
{
returnaccountName;
}
set
{
if(value))
{thrownewException("账号名不能为null或者空字符串");}
else
{
for(inti=0;i<;i++)
{
if(value[i])==false)
{thrownewException("zhuanghuzjiyunxuzhimuhuohanzizucheng");}
else{accountName=value;}
}
}
}
}
publicListPerAccountList{get;set;}
publicvoidDiposit(floatmoney)
{
if(money<=0)
{thrownewException("存款金额不能为零或负值");}
else{AccountBalence+=money;AddList("存款",money);}
}
protectedvoidAddList(stringtypeInfo,floatmoney)
{
(
"账号:
{0}.姓名:
{1},存款金额:
{2},"+
"{3:
yyyy-MM-dd[HH:
mm:
ss]}{4}{5:
f2}元,余额{6:
f2}元",
AccountNumber,
AccountName,
BankCustomType,
DateTime.Now,
typeInfo,
money,
AccountBalence
));
}
protectedvoidAddList(stringtypeInfo,floatmoney,stringyear)
{
(
"账号:
{0}.姓名:
{1},存款金额:
{2},"+
"{3:
yyyy-MM-dd[HH:
mm:
ss]}{4}{5:
f2}元,余额{6:
f2}元;期限:
{7}",
AccountNumber,
AccountName,
BankCustomType,
typeInfo,
money,
AccountBalence,
Time
));
}
publicboolValidBeforeWithdraw(floatmoney)
{
if(money<=0)
{
("qukuangjinebunengweilinhuofuzhi");
returnfalse;
}
if(money>AccountBalence)
{
("qukuangjinebunengfayuyue");
returnfalse;
}
returntrue;
}
publicvirtualvoidWithdraw(floatmoney)
{
AccountBalence-=money;
AddList("取款",money);
}
}
\**\
classCheckingCostoms:
Customs
{
privatestaticintnewAccountNumber=10001;
publicfloatInterestRate
{
get
{return;}
}
publicCheckingCostoms(stringaccountName,floataccountBalence)
{
if(newAccountNumber>19999)
{thrownewException("huoqicunkuangzhuanghu");}
else
{
=accountName;
=accountBalence;
=CustomType.活期存款;
=();
newAccountNumber++;
PerAccountList=newList();
AddList("kaihu",accountBalence);
}
}
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==false)return;
floatrate=InterestRate*AccountBalence;
AccountBalence+=rate;
AddList("jiesuanlixi",rate);
(money);
}
}
\**\
classFixedCustoms:
Customs
{
privatestaticintnewAccountNumber=20001;
publicfloatInterestRate
{
get
{
strings1;ints2,s3;
s1=.ToString("yyyy");
s2=Convert.ToInt32(s1);
if(Time=="一年")
{
s3=s2-Year;
if(s3<1)
{flag=-1;return;}
elseif(s3==1)
{flag=0;return;}
else
{flag=1;return;}
}
elseif(Time=="三年")
{
s3=s2-Year;
if(s3<3)
{flag=-1;return;}
elseif(s3==3)
{flag=0;return;}
else
{flag=1;return;}
}
else
{
s3=s2-Year;
if(s3<5)
{flag=-1;return;}
elseif(s3==1)
{flag=0;return;}
else
{flag=1;return;}
}
}
}
publicFixedCustoms(stringaccountName,floataccountBalence,stringyear)
{
if(newAccountNumber>29999)
{thrownewException("dingqicunhaoyijinyongwan");}
else
{
strings1;ints2;
s1="yyyy");
s2=(s1);
=accountName;
=accountBalence;
=CustomType.定期存款;
=year;
=s2;
=();
newAccountNumber++;
PerAccountList=newList();
AddList("开户",accountBalence,year);
}
}
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==false)return;
floatrate=0,rate1=0;
if(flag==0&&flag==-1)
{
rate=InterestRate*AccountBalence;
AccountBalence+=rate;
AddList("利息结算",rate);
(money);
}
else
{
rate=InterestRate*AccountBalence;
AccountBalence+=rate;
rate1=*AccountBalence;
AccountBalence+=rate1;
AddList("利息结算",rate1);
(money);
}
}
}
\**\
classLingcunzhengqu:
Customs
{
privatestaticintnewAccountNumber=30001;
publicfloatInterestRate
{
get
{
strings1;ints2;
s1=.ToString("yyyy");
s2=Convert.ToInt32(s1);
if(Time=="一年")
{
if(AccountBalence{
flag=-1;return;
}
elseif(AccountBalence==benjin*12)
{flag=0;return;}
else
{flag=1;return;}
}
elseif(Time=="三年")
{
if(AccountBalence{
flag=-1;return;
}
elseif(AccountBalence==benjin*36)
{flag=0;return;}
else
{flag=1;return;}
}
else
{
if(AccountBalence{
flag=-1;return;
}
elseif(AccountBalence==benjin*12)
{flag=0;return;}
else
{flag=1;return;}
}
}
}
publicLingcunzhengqu(stringaccountName,floataccountBalence,stringyear)
{
if(newAccountNumber>39999)
{thrownewException("dingqicunhaoyijinyongwan");}
else
{
strings1;ints2;
s1="yyyy");
s2=(s1);
=accountName;
=accountBalence;
=CustomType.零存整取;
=year;
=s2;
=accountBalence;
=();
newAccountNumber++;
PerAccountList=newList();
AddList("开户",accountBalence,year);
}
}
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==false)return;
floatrate=0,rate1=0;
intyueshu;
yueshu=(int)(AccountBalence/benjin);
if(flag==0&&flag==-1)
{
rate=InterestRate*benjin*yueshu;
AccountBalence+=rate;
AddList("利息结算",rate);
(money);
}
else
{
rate=InterestRate*benjin*yueshu;
rate1=*(AccountBalence+rate);
AccountBalence+=rate1;
AddList("利息结算",rate1);
(money);
}
}
}
\**\
publicpartialclassMainForm1:
Form
{
privatestaticSortedDictionarycustomers=newSortedDictionary();
publicMainForm1()
{
InitializeComponent();
string[]accountTypeString=(typeof(CustomType));
=0;
=;
}
privatevoidMainForm1_Load(objectsender,EventArgse)
{
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
floatmoney;
if,outmoney)==false)
{
("开户金额不正确","无法开户",,);
return;
}
CreateCustom,,money,;
}
privatevoidCreateCustom(stringcustomTypeString,stringuserName,floatinitMoney,stringyear)
{
CustomsnewCustom=null;
if(customTypeString=="活期存款")
{
try{newCustom=newCheckingCostoms(userName,initMoney);}
catch(Exceptionex){());}
}
elseif(customTypeString=="定期存款")
{
if<100)
{("开户金额不足","无法开户",,;}
else
{
try{newCustom=newFixedCustoms(userName,initMoney,year);}
catch(Exceptionex){());r