收藏 分销(赏)

程序实践报告-C语言.doc

上传人:Fis****915 文档编号:551943 上传时间:2023-12-06 格式:DOC 页数:29 大小:304KB
下载 相关 举报
程序实践报告-C语言.doc_第1页
第1页 / 共29页
程序实践报告-C语言.doc_第2页
第2页 / 共29页
程序实践报告-C语言.doc_第3页
第3页 / 共29页
程序实践报告-C语言.doc_第4页
第4页 / 共29页
程序实践报告-C语言.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、程序设计报告(2016/2017学年 第 一 学期)题 目:银行定期储蓄管理系统专 业 应用统计学 组长 学号姓名 B15080330 宁行 组员 学号姓名 B15080331 彭云聪 B15080332 钱春 指 导 教 师 崔子冠 指 导 单 位 计算机学院软件教学中心日 期 2016 年10月 28日 成员分工组长(宁行) 根据课题制定编程大纲分配任务以及界面美化,口令修改功能函数编写。组员(彭云聪) 主要负责程序中主函数,存款取款查询存单等功能函数等编写。组员(钱春) 主要负责整理测试程序,制作报告等。评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计

2、能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度 简短评语 教师签名: 年 月 日评分等级B15080330 宁行B15080331彭云聪B15080332 钱春备注评分等级共五种:优秀、良好、中等、及格、不及格一、课题要求和内容1 系统的基本功能该系统要求编写一个程序,设计一套银行定期储蓄管理系统,要求实现定期利息计算,客户按密码取款,工作人员口令修改等功能。2 要求及提示2.1 基本要求要能提供以下几个基本功能:(1) 工作人员根据口令进入系统;(2) 可以录入新的存单信息(存单编号,储户姓名,身份证编号,住址,联系电话,

3、存款金额,存期,利率,密码),存单信息可以保存在文件中,利率在存期决定后自动得到;(3)根据存单编号可以查询存单信息;(4)根据存单编号和密码可以完成储户取款操作,自动算清应支付的利息并显示在屏幕上。(5) 界面友好,可操作性强,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等;(6)可增加对工作人员信息维护的功能,如口令修改等。2.2 选做要求(1)设计美观实用的图形菜单界面(2)自行增加一些新功能模块2.3 提示本程序设计题目涉及到的主要知识点包括:(1)面向对象程序设计方法(2)类和对象的概念、关系及实现(3)文件的读写(4)界面制作2.4 其他要求(1)在上述功能要求的基础上

4、,为了提高成绩,可以添加一些额外的功能。(2)变量、函数命名符合规范。(3)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。(4)程序的层次清晰,可读性强。3 开发环境可以选择TC2.0、TC3.0、VC+6.0。二、需求分析本实验在vc+6.0条件下,实现银行定期储蓄管理系统的生成,存单信息中包括存单编号、储户姓名、身份证编号、住址、联系电话、存款金额、存期、利率、密码。A.输入的形式和输入值的范围:开户时自定义的账号、用户名、密码、开户金额及存单编号。用户输入正确的账号和密码,完成登陆之后可以进行存取款以及利息

5、存期的查看。B.输出形式:在所有操作中都显示是否正确以及相应操作后的内容。其中输入错误可以回到主页面,重新操作。C.程序最终所能达到的功能是用户定期存取款能够简单便捷到完成,工作人员可以自由的完成信息的维护,通过口令修改等。D.测试多组数据,以确保系统的准确跟稳定性。三、系统概述四、数据源代码#include#includevoid dlshow();void glfunction();void ckqk();int kouling();void ck();double ll(int time);void qk();double judge(int i,int j,double k,doubl

6、e l,int p);void gsjg();void gs();void jg();void xgkl();void cxxx();struct cundanint number;char name20;char add100;int ID;int tel;double money;int time;double ll;int ymd;int status;int key;void main() printf(nnnn *n);printf( | |n); printf( | |n); printf( | 欢迎使用银行定期储蓄管理系统 |n);printf( | |n);printf( |

7、|n);printf( *nnn); dlshow();void dlshow()/*验证口令,登入操作系统*/ int ling1,ling2,i;ling2=kouling();printf( Please Input Passwordn);scanf(%d,&ling1); for (i=0;(ling1!=ling2)&(i=2);i+)/*对口令进行判断,ling1ling2重新输入*/ printf( 口令错误!naaa); printf( 请重新输入n); scanf(%d,&ling1); switch(i) case 1: case 2: case 0: glfunction

