C#课程设计报告.docx
《C#课程设计报告.docx》由会员分享,可在线阅读,更多相关《C#课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。
C#课程设计报告
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握C#编程、面向对象的基础知识,较熟练地编写基于C#的windows应用程序,了解C#的常用类库、编程技巧、异常处理。
联系已学的内容,巩固所学的理论,增强独立工作能力。
通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
为后继课程(ASP.net)的实验以及课程设计打下较扎实的基础.
2。
课题题目
(1)银行业务管理系统设计与实现
3。
设计要求:
(1)课程设计环境要求
操作系统:
WindowsXPSP3或是Windows7,
内存要求:
至少512MB。
开发环境要求:
安装了VS2008SP1的VS2008Professional简体中文版。
(2)设计内容要求
在银行业务管理中,不同银行规定有不同的账户类型,如整存整取、零存整取、存本取息、通知存款、定额定期、订货两便和活期储蓄等。
本课程设计不处理这么复杂的内容,而是假定只提供三种账户,活期存款账户、定期存款账户和零存整取账户。
1)活期存款账户规定
创建活期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,活期存款账号的范围为10001~19999(包括10001和19999),默认为0.03%,每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
2)定期存款账户规定
创建定期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,定期存款账号的范围为20001~29999(包括20001和2999),定期存款要求一次性存款、一次性取款,100元起存,期限规定为只提供1年、3年和5年三种定期。
三种到期利率默认分别为0。
1%、0.3%和0。
5%,如果到期后客户没有取款、超出存款期限部分的利率按0.03%计算。
如果客户提前取款,取款时利率全部按0。
02%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算.
利息结算方式为:
到期利息=定期利率*存款金额
超期利息=(存款金额+到期利息)*超期利率
3)零存整取规定
创建零存整取账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,零存整取账号的范围为30001~39999(包括30001和3999),零存整取要求每月都必须存固定的金额,5元起存,一次取款,存款期限规定为只提供1年、3年和5年三种,到期利率默认为0.05%、0.1%和0.3%,如果到期后客户没有取款,超出存款期限部分的利率按0。
025%.如果客户没有按规定存款,取款时利率全部按0.015%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算.
利息结算方式为:
到期利息=到期利率*每月固定金额*月数
超期利息=(总存款金额+到期利息)*超期利率
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.此目录供参考.(目录中的页码要写好。
)
2。
课设报告的装订顺序:
此文档的前五页->目录-〉正文->评分表。
起始页码从正文开始。
(注意:
前四页的内容中的课题题目需列出具体题目)
1、系统开发背景
全面熟悉、掌握C#编程、面向对象的基础知识,较熟练地编写基于C#的windows应用程序,了解C#的常用类库、编程技巧、异常处理。
联系已学的内容,巩固所学的理论,增强独立工作能力。
通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
为后继课程(ASP。
net)的实验以及课程设计打下较扎实的基础.
2、系统功能模块
用户可以根据需求选择不同的银行,然后在银行里面选择不同的存款类型,一般的存储类型有:
整存整取、零存整取、存本取息、通知存款、定额定期、订货两便和活期储蓄等.本课程设计不处理这么复杂的内容,而是假定只提供三种账户,活期存款账户、定期存款账户和零存整取账户.这样用户选择存储类型后,就可以开户,存款和取款等业务了。
3、主要模块划分
3。
1、活期存款账户规定
创建活期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,活期存款账号的范围为10001~19999(包括10001和19999),默认为0.03%,每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数.向现有账户追加存款时,不进行结算。
3。
2、定期存款账户规定
创建定期账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,定期存款账号的范围为20001~29999(包括20001和2999),定期存款要求一次性存款、一次性取款,100元起存,期限规定为只提供1年、3年和5年三种定期.三种到期利率默认分别为0.1%、0。
3%和0。
5%,如果到期后客户没有取款、超出存款期限部分的利率按0。
03%计算。
如果客户提前取款,取款时利率全部按0.02%计算。
每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=定期利率*存款金额
超期利息=(存款金额+到期利息)*超期利率
3。
3、零存整取账户规定
创建零存整取账户时,必须提供帐户名和开户金额,而账号则根据存款分类自动生成,零存整取账号的范围为30001~39999(包括30001和3999),零存整取要求每月都必须存固定的金额,5元起存,一次取款,存款期限规定为只提供1年、3年和5年三种,到期利率默认为0。
05%、0。
1%和0.3%,如果到期后客户没有取款,超出存款期限部分的利率按0.025%。
如果客户没有按规定存款,取款时利率全部按0.015%计算.每次取款时,不论存款时间多长,都要根据当前余额结算一次利息,并将利息附加到现有余额中,然后再从中取出指定的款数。
向现有账户追加存款时,不进行结算。
利息结算方式为:
到期利息=到期利率*每月固定金额*月数
超期利息=(总存款金额+到期利息)*超期利率
4、程序运行界面截图及说明
4.1、开户
4。
2、存款和取款
4。
3、显示界面
5、源代码:
/*Customs.cs*/
classCustoms
{
privatestringaccountName;
publicCustomTypeBankCustomType{get;protectedset;}
publicstringAccountNumber{get;protectedset;}
publicfloatAccountBalence{get;protectedset;}
publicstringTime;
publicintflag;
publicfloatbenjin;
publicintYear;
publicstringAccountName
{
get
{
returnaccountName;
}
set
{
if(string.IsNullOrEmpty(value))
{thrownewException("账号名不能为null或者空字符串”);}
else
{
for(inti=0;iLength;i++)
{
if(char.IsLetter(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)
{
PerAccountList。
Add(string。
Format(
"账号:
{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)
{
PerAccountList。
Add(string.Format(
”账号:
{0}.姓名:
{1},存款金额:
{2},"+
”{3:
yyyy—MM-dd[HH:
mm:
ss]}{4}{5:
f2}元,余额{6:
f2}元;期限:
{7}",
AccountNumber,
AccountName,
BankCustomType,
DateTime。
Now,
typeInfo,
money,
AccountBalence,
Time
));
}
publicboolValidBeforeWithdraw(floatmoney)
{
if(money<=0)
{
MessageBox。
Show(”qukuangjinebunengweilinhuofuzhi”);
returnfalse;
}
if(money>AccountBalence)
{
MessageBox。
Show("qukuangjinebunengfayuyue");
returnfalse;
}
returntrue;
}
publicvirtualvoidWithdraw(floatmoney)
{
AccountBalence—=money;
AddList("取款”,money);
}
}
\*Checkingcustoms.cs*\
classCheckingCostoms:
Customs
{
privatestaticintnewAccountNumber=10001;
publicfloatInterestRate
{
get
{return0。
0003f;}
}
publicCheckingCostoms(stringaccountName,floataccountBalence)
{
if(newAccountNumber>19999)
{thrownewException(”huoqicunkuangzhuanghu”);}
else
{
this.AccountName=accountName;
this。
AccountBalence=accountBalence;
this。
BankCustomType=CustomType.活期存款;
this.AccountNumber=newAccountNumber。
ToString();
newAccountNumber++;
PerAccountList=newList〈string〉();
AddList("kaihu”,accountBalence);
}
}
publicoverridevoidWithdraw(floatmoney)
{
if(ValidBeforeWithdraw(money)==false)return;
floatrate=InterestRate*AccountBalence;
AccountBalence+=rate;
AddList(”jiesuanlixi”,rate);
base。
Withdraw(money);
}
}
\*FixedCustoms。
cs*\
classFixedCustoms:
Customs
{
privatestaticintnewAccountNumber=20001;
publicfloatInterestRate
{
get
{
strings1;ints2,s3;
s1=DateTime.Now.ToString(”yyyy”);
s2=Convert.ToInt32(s1);
if(Time=="一年”)
{
s3=s2—Year;
if(s3<1)
{flag=-1;return0。
0002f;}
elseif(s3==1)
{flag=0;return0.001f;}
else
{flag=1;return0。
001f;}
}
elseif(Time==”三年”)
{
s3=s2-Year;
if(s3<3)
{flag=-1;return0.0002f;}
elseif(s3==3)
{flag=0;return0.003f;}
else
{flag=1;return0。
003f;}
}
else
{
s3=s2-Year;
if(s3<5)
{flag=—1;return0.0002f;}
elseif(s3==1)
{flag=0;return0.005f;}
else
{flag=1;return0.005f;}
}
}
}
publicFixedCustoms(stringaccountName,floataccountBalence,stringyear)
{
if(newAccountNumber>29999)
{thrownewException("dingqicunhaoyijinyongwan”);}
else
{
strings1;ints2;
s1=DateTime。
Now.ToString("yyyy");
s2=Convert。
ToInt32(s1);
this。
AccountName=accountName;
this.AccountBalence=accountBalence;
this。
BankCustomType=CustomType。
定期存款;
this。
Time=year;
this.Year=s2;
this.AccountNumber=newAccountNumber.ToString();
newAccountNumber++;
PerAccountList=newList〈string〉();
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);
base。
Withdraw(money);
}
else
{
rate=InterestRate*AccountBalence;
AccountBalence+=rate;
rate1=0.0003f*AccountBalence;
AccountBalence+=rate1;
AddList("利息结算”,rate1);
base.Withdraw(money);
}
}
}
\*lingcunzhengqu。
cs*\
classLingcunzhengqu:
Customs
{
privatestaticintnewAccountNumber=30001;
publicfloatInterestRate
{
get
{
strings1;ints2;
s1=DateTime.Now.ToString(”yyyy”);
s2=Convert。
ToInt32(s1);
if(Time==”一年”)
{
if(AccountBalence{
flag=—1;return0。
00015f;
}
elseif(AccountBalence==benjin*12)
{flag=0;return0。
0005f;}
else
{flag=1;return0。
0005f;}
}
elseif(Time==”三年")
{
if(AccountBalence{
flag=-1;return0.00015f;
}
elseif(AccountBalence==benjin*36)
{flag=0;return0。
001f;}
else
{flag=1;return0。
001f;}
}
else
{
if(AccountBalence{
flag=—1;return0.00015f;
}
elseif(AccountBalence==benjin*12)
{flag=0;return0.003f;}
else
{flag=1;return0。
003f;}
}
}
}
publicLingcunzhengqu(stringaccountName,floataccountBalence,stringyear)
{
if(newAccountNumber>39999)
{thrownewException(”dingqicunhaoyijinyongwan");}
else
{
strings1;ints2;
s1=DateTime。
Now。
ToString(”yyyy");
s2=Convert.ToInt32(s1);
this.AccountName=accountName;
this.AccountBalence=accountBalence;
this。
BankCustomType=CustomType。
零存整取;
this。
Time=year;
this.Year=s2;
this.benjin=accountBalence;
this。
AccountNumber=newAccountNumber。
ToString();
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);
base。
Withdraw(money);
}
else
{
rate=InterestRate*benjin*yueshu;
rate1=0.00025f*(AccountBalence+rate);
AccountBalence+=rate1;
AddList("利息结算",rate1);
base.Withdraw(money);
}
}
}
\*Mianform。
cs*\
publicpartialclassMainForm1:
Form
{
privatestaticSortedDictionary〈string,Customs>customers=newSortedDictionary();