银行信贷管理系统报告.docx
《银行信贷管理系统报告.docx》由会员分享,可在线阅读,更多相关《银行信贷管理系统报告.docx(24页珍藏版)》请在冰豆网上搜索。
银行信贷管理系统报告
程序设计语言
课题:
银行信贷管理系统
班级号:
学号:
学生姓名:
课程设计起止日期:
6.30-7.11
(一)、设计目的---------------------------------------2
(二)、功能描述---------------------------------------2
(三)、总体设计---------------------------------------2
一、功能模块设计--------------------------------3
二、数据结构设计--------------------------------8
三、函数功能描述--------------------------------8
(四)、程序实现---------------------------------------9
一、源码分析------------------------------------9
二、程序界面显示--------------------------------14
(五)、心得体会---------------------------------------17
(六)、附录-------------------------------------------18
(一)、设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握;
2.掌握C语言编程和程序调试的基本技能;
3.利用C语言进行基本的软件设计;
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力。
(二)、功能描述
本程序主要是的基础操作。
基本功能:
(如图1)
a)申请贷款
b)还贷
c)查询贷款记录
d)查询还贷记录
拓展功能:
采用文件形式对贷款和还款记录进行操作,包括:
c)写入文件
d)读取文件
创新(自拟)功能:
程序实现的其它功能由个人自拟。
拓展功能:
要求对上述输入的贷款和还贷记录进行文件保存,下次进入系统时从文件读出数据。
(图1)银行信贷管理系统简易功能图
(3)、总体设计
一、功能模块设计
1.1银行信贷管理系统主要分为两个大模块,为贷款记录和还贷记录。
(图2)
(图2)
1.2具体的功能由两大模块下分的模块实现。
通过贷款信息输入,贷款记录分为申请贷款和查询申请贷款(如图3);通过换信息输入,还款记录分为还贷和查询还款记录(图4)。
下图清晰的显示了功能描述中的四个基本功能。
(图3)(图4)
1.2申请贷款时,会显示输入贷款编号,确认贷款编号无重复后,建立贷款信息,输入贷款人身份证号码、贷款人姓名、贷款金额、贷款年限。
(功能图如图5,流程图如图6)
(图5)
(图6)
如若输入个人信息后,贷款人显示还有欠款未还,则不能再次贷款。
1.4查询贷款时,会显示要求输入贷款人身份证号码,通过身份证号码来查询是否存在贷款,若存在,则显示该贷款人的贷款记录;若不存在,则显示无记录。
(功能图如图7、流程图如图8)
(图7)
(图8)
1.5还贷时,会显示要求输入贷款编号,通过贷款编号来查询是否存在贷款,若存在,输入一个还款编号,确认还款标号无重复后,输入还款人身份证号码,还款人姓名,还款金额,所还贷款编号。
若不存在则显示“输入编号错误”。
(功能图如图9、流程图如图10)
(图9)
(图10)
1.6查询还贷记录时,显示要求输入一个贷款编号,通过贷款编号来查询是否存在贷款,若存在,则显示该贷款所有还贷记录,若不存在,则显示“输入编号错误”。
(功能图如图11,流程图如图12)
(图8)
(图11)
(图12)
1.7安全退出系统(y/n)。
(流程图如图13)
(图13)
二、数据结构设计
此程序中,定义了两个结构体structmoney1和structmoney2,分别对应贷款和还贷。
structmoney1
{
longintsum;
inttime;
chardaikuanbianhao[8];
charshenfenzheng[19];
charname[20];
}lender[100],temp;
structmoney2
{
longintsum;
charrenum[8];
charnum2[8];
charshenfenzheng[19];
charname[20];
}payments[100];
因为贷款编号、贷款金额、贷款人身份证号码、贷款人姓名、贷款期限是属于一个人的贷款信息,所以对贷款定义一个结构体即可;还贷同理。
三、函数功能描述
3.1头文件
#include在使用标准函数库中的输入函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include的作用就是用来提供这些信息的,stdio.h时C编译系统提供的一个文件名,stdio是“standardinput&output”的缩写,即有关标准输入输出的信息。
#include字符串处理。
C语言里关于字符数组的函数定义头文件,常用函数有strlen、strcmp、strcpy等等。
#include即standardlibrary标准头文件。
里面包含了C语言最常用的系统函数。
Stdlib.h里面定义了五种类型、一些通用工具函数。
3.2输入函数
scanf(“”,&)即函数利用地址符号&完成对程序中某个变量的赋值,进而判断程序中循环的功能。
fclose()关闭fp所指的文件,释放文件缓冲区。
feof()检查文件是否结束。
fopen(char**mode)以mode指定的方式打开名为的文件。
fread(char*pt,unsignedsize,unsignedn,)从fp所指定的文件中读取长度为size的n个数据项,存到pt所指向的内存区。
3.3输出函数
printf(“”,)用于在屏幕上输出内容。
getchar(void)从标准输入设备读取下一个字符。
3.4选择函数
if(){}else{}for(;;){}switch(){case:
break;}按条件进行选择。
3.5自定义函数
void定义空函数。
eg:
voiddaikuan();
voidhuandai();
voidchaxundaikuan();
voidchaxunhuandai();
voidkey1();
int定义为整型。
longint定义长整型。
char定义为字符型。
(四)、程序实现
一、源码分析
1.程序预处理
#include//标准输入输出函数库
#include//字符串操作函数库
#include//标准函数库
inti=0,j=0;//定义i,j为整型数据,且将0赋值给i,j
voiddaikuan();//定义空函数daikuan
voidhuandai();//定义空函数huandai
voidchaxundaikuan();//定义空函数chaxundaikuan
voidchaxunhuandai();
voidduquwenjian();
longintdemand(structmoney1a[],structmoney2b[],charstr[]);//定义长整型函数demand
structmoney1//定义结构体,使贷款为一个整体
{
longintsum;
inttime;
chardaikuanbianhao[8];
charshenfenzheng[19];
charname[20];
}
lender[100],temp;
structmoney2//定义结构体,使还贷为一个整体
{
longintsum;
charrenum[8];
charnum2[8];
charshenfenzheng[19];
charname[20];
}payments[100];
intmain()
{
intn;
charc;
duquwenjian();
do
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("~欢迎使用银行信贷管理系统~\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("~请输入您所需要的服务编号~\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("~1.申请贷款~\n");
printf("~2.还款~\n");
printf("~3.查询贷款记录~\n");
printf("~4.查询还贷记录~\n");
printf("~0.退出系统~\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
scanf("%d",&n);
switch(n)
{
case1:
daikuan();break;
case2:
huandai();break;
case3:
chaxundaikuan();break;
case4:
chaxunhuandai();break;
case0:
{
printf("确认是否退出?
(y/n)\n");
getchar();
c=getchar();//输入一个字符给字符变量c
if(c=='y')
return0;//当输入"y"时,退出系统
}
}
}while
(1);//循环中没有return,continue,break,就一直循环下去
}
voidduquwenjian()
{
FILE*fp1,*fp2;//采用文件形式将贷款和还贷记录写入文件和读取文件
intt=0;
if((fp1=fopen("loanrecord.txt","rb"))==NULL)//以只读方式打开输出文件
fp1=fopen("loanrecord.txt","wb+");//如果没有创立loanrecord.txt文件//以读写方式创立loanrecord.txt文件
while(!
feof(fp1))
{
fread(&lender[t],sizeof(structmoney1),1,fp1);//从文件指针fp读取一个size为sizeof(structstu)的数据,存入s[i],就是说把fp1数据放入lender[t]中
t++;
}
i=t-1;
fclose(fp1);//关闭fp1
if((fp2=fopen("repaymentrecord.txt","rb"))==NULL)
fp2=fopen("repaymentrecord.txt","wb+");
t=0;
while(!
feof(fp2))
{
fread(&payments[t],sizeof(structmoney2),1,fp2);
t++;
}
j=t-1;
fclose(fp2);
}
voiddaikuan()//针对"贷款"
{
intt,n;
do
{
n=0;
printf("请输入贷款编号(不超过7位):
\n");
scanf("%s",temp.daikuanbianhao);
for(t=0;t<100;t++)
if(!
strcmp(lender[t].daikuanbianhao,temp.daikuanbianhao))
{
printf("该编号已被使用,请输入其他编号。
\n");
n=1;
break;
}
}while(n);
printf("请输入您的身份证号:
\n");
scanf("%s",temp.shenfenzheng);
printf("请输入您的姓名:
\n");
scanf("%s",temp.name);
printf("请输入贷款金额:
\n");
scanf("%ld",&temp.sum);
printf("请输入贷款年限:
\n");
scanf("%d",&temp.time);
if(demand(lender,payments,temp.shenfenzheng)==0)
{
lender[i]=temp;
i++;
}
else
printf("\n还有欠款%ld元,请先还清欠款。
\n\n",demand(lender,payments,temp.shenfenzheng));
}
longintdemand(structmoney1a[],structmoney2b[],charstr[])
{
inti;
longintx=0,y=0,z;
for(i=0;i<100;i++)
{
if(strcmp(a[i].shenfenzheng,str)==0)x=x+a[i].sum;
if(strcmp(b[i].shenfenzheng,str)==0)y=y+b[i].sum;
}
z=x-y;
returnz;
}
voidhuandai()
{
intt,n=1;
do
{
printf("请输入所还贷款编号(不超过7位):
\n");
scanf("%s",payments[j].num2);
for(t=0;t<100;t++)
if(strcmp(lender[t].daikuanbianhao,payments[j].num2)==0)
{
n=0;
break;
}
if(n==1)
printf("\n无此条贷款,请重新输入贷款编号。
\n\n");
}while(n);
chartempnum[8];
do
{
n=0;
printf("请输入还款编号(不超过7位):
\n");
scanf("%s",tempnum);
for(t=0;t<100;t++)
if(strcmp(payments[t].renum,tempnum)==0)
{
printf("该编号已被使用,请输入其他编号。
\n");
n=1;
break;
}
}while(n);
strcpy(payments[j].renum,tempnum);
printf("请输入您的身份证号:
\n");
scanf("%s",payments[j].shenfenzheng);
printf("请输入您的姓名:
\n");
scanf("%s",payments[j].name);
printf("请输入还款金额:
\n");
scanf("%ld",&payments[j].sum);
j++;
}
voidchaxundaikuan()
{
intt,a=0;
chartempid[19];
printf("请输入身份证号码:
\n");
scanf("%s",tempid);
for(t=0;t
if(!
strcmp(lender[t].shenfenzheng,tempid))
a=1;
if(a)
{
printf("贷款编号贷款人身份证号码贷款人姓名贷款金额贷款年限\n");
for(t=0;t
if(!
strcmp(lender[t].shenfenzheng,tempid))
printf("%-12s%-24s%-20s%-13ld%-d\n",lender[t].daikuanbianhao,lender[t].shenfenzheng,lender[t].name,lender[t].sum,lender[t].time);
}
else
printf("\n无贷款记录。
\n\n");
}
voidchaxunhuandai()
{
intt,a=0;
chartempnum[8];
printf("请输入要查询的贷款编号:
\n");
scanf("%s",tempnum);
for(t=0;t
if(!
strcmp(payments[t].num2,tempnum))
a=1;
if(a)
{
printf("还款编号还款人身份证号码还款人姓名还款金额所还贷款编号\n");
for(t=0;tif(!
strcmp(payments[t].num2,tempnum))
printf("%-12s%-24s%-20s%-13ld%-s\n",payments[t].renum,payments[t].shenfenzheng,payments[t].name,payments[t].sum,payments[t].num2);
}
else
printf("\n编号有误!
\n\n");
}
二、程序界面显示
●主界面
●执行项目1
输入编号1(回车),输入一个贷款编号,若重复,则画面显示“该编号已被使用,请输入其他编号”;若不重复(如:
123456)则输入贷款人身份证(如:
4181130),输入贷款人姓名(如zhousiyu),输入贷款金额(如100000),输入贷款年限(如:
3),系统将暂时记录这些记录。
●执行项目2
输入编号2(回车),输入一个贷款编号,若不存在,则画面显示“无此条贷款,请重新输入贷款编号”;若存在(如:
123456)则输入还款编号(如456789),输入贷款人身份证(如:
4103087),输入贷款人姓名(如xiaocuicui),输入还款金额(如30000),系统将暂时记录这些记录。
●执行项目3
输入编号3(回车),输入贷款人身份证号,若之前的记录中没有贷款记录,则显示“无贷款记录”;若存在记录,则显示该人贷款记录(包括:
贷款编号,贷款人身份证号码,贷款人姓名,贷款金额,贷款年限)。
●执行项目4
输入编号4(回车),输入贷款编号,若不存在该贷款编号,则显示“编号有误”;若存在,则显示该人还贷记录(包括:
还贷编号,贷款人身份证号码,还款人姓名,还款金额,索还贷款编号)。
●退出该系统
输入编号5(回车),如果要退出该系统,则输入“y”,若不退出“n”
(五)、心得体会
通过两个星期的研究、学习、设计、不断运行尝试,最终成功,确实得到了很多。
主要问题是之前学习的C程序掌握得不够扎实,运用不够灵活,设计之前无从下手。
但在不断翻书、问同学的过程中,所学颇多。
编程是一个漫长难熬的过程,但不能放弃,理清思路,画出结构图,一步步分析,想出要用到的函数,将自己设计的结构分成几块,然后逐个分析设计。
每一个设计好了之后都要运行。
之后组合起来。
再不断运行尝试。
(下面是我自己画的结构图)
其实在编程的过程中,最困难的是编写拓展功能,一开始毫无头绪,本来想放弃,听说班上做相同课题的同学会,便一问到底,其实拓展功能大致结构还不是很难,比较好理解,最难的是这一功能里涉及到的几乎所有函数都没有见过,不知道也不会用,就拿出书来对着附录里的解释,一遍一遍读,一次一次理解。
最终还是取得了不错的效果。
设计过程枯燥乏味,但认真不妥协,同学之间相互帮助,也真正学到了许多知识,这是我此次实训的最大收获。
相信自己对于以后所面临的困难,都能像现在这样将沉着面对。
(六)、附录
参考文献
[1]谭浩强.C程序设计(第三版).北京:
清华大学出版社,2005
[2]谭浩强.C程序设计题解与上机指导(第三版).北京:
清华大学出版社,2005
[3]HerbertSchildt.C语言大全(第四版).北京:
电子工业出版社,2004
[4]SamuelP.HarbisonⅢ,GuyL.Steele.C语言参考手册(第5版).北京:
机械工业出版社,2003
[5]张建勋.C语言程序设计教程.北京:
清华大学出版社,2008.2
[6]崔武子.C程序设计教程(第2版).北京:
清华大学出版社,2007.6(第2版)
[7]K.N.King.C语言程序设计:
现代方法(第2版).北京:
人民邮电出版社,2010