上海应用技术学院银行信贷系统课程设计报告Word格式文档下载.doc
《上海应用技术学院银行信贷系统课程设计报告Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《上海应用技术学院银行信贷系统课程设计报告Word格式文档下载.doc(21页珍藏版)》请在冰点文库上搜索。
第九天提交课程设计报告;
第十天面试或答辩。
四、主要参考资料
[1]谭浩强.C程序设计(第四版).北京:
清华大学出版社,2010
[2]谭浩强.C程序设计题解与上机指导(第四版).北京:
清华大学出版社,2010
[3]HerbertSchildt.C语言大全(第四版).北京:
电子工业出版社,2004
[4]SamuelP.HarbisonⅢ,GuyL.Steele.C语言参考手册(第5版).北京:
机械工业出版社,2003
[5]程序设计语言课程设计指导书.
指导教师(签名):
教研室主任(签名):
2014年6月30日2014年6月30日
目录
1设计目的 5
2功能描述 5
2.1模块功能 5
2.2流程图 6
3总体设计 13
3.1功能模块设计 13
3.2数据结构设计 13
3.3函数功能描述 13
4程序实现 13
4.2运行结果 13
5课程设计总结 17
设计目的
题目六银行信贷管理系统
1.设计要求:
基本功能:
a)申请贷款
b)还贷
c)查询贷款记录
d)查询还贷记录
拓展功能:
采用文件形式对贷款和还款记录进行操作,包括:
c)写入文件
d)读取文件
创新(自拟)功能:
程序实现的其它功能由个人自拟。
2.设计要求具体说明
贷款记录中包含以下数据:
贷款编号、贷款人身份证号码、贷款人姓名、贷款金额、贷款年限
还贷记录中包含以下数据:
还款编号、还款人身份证号码、还款人姓名、还款金额、所还贷款编号
申请贷款
要求输入贷款编号、贷款人身份证号码、贷款人姓名、贷款金额、贷款年限。
还贷
要求输入一个贷款编号(要求对贷款编号进行检查,如果没有这条贷款,显示输入编号错误),还款编号、还款人身份证号码、还款人姓名、还款金额、所还贷款编号.要求还款编号不能重复。
查询贷款记录
要求输入贷款人身份证号码,先查询是否存在贷款,如果存在显示该贷款人的所有贷款记录,如果不存在显示无记录。
查询还贷记录
要求输入一个贷款编号(要求对贷款编号进行检查,如果没有这条贷款,显示输入编号错误),查看对该贷款的所有还贷信息。
拓展功能
要求对上述输入的贷款和还贷记录进行文件保存,下次进入系统时从文件读出数据。
3.提示
定义合适的结构体类型,使用链表或数组的方式组织数据。
2功能描述
2.1模块功能
一.基本功能:
贷款记录中包含以下数据:
贷款编号、贷款人身份证号码、贷款人姓名、贷款金额、贷款年限
还贷记录中包含以下数据:
还款编号、还款人身份证号码、还款人姓名、还款金额、所还贷款编号
申请贷款
还贷
要求输入一个贷款编号(要求对贷款编号进行检查,如果没有这条贷款,显示输入编号
错误),还款编号、还款人身份证号码、还款人姓名、还款金额、所还贷款编号.要求还
款编号不能重复。
查询贷款记录
要求输入贷款人身份证号码,先查询是否存在贷款,如果存在显示该贷款人的所有贷款
记录,如果不存在显示无记录。
查询还贷记录
错误),查看对该贷款的所有还贷信息。
二.拓展功能
2.2流程图
开始
提示
输入贷款信息
检查申请是否合法
放入结构体数组中
Y
N
结束
图1添加(贷款客户信息)
开始
输入贷款编号
检查是否存在贷款编号
输入还款编号和还款信息
检查信息的合法性
输入还款金额
检查金额额度是否合理
还款成功
图2添加(还贷信息)
检查是否存在
输出无记录
调出贷款用户信息
输出贷款用户信息
图3查询(贷款基本信息)
输出编号错误
输入还款编号
调出还款用户信息
输出还款用户信息
图4查询(还贷信息)
3总体设计
3.1功能模块设计
3.1.1添加功能设计:
添加分为两部分添加贷款用户基本信息和添加还贷用户基本信息。
添加贷款基本信息中要求输入贷款编号、贷款人身份证号码、贷款人姓名、贷款金额、贷款年限。
添加还贷用户基本信息要求输入一个贷款编号(要求对贷款编号进行检查,如果没有这条贷款,显示输入编号错误),还款编号、还款人身份证号码、还款人姓名、还款金额、所还贷款编号.要求还款编号不能重复。
其中用结构体来建立输入的用户信息的形式。
两个结构体间用静态链表连接,使其联系起来。
3.1.2查询功能设计:
查询贷款信息可以用输入贷款人身份证号码来进行,先查询是否存在贷款,如果存在显示该贷款人的所有贷款记录,如果不存在显示无记录。
查询还贷记录通过输入贷款编号(要求对贷款编号进行检查,如果没有这条贷款,显示输入编号错误)进行,查看对该贷款的所有还贷信息。
3.2数据结构设计
先建立两个结构体studen1,student2。
再设立全局变量,建立循环以验证输入的合法性,全局变量累加,全局变量累减。
3.3函数功能描述
3.3.1#include<
stdio.h>
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<
的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standardinput&
output”的缩写,即有关标准输入输出的信息。
在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:
#include"
stdio.h"
或者是#include<
这样才能调用库函数
3.3.2#include<
ctype.h>
。
#include<
是在调用字符函数时,在源文件中包含的头文件。
字符函数如:
intisspace(intch);
检查ch是否为空格制表或换行字符。
“ctype”中c为字符型char的缩写,type为类型。
3.3.3#include<
string.h>
string.h是个头文件,里面写的是关于字符串操作的一些基本函数。
当程序中涉及对字符串的操作时,会用到这个头文件里面的函数。
所以要把它include(包含)进来。
3.3.4#include<
stdlib.h>
stdlib.h里面定义了五种类型、一些宏和通用工具函数。
类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;
宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;
常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
具体的内容可以打开编译器的include目录里面的stdlib.h头文件看看。
4程序实现
4.1源码分析
#include<
FILE*fp1=fopen("
dk.txt"
"
a+"
);
FILE*fp2=fopen("
hk.txt"
charm_id[10]="
admin"
;
charm_pass[10]="
123456"
intd_num=0,h_num=0;
structDk
{
intnum;
charid[20];
charname[20];
intmoney;
floatre_money;
intyear;
structDk*next;
structDk*last;
}*d_p1,*d_p2,*d_head,*d_end;
structHk
intd_num;
structHk*next;
structHk*last;
}*h_p1,*h_p2,*h_head,*h_end;
intyhyz();
voidmenu(intx);
voidcx(intn);
voiddk_cx();
voidhk_cx();
voidquit();
voidselect1(intn);
voidselect2(intn);
voiddk();
voidhk();
voidw_f();
voidr_f();
intmain()
printf("
欢迎来到银行信贷管理系统!
\n"
getchar();
system("
cls"
if(d_head==NULL)
{
d_p1=(structDk*)malloc(sizeof(structDk));
d_head=d_p1;
d_end=d_p1;
}
if(h_head==NULL)
h_p1=(structHk*)malloc(sizeof(structHk));
h_head=h_p1;
h_end=h_p1;
r_f();
while
(1)
menu(0);
}
intyhyz()
charid[10],pass[10];
用户名:
"
scanf("
%s"
id);
if(strcmp(id,"
)==0)
printf("
密码:
scanf("
pass);
if(strcmp(pass,"
return1;
else
{
printf("
密码错误\n"
return0;
}
else
用户名错误\n"
return0;
}
voidmenu(intx)
intn;
if(x==0)
\n1.管理员登陆\n"
2.申请贷款\n"
3.偿还贷款\n"
4.贷款查询\n"
5.还款查询\n"
0.退出系统\n"
请输入功能序号\n"
fflush(stdin);
%d"
&
n);
select1(n);
1.导入文件\n"
2.导出文件\n"
3.显示贷款\n"
4.显示还款\n"
0.退出管理\n"
select2(n);
}
voidselect1(intn)
switch(n)
case1:
menu(yhyz());
break;
case2:
dk();
case3:
hk();
case4:
dk_cx();
case5:
hk_cx();
case0:
quit();
default:
printf("
输入错误\n"
menu(0);
voidselect2(intn)
w_f();
menu
(1);
r_f();
cx
(1);
cx(0);
menu(0);
输入错误"
menu(yhyz());
voidcx(intn)
if(n==1)
编号\t姓名\t身份证\t金额\t年限\t欠款\t\n"
for(d_p2=d_head->
next;
d_p2!
=d_end;
d_p2=d_p2->
next)
{
%d\t"
d_p2->
num);
printf("
%s\t"
name);
printf("
id);
printf("
money);
year);
%.f\t\n"
re_money);
}
编号\t姓名\t身份证\t金额\t贷款编号\t\n"
for(h_p2=h_head->
h_p2!
=h_end;
h_p2=h_p2->
h_p2->
printf("
%d\t\n"
d_num);
voiddk_cx()
chart[20];
inti=1;
请输入贷款人身份证号码\n"
t);
for(d_p2=d_head;
=NULL;
if(strcmp(t,d_p2->
id)==0)break;
if(d_p2==NULL)printf("
该身份证号码不存在\n"
for(d_p2=d_head;
if(strcmp(t,d_p2->
id)==0)
getchar();
system("
voidhk_cx()
intt;
chary;
请输入贷款编号\n"
fflush(stdin);
t);
if(t>
d_num||t<
=0)
输入错误,请重新输入贷款编号\n"
hk_cx();
for(h_p2=h_head;
if(t==h_p2->
d_num)
{
}
voidquit()
exit(0);
voiddk()
d_p2=d_end;
请输入贷款人姓名\n"
请输入贷款金额\n"
d_p2->
请输入贷款年限(1-10)\n"
if(d_p2->
year<
=0||d_p2->
year>
10)
输入错误,请重新输入贷款年限(1-10)\n"
dk();
d_num++;
d_p2->
num=d_num;
switch(d_p2->
year)
case1:
d_p2->
re_money=1.2*(d_p2->
case2:
case3:
case4:
re_money=1.5*(d_p2->
case5:
default:
d_p1=(structDk*)malloc(sizeof(structDk));
d_p1->
last=d_p2;
next=d_p1;
d_p2=d_p1;
d_end=d_p2;
voidhk()
hk();
h_p2=h_end;
h_num++;
h_p2->
num=h_num;
d_num=t;
num==h_p2->
d_num)break;
请输入还款人姓名\n"
请输入还款人身份证号码\n"
请输入还款金额\n"
h_p2->
while(h_p2->
money>
re_money)
超出范围,请重新输入还款金额\n"
scanf("
re