8、(); break; default : printf(nn 三次输入错误,系统关闭nn);/*三次输错后,程序自动关闭*/ break; int kouling() int m=0; FILE *fp; fp=fopen(D:kouling.txt,r);/*文件路径*/ if(fp=0) printf(file error!n);/*未找到文件,路径错误*/ exit(1); fscanf(fp,%d,&m); fclose(fp); return m;void glfunction()/*操作主菜单界面*/int n; printf(nnnn * - - - - - - - - - -

9、*n); printf( $ 欢迎进入系统 $n); printf( * *n); printf( $ 存单变更请按1,再按回车 $n); printf( * *n); printf( $ 挂失/解挂请按2,再按回车 $n); printf( * *n); printf( $ 修改口令请按3,再按回车 $n); printf( * *n); printf( $ 查询请按4,再按回车 $n); printf( * *n); printf( $ 退出请按5,再按回车 $n); printf( *-*nnnnnnnn); scanf(%d,&n);/*选择功能*/ switch(n)/*根据选项运行

10、函数*/ case 1:ckqk();break;/*存取款功能*/ case 2:gsjg();break;/*挂失解挂功能*/ case 3:xgkl();break;/*修改口令功能*/ case 4:cxxx();break;/*查询信息功能*/ case 5:printf(nn 欢迎下次使用 nn);break; default:/*输入了除1-4及0外的数字*/ printf( 选择错误,请重新选择nnn); glfunction(); void ckqk()/*存款取款功能*/printf(nnnn);printf( -n);printf( n);printf( 请 选 择 功

11、能 n);printf( -n);printf( 1.存款 n);printf( 2.取款 n);printf( 3返回主菜单 n);printf( nnnnnnnnnnn); int i;scanf(%d,&i);/*输入一个数字进行选择*/switch(i)/*根据输入的数字运行函数*/case 1:ck();break;case 2:qk();break;case 3:glfunction();default:/*输入了除1-3外的数字*/printf( 选择错误,请重新选择n);ckqk();break;void ck()/*存款功能*/printf(nnnnnnn);int m1,m

12、2,i=0;struct cundan cd;printf(nn 请输入存单编号:); scanf(%d,&cd.number);/*即将录入的新用户的存单编号*/printf(nn 请输入用户姓名:);scanf(%s,cd.name);/*即将录入的新用户的用户姓名*/printf(nn 请输入地址:);scanf(%s,cd.add);/*即将录入的新用户的地址*/printf(nn 请输入电话号码:);scanf(%d,&cd.tel);/*即将录入的新用户的电话号码*/printf(nn 请输入身份证号码(六位数字):);scanf(%d,&cd.ID);/*即将录入的新用户的身份证

13、号码*/printf(nn 请输入密码(查询取款时使用):);scanf(%d,&m1); printf(nn 确认密码(查询取款时使用):); scanf(%d,&m2); for(i=0;(i=2)&(m1!=m2);)/*对密码进行判断*/printf(nn 密码不一致!nnn 请重新输入:nnn);scanf(%d,&m1);/*两次输入的密码,重新输入*/printf(nn 请确认密码:nnn);scanf(%d,&m2);/*确认输入的密码*/i+;/*循环*/ switch(i) case 1: case 2: case 0: cd.key=m1; break; default

14、: printf(nn 三次输入错误,请重新开始!nnn);/*三次输错退回主菜单*/ ckqk(); break; printf(nn 请输入存款金额:nnn);scanf(%lf,&cd.money);/*输入存款金额*/printf(nn 请选择存期:nnn);printf( 1.一年 2.三年 3.五年nnn);scanf(%d,&cd.time);/*选择存期*/cd.ll=ll(cd.time);/*根据选择的存期自动选择利率*/printf(nn 请输入存款时间(如20161019):nnn);scanf(%d,&cd.ymd);/*录入存款时间*/cd.status=1;/*账

15、户状态默认为正常*/FILE *fp;fp=fopen(D:cundan.txt,r+);/*打开用户信息文件,可读可写*/if(fp=0)printf(file errorn);/*未能正常打开*/exit(1); fseek(fp,0L,2);/*将光标定位在用户信息文档末尾*/fprintf(fp,n%d %s %s %d %d %f %d %f %d %d %dn,cd.number,cd.name,cd.add,cd.ID,cd.tel,cd.money,cd.time,cd.ll,cd.ymd,cd.status,cd.key); /*换行后进行数据录入,数据为上方填写的数据*/f

16、close(fp);/*录入完毕,关闭文件*/printf(nnnn); printf(nn 存款成功!n); printf(nn 存单编号 用户姓名 存款 存期 利率 n);printf(nn %d %s %f %d %f nn,cd.number,cd.name,cd.money,cd.time,cd.ll);printf(nnnn返回管理员界面nnnn) ;glfunction();/*返回主菜单*/double ll(int time)/*利率的选择函数*/double m;switch(time)case 1: m=0.001;break;case 2: m=0.003;break;

17、case 3: m=0.005;break;return m;void qk()/*取款部分函数*/int pw,i=0,number,ymd;double m,money;struct cundan cd;FILE *fp;fp=fopen(D:cundan.txt,r+);/*打开用户信息,可读可写*/if(fp=0)printf(file errorn);exit(1);printf(nn 请输入存单编号:);scanf(%d,&number);/*输入存单编号*/fscanf(fp,n%d %s %s %d %d %lf %d %lf %d %d %dn,&cd.number,cd.n

18、ame,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status,&cd.key); /*读取用户存单信息*/while(!feof(fp)&(number!=cd.number)/*判断输入的编号是否相同,不相同继续读入下一行数据,循环*/fscanf(fp,n%d %s %s %d %d %lf %d %lf %d %dn,&cd.number,cd.name,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status,&cd.key); f

19、close(fp);if(number=cd.number)/*如果查找到相应存单编号*/if(cd.status=2)/*该账户处于挂失状态*/printf(nnn 该存单已挂失,请解挂后重试n);printf(nn 即将返回管理员操作界面,请稍候nn);glfunction();else/*该账户可正常使用*/printf(n 请输入密码:);scanf(%d,&pw);/*输入密码*/for(i=0;(icd.money)/*验证取款金额是否大于余额*/ printf(n 余额不足,请查询后重试n);/*取款金额大于余额*/ printf(n 请输入取款时间(如20160506):);/

20、*输入取款时间*/ scanf(%d,&ymd); if(ymdcd.ymd)/*判断取款时间是否小于存款时间*/ printf( 输入错误,请重新开始n);/*取款时间小于存款时间,重新开始*/ qk(); else m=judge(ymd,cd.ymd,cd.money,cd.ll,cd.time);/*执行judge函数*/ cd.money=(cd.money+m-money);/*现有余额=曾有余额+利息-取款钱数*/ cd.ymd=ymd;/*更新存单中的时间*/ printf(n 您于%d取款%f,账户余额:%f,cd.ymd,money,cd.money);/*显示取款信息*/

21、 fseek(fp,-64L,1);/*光标退至本行开头处*/ fprintf(fp,n%d %s %s %d %d %f %d %f %d %dn,cd.number,cd.name,cd.add,cd.ID,cd.tel,cd.money,cd.time,cd.ll,cd.ymd,cd.status);/*录入新的数据代替原有数据*/ fclose(fp); printf(n n); printf( n); printf( 取款成功! n); printf( n); printf( 页面跳转中。 n); printf( n); printf( nnnnnnnnnnn); glfunctio

22、n(); break; default :printf(nn 三次输入错误,请重新开始!nn);qk(); break;if(number!=cd.number)/*未找到输入的编号*/printf(nnnn 该存单不存在,请核实后再输入n);double judge(int i,int j,double k,double l,int p)/*利率计算函数*/int item,n,q;double m;item=i-j;n=item/10000;q=n/p;m=q*l*k;return m;void gsjg()/*挂失解挂选择菜单函数*/printf(nnnnn);printf( +n);p

23、rintf( n);printf( 请 选 择 操 作 n);printf( 1.挂失 n);printf( 2.解挂 n);printf( 3返回主菜单 n);printf( n);printf( =nnnnnnnnnnnn);int i;scanf(%d,&i);switch(i)case 1:gs();break;case 2:jg();break;case 3:printf(nnn);printf( 即将退出,请稍候.nn);glfunction();break; default:printf(nn 选择无效,请重新选择nnn);gsjg();break;void gs()/*挂失函数

24、,通过改变cd.status的值来改变存单状态*/int num;printf(nn 请输入操作账户:nn);scanf(%d,&num);struct cundan cd;FILE *fp;fp=fopen(D:cundan.txt,r+); if(fp=0)printf(file errorn);exit(1);fscanf(fp,n%d %s %s %d %d %lf %d %lf %d %dn,&cd.number,cd.name,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status);while(!feo

25、f(fp)&(num!=cd.number)fscanf(fp,n%d %s %s %d %d %lf %d %lf %d %dn,&cd.number,cd.name,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status);if(num=cd.number)fseek(fp,-3L,1);fwrite (2,1,1,fp);fclose(fp);elseprintf(nn 该账户不存在,请核实后再输入nnn);gsjg();fp=fopen(D:cundan.txt,r);fscanf(fp,n%d %s %s

26、%d %d %lf %d %lf %d %dn,&cd.number,cd.name,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status);while(!feof(fp)&(num!=cd.number)fscanf(fp,n%d %s %s %d %d %lf %d %lf %d %dn,&cd.number,cd.name,cd.add,&cd.ID,&cd.tel,&cd.money,&cd.time,&cd.ll,&cd.ymd,&cd.status);if(cd.status=2)printf(nn 挂失成功n);printf(nn 即将返回管理员操作界面,请稍候nn);glfunction();elseprintf(nn 挂失失败,请重试nnn);gsjg();void jg()/*解挂函数,通过改变cd.status的值来改变存单状态*/int num;struct cundan cd;printf( -n);printf( | |n);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服