1程序设计语言课题:银行信贷管理系统班级号:学号:学生姓名:课程设计起止日期:6.30-7.11目录2(一)、设计目的---------------------------------------2(二)、功能描述---------------------------------------2(三)、总体设计---------------------------------------2一、功能模块设计--------------------------------3二、数据结构设计--------------------------------8三、函数功能描述--------------------------------8(四)、程序实现---------------------------------------9一、源码分析------------------------------------9二、程序界面显示--------------------------------14(五)、心得体会---------------------------------------17(六)、附录-------------------------------------------18(一)、设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。本课程设计的目的和任务:31.巩固和加深学生对C语言课程的基本知识的理解和掌握;2.掌握C语言编程和程序调试的基本技能;3.利用C语言进行基本的软件设计;4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力。(二)、功能描述本程序主要是的基础操作。基本功能:(如图1)a)申请贷款b)还贷c)查询贷款记录d)查询还贷记录拓展功能:采用文件形式对贷款和还款记录进行操作,包括:c)写入文件d)读取文件创新(自拟)功能:程序实现的其它功能由个人自拟。拓展功能:要求对上述输入的贷款和还贷记录进行文件保存,下次进入系统时从文件读出数据。(图1)银行信贷管理系统简易功能图(三)、总体设计一、功能模块设计1.1银行信贷管理系统主要分为两个大模块,为贷款记录和还贷记录。(图2)(图2)1.2具体的功能由两大模块下分的模块实现。通过贷款信息输入,贷款记录分为申请贷款和查询申请贷款(如图3);通过换信息输入,还款记录分为还贷和查询还款记录(图4)。下银行信贷管理系统贷款记录还贷记录查询还贷记录查询贷款记录还贷申请贷款银行信贷管理系统4图清晰的显示了功能描述中的四个基本功能。(图3)(图4)1.2申请贷款时,会显示输入贷款编号,确认贷款编号无重复后,建立贷款信息,输入贷款人身份证号码、贷款人姓名、贷款金额、贷款年限。(功能图如图5,流程图如图6)(图5)贷款记录查询还贷记录还贷信息输入贷款信息输入还贷记录查询贷款记录还贷申请贷款申请贷款输入贷款编号输入贷款年限输入贷款人身份证号码输入贷款信息输入贷款人姓名输入贷款金额判断“可用”5开始输入“贷款编号”输入贷款信息判断是否“重复”是否输入贷款人身份证号码输入贷款人姓名输入贷款金额输入贷款年限保存信息数据结束输出“该编号已被使用,请输入其他编号”(图6)如若输入个人信息后,贷款人显示还有欠款未还,则不能再次贷款。1.4查询贷款时,会显示要求输入贷款人身份证号码,通过身份证号码来查询是否存在贷款,若存在,则显示该贷款人的贷款记录;若不存在,则显示无记录。(功能图如图7、流程图如图8)(图7)查询贷款记录否贷款记录输入贷款人身份证号码显示“无记录”查询是否存在贷款是6开始查询贷款记录查询是否存在贷款输出该编号所有贷款记录输入贷款人身份证号码是否输出“无贷款记录”结束(图8)1.5还贷时,会显示要求输入贷款编号,通过贷款编号来查询是否存在贷款,若存在,输入一个还款编号,确认还款标号无重复后,输入还款人身份证号码,还款人姓名,还款金额,所还贷款编号。若不存在则显示“输入编号错误”。(功能图如图9、流程图如图10)(图9)还贷输入贷款编号是否存在该贷款“输入编号错误”否是输入还款信息(还款人身份证、还款人姓名、还款金额、所还贷款编号)7开始结束输入贷款编号判断编号是否存在是输入还款信息否输出“输入编号错误”(图10)1.6查询还贷记录时,显示要求输入一个贷款编号,通过贷款编号来查询是否存在贷款,若存在,则显示该贷款所有还贷记录,若不存在,则显示“输入编号错误”。(功能图如图11,流程图如图12)(图8)(图11)开始结束输入贷款编号是否存在该贷款编号是输出该还贷所有记录否输出“输入编号错误”(图12)查询还款记录输入贷款编号显示该还贷所有记录否是是否存在该贷款显示“输入编号错误”81.7安全退出系统(y/n)。(流程图如图13)开始结束输出“确认是否退出”输入“y”输入“n”退出系统返回主页面(图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头文件#includestdio.h在使用标准函数库中的输入函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#includestdio.h的作用就是用来提供这些信息的,stdio.h时C编译系统提供的一个文件名,stdio是“standardinput&output”的缩写,即有关标准输入输出的信息。#includestring.h字符串处理。C语言里关于字符数组的函数定义头文件,常用函9数有strlen、strcmp、strcpy等等。#includestdlib.h即standardlibrary标准头文件。里面包含了C语言最常用的系统函数。Stdlib.h里面定义了五种类型、一些通用工具函数。3.2输入函数scanf(“”,&)即函数利用地址符号&完成对程序中某个变量的赋值,进而判断程序中循环的功能。fclose(FILE*fp)关闭fp所指的文件,释放文件缓冲区。feof(FILE*fp)检查文件是否结束。fopen(char*filename,char*mode)以mode指定的方式打开名为filename的文件。fread(char*pt,unsignedsize,unsignedn,FILE*fp)从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.程序预处理#includestdio.h//标准输入输出函数库#includestring.h//字符串操作函数库#includestdlib.h//标准函数库inti=0,j=0;//定义i,j为整型数据,且将0赋值给i,jvoiddaikuan();//定义空函数daikuanvoidhuandai();//定义空函数huandaivoidchaxundaikuan();//定义空函数chaxundaikuanvoidchaxunhuandai();voidduquwenjian();longintdemand(structmoney1a[],structmoney2b[],charstr[]);//定义长整型函数demandstructmoney1//定义结构体,使贷款为一个整体{10longintsum;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();11c=getchar();//输入一个字符给字符变量cif(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);//关闭fp1if((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);}void