《C语言储蓄综合平台.ppt》由会员分享,可在线阅读,更多相关《C语言储蓄综合平台.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、储蓄综合业务平台储蓄综合业务平台(1)(1)面向过程项目实训之面向过程项目实训之C语言版语言版指导教师:丁学钧指导教师:丁学钧模块模块1 1项目概述项目概述项目名称项目名称储蓄综合业务平台储蓄综合业务平台 代码量代码量 600-800600-800行行课时安排课时安排共共3636学时(一周,第学时(一周,第1 1周),理论授课周),理论授课1212学时,教师上机指学时,教师上机指导导1212学时,个人实践学时,个人实践1212学时学时项目简介项目简介本项目的目标是开发一套银行储蓄柜台的综合业务平台,它本项目的目标是开发一套银行储蓄柜台的综合业务平台,它包括最常使用的开户、销户、存款、取款、查询
2、等功能包括最常使用的开户、销户、存款、取款、查询等功能项目目标项目目标1.1.使学生更深一步了解软件开发过程,了解复杂软件的组织使学生更深一步了解软件开发过程,了解复杂软件的组织过程,复杂程序的控制过程。过程,复杂程序的控制过程。2.2.提高代码的规范度。提高代码的规范度。3.3.掌握掌握C C语言中大部分的知识点。语言中大部分的知识点。主要技术主要技术1.1.结构体数组及其访问方法结构体数组及其访问方法2.C2.C语言的格式化输出语言的格式化输出3.3.文件的访问文件的访问技术重点技术重点结构体数组的访问结构体数组的访问 技术难点技术难点 文件的读写文件的读写第一阶段:需求分析第一阶段:需求
3、分析第二阶段:详细设计与实现第二阶段:详细设计与实现第三阶段:项目调试及部署第三阶段:项目调试及部署第四阶段:项目总结第四阶段:项目总结四个设计阶段四个设计阶段第一阶段:需求分析第一阶段:需求分析项目背景项目背景需求描述需求描述需求分析需求分析模块划分模块划分概要设计概要设计1.1 项目背景项目背景储储蓄蓄业业务务越越来来越越走走进进人人们们的的生生活活。代代发发工工资资、代代缴缴水水电电费费、代代缴缴电电话话费费等等业业务务极极大大的的方方便便了了人人们们的的日日常常生生活活。越越来来越越多多的的人人们们也也开开始始使使用用银银行行业业务务、储储蓄蓄业业务务,同同时时银银行行储储蓄蓄客客户户
4、越越来来越越多多。银银行行还还在在使使用用手手工工记记帐帐,由由于于手手工工记记帐帐工工作作效效率率非非常常低低,通通常常有有储储户户等等待待,排排成成长长龙龙的的现现象象,同同时时这这给给工工作作人人员员增增加加了了非非常常大大的的负负担担和和额额外外的的工工作作负负荷荷,也也给给银银行行的的发发展展带带来来了了严严重重的的制制约约和和压压力力,银行储蓄信息化已经到了不解决不行的地步。银行储蓄信息化已经到了不解决不行的地步。1.2 需求描述需求描述 系统的具体需求:系统的具体需求:银行操作员输入用户名密码后,登录本系统。银行操作员输入用户名密码后,登录本系统。银行操作员通过本系统为储蓄用户进
5、行开户操作。银行操作员通过本系统为储蓄用户进行开户操作。银行操作员根据储蓄用户要求,通过本系统存入存款。银行操作员根据储蓄用户要求,通过本系统存入存款。银行操作员根据储蓄用户要求,通过本系统完成取款业务银行操作员根据储蓄用户要求,通过本系统完成取款业务操作。操作。银行操作员通过本系统查询储蓄用户的余额。银行操作员通过本系统查询储蓄用户的余额。银行操作员根据储蓄用户要求,通过本系统完成销户业务银行操作员根据储蓄用户要求,通过本系统完成销户业务操作。操作。储蓄用户的帐户信息保存到文件中。储蓄用户的帐户信息保存到文件中。1.3 需求分析需求分析角色、功能分析:角色、功能分析:角色名称角色名称操作功能
6、操作功能银行操作员银行操作员登录、开户、存款、取款、查询余额、登录、开户、存款、取款、查询余额、销户销户银行管理员银行管理员银行操作员管理银行操作员管理用例图用例图 1.3 需求分析需求分析1.4 模块划分模块划分功能编号功能编号功能简述功能简述功能描述功能描述0退出退出退出应用程序,返回到操作系统退出应用程序,返回到操作系统1登录登录输入用户名和密码,验证后进入本系统输入用户名和密码,验证后进入本系统2开户开户为储户在本系统中开立一个帐户,供后续业务为储户在本系统中开立一个帐户,供后续业务使用使用3存款存款把储户的存款额加在其帐户上把储户的存款额加在其帐户上4取款取款从该储户的帐户余额上减去
7、取款额从该储户的帐户余额上减去取款额5查询查询查询储户的帐户余额及其他信息查询储户的帐户余额及其他信息6销户销户结算帐户余额,并将该帐户的状态置为销户结算帐户余额,并将该帐户的状态置为销户1.4 模块划分模块划分 体系结构示意图体系结构示意图业务模块业务模块服务模块服务模块1.5 概要设计概要设计业务函数业务函数 函数名称函数名称功能简述功能简述void openAccount()开户,在结构体数组中增加一个数组成员,该成员信开户,在结构体数组中增加一个数组成员,该成员信息就是一个储户的信息息就是一个储户的信息void closeAcount()销户,将该帐户的帐户状态置为销户,将该帐户的帐户
8、状态置为1,余额置为,余额置为0void deposit()存款,将存款金额加到该帐户的余额上存款,将存款金额加到该帐户的余额上void withdraw()取款,从该帐户的余额上扣除取款金额取款,从该帐户的余额上扣除取款金额void query()查询,查询某帐户的信息查询,查询某帐户的信息1.5 概要设计概要设计服务函数服务函数 函数名称函数名称功能简述功能简述void welcome()显示欢迎信息显示欢迎信息void mainmenu()系统主菜单系统主菜单int findAnAccount()查找一个帐号在数组中的位置查找一个帐号在数组中的位置void dispAnAccount()
9、显示一个帐号的帐户信息显示一个帐号的帐户信息int createAccNumber()生成一个新的可用帐号生成一个新的可用帐号int readData()把储户信息从文件中读到结构体数组中把储户信息从文件中读到结构体数组中int writeData()把储户信息从结构体数组写入文件中把储户信息从结构体数组写入文件中int checkInput()检查录入的户名、密码、存入金额格式是否合法检查录入的户名、密码、存入金额格式是否合法第二阶段:详细设计与实现第二阶段:详细设计与实现任务一:登录业务模块功能及主函数实现任务一:登录业务模块功能及主函数实现任务二:系统菜单及开户功能实现任务二:系统菜单及
10、开户功能实现 任务三:存款功能实现任务三:存款功能实现任务四:取款功能实现任务四:取款功能实现任务五:文件的读写操作任务五:文件的读写操作任务六:查询功能实现任务六:查询功能实现 任务七:销户功能及系统退出功能实现任务七:销户功能及系统退出功能实现任务一:登录业务模块功能及主函数实现任务一:登录业务模块功能及主函数实现登录时,操作员输入用户名和密码。如果验证通过,显示登录时,操作员输入用户名和密码。如果验证通过,显示系统主菜单,否则提示错误消息,要求用户重新输入;三系统主菜单,否则提示错误消息,要求用户重新输入;三次输入错误,退出系统。次输入错误,退出系统。任务一:登录业务模块功能及主函数实现
11、任务一:登录业务模块功能及主函数实现开始开始输入用户名和密码输入用户名和密码用户名及密码判断用户名及密码判断从文件中读取数据放入结构体数从文件中读取数据放入结构体数组中,并得到数组的最大下标值组中,并得到数组的最大下标值选择操作类型选择操作类型开户开户销户销户存款存款取款取款查询查询退出退出结束结束错误错误三次错误三次错误正确正确代码实现:步骤代码实现:步骤1创建头文件,创建头文件,bankObankOperationperation.h.h和和bankSbankServeerve.h.h,将概,将概要设计中分析得到的函数声明分别添加到该头文件中要设计中分析得到的函数声明分别添加到该头文件中
12、1.1.函数在头文件中声明,并在实现文件中定义。函数在头文件中声明,并在实现文件中定义。2.2.一个实现文件中不能两次包含同一个头文件。一个实现文件中不能两次包含同一个头文件。3.3.考虑使用具有描述性的名称,对于项目开发非考虑使用具有描述性的名称,对于项目开发非常重要,是一个很值得养成的习惯。常重要,是一个很值得养成的习惯。关键编程概念:关键编程概念:代码实现:步骤代码实现:步骤2创建源文件:。创建源文件:。在中添加在中添加main()main()函数,声明用户数组函数,声明用户数组userNameuserName和用和用户密码数组户密码数组userPWRuserPWR。main()main
13、()char userName9;char userName9;char userPWD7;char userPWD7;printf(printf(请输入您的用户名请输入您的用户名:);:);scanf(%s,userName);scanf(%s,userName);printf(printf(请输入您的密码请输入您的密码:);:);scanf(%s,userPWD);scanf(%s,userPWD);C C语言中的输语言中的输入输出功能入输出功能的实现的实现判断用户输入的用户名和密码是否有效判断用户输入的用户名和密码是否有效代码实现:步骤代码实现:步骤3if(strcmp(userName
14、,admin)=0)&if(strcmp(userName,admin)=0)&(strcmp(userPWD,admin)=0)(strcmp(userPWD,admin)=0)C C语言中字符串语言中字符串的比较函数的比较函数注意,程序中只要使用了任何一个串处理函数,注意,程序中只要使用了任何一个串处理函数,都要在程序前面加上都要在程序前面加上#include#include 利用利用FORFOR循环语句控制三次判断用户有效性验证循环语句控制三次判断用户有效性验证如果验证通过,显示系统主菜单如果验证通过,显示系统主菜单mainmenu()mainmenu(),否,否则退出系统。则退出系统。
15、注意头文件的包含。注意头文件的包含。代码实现:步骤代码实现:步骤4创建函数的实现文件创建函数的实现文件bankSbankServeerve.c.c与头文件与头文件 bankSbankServeerve.h.h 对应对应在在bankSbankServeerve.c.c中对中对mainmenu()mainmenu()函数进行定函数进行定义,先暂时定义为空。义,先暂时定义为空。代码实现:步骤代码实现:步骤5最后,在最后,在main()main()函数中调用一个自定义的函数中调用一个自定义的welcomewelcome()()函数,以完善我们的程序。函数,以完善我们的程序。在在bankSbankSer
16、veerve.c.c中对中对welcome()welcome()函数进行定义。函数进行定义。代码实现:步骤代码实现:步骤6操作员在系统菜单中选择要使用的功能模块。操作员在系统菜单中选择要使用的功能模块。操作员为储户在储蓄系统中开立一个帐户,供操作员为储户在储蓄系统中开立一个帐户,供后续业务使用。后续业务使用。任务二:系统菜单及开户功能实现任务二:系统菜单及开户功能实现任务需求描述:任务需求描述:步骤步骤1:在在bankSbankServeerve.c.c中对中对mainmenu()mainmenu()函数函数进行定义。进行定义。步骤步骤2:利用利用dowhiledowhile循环循环 实现反复
17、选择系实现反复选择系统菜单功能统菜单功能步骤步骤3:使用使用switchswitch语句确认操作员选择的具语句确认操作员选择的具体功能模块,并调用对应的功能模块函数体功能模块,并调用对应的功能模块函数系统主菜单代码实现系统主菜单代码实现:步骤步骤4:创建函数的实现文件与头文件创建函数的实现文件与头文件 对应对应步骤步骤5:在中对以下函数进行定义,先暂时定义在中对以下函数进行定义,先暂时定义为空,若无定义,不能对进行链接。为空,若无定义,不能对进行链接。void openAccount();/开户开户void closeAccount();/销户销户void deposit();/存款存款voi
18、d withdraw();/取款取款void query();/查询查询系统主菜单代码实现系统主菜单代码实现:系统主菜单代码实现系统主菜单代码实现:开户功能代码实现:开户功能代码实现:任务需求描述:任务需求描述:操作员接收储户交来的现金和存款凭证,开始执行开操作员接收储户交来的现金和存款凭证,开始执行开户操作。户操作。操作员输入储户姓名、密码(本来应由储户自已从密操作员输入储户姓名、密码(本来应由储户自已从密码键盘输入,本系统简化成由操作员代输入)。码键盘输入,本系统简化成由操作员代输入)。系统自动生成该储户帐号,每次最大开户人数为系统自动生成该储户帐号,每次最大开户人数为9999人人存入金额
19、默认开户金额为存入金额默认开户金额为0 0元。元。开户成功后,显示该储户信息,按任意键返回主界面开户成功后,显示该储户信息,按任意键返回主界面开户功能代码实现:开户功能代码实现:步骤步骤1:创建一个新的头文件创建一个新的头文件步骤步骤2:在中添加对帐户结构体的声明在中添加对帐户结构体的声明struct record int accNumber;/账号账号 char accName9;/户名户名 char accPWD7;/密码密码 double balance;/账户余额账户余额 char flag2;/销户标志销户标志;步骤步骤3:在开户在开户openopenAccount()Account
20、()函数中声明帐户信函数中声明帐户信息变量息变量,并对变量进行初始化。帐户信息包括帐户并对变量进行初始化。帐户信息包括帐户的帐号、名称、密码和存入金额。的帐号、名称、密码和存入金额。开户功能代码实现:开户功能代码实现:int accNumber;/账号账号 char accName9;/户名户名 char accPWD7;/密码密码 double cash;/存入金额存入金额 accNumber=0;memset(accName,0,sizeof(accName);memset(accPWD,0,sizeof(accPWD);cash=0;步骤步骤4:依次获取帐户的帐号、名称、密码和存入金依次
21、获取帐户的帐号、名称、密码和存入金额。额。注意账号为自动生成数据,其它数据都从键盘注意账号为自动生成数据,其它数据都从键盘输入获取。输入获取。createAccNumbercreateAccNumber、getaccNamegetaccName、getaccPWDgetaccPWD、getcashgetcash函数将在后续步骤中实现函数将在后续步骤中实现开户功能代码实现:开户功能代码实现:accNumber=createAccNumber();getaccName(accName);getaccPWD(accPWD);cash=getcash(0);步骤步骤5:将获取的帐户信息对应赋给帐户信息
22、结构将获取的帐户信息对应赋给帐户信息结构体(体(recordrecord)中声明的帐户信息)中声明的帐户信息 开户功能代码实现:开户功能代码实现:maxAccount+;/帐户的数量帐户的数量rsmaxAccount.accNumber=accNumber;strcpy(rsmaxAccount.accName,accName);strcpy(rsmaxAccount.accPWD,accPWD);rsmaxAccount.balance=cash;strcpy(rsmaxAccount.flag ,0);注意:注意:maxAccountmaxAccount变量的含义是记录操作员现在录入账变量
23、的含义是记录操作员现在录入账户在结构体数组中的位置,需要在户在结构体数组中的位置,需要在mainmenu()mainmenu()中对它初中对它初始化为始化为0.0.步骤步骤6:将帐户信息保存到文件中,并显示帐户将帐户信息保存到文件中,并显示帐户信息。信息。这里我们只保留写文件函数这里我们只保留写文件函数writeDatawriteData()()的调用,具的调用,具体实现在后续任务中完成。体实现在后续任务中完成。此处,为了暂时调试程序能正常运行,应该将此处,为了暂时调试程序能正常运行,应该将writeDatawriteData()()函数返回值设成函数返回值设成false;false;开户功能
24、代码实现:开户功能代码实现:if(writeData()printf(写文件出错!写文件出错!);return;dispAnAccount(maxAccount);/显示帐户信息显示帐户信息 printf(开户成功!按任意键返回主菜单开户成功!按任意键返回主菜单.);步骤步骤7:实现显示帐户信息函数实现显示帐户信息函数dispAnAccount,dispAnAccount,在在中实现中实现开户功能代码实现:开户功能代码实现:步骤步骤8:实现自动生成账号函数实现自动生成账号函数createAccNumber,createAccNumber,在在中实现中实现int createAccNumber(
25、)if(maxAccount=-1)return 10001;else return rsmaxAccount.accNumber+1;步骤步骤9:实现获取账户名称函数实现获取账户名称函数getaccName().getaccName().步骤步骤10:实现获取账户密码函数实现获取账户密码函数getaccPWD().getaccPWD().步骤步骤11:实现获取存入金额函数实现获取存入金额函数getcash().getcash().该函数及后续的该函数及后续的getaccPWDgetaccPWD和和getcashgetcash()()函数都用到函数都用到了了checkInputcheckInp
26、ut()()函数,这个函数实现的功能是检查函数,这个函数实现的功能是检查操作员输入的账号信息是否规范。我们将在最后的操作员输入的账号信息是否规范。我们将在最后的步骤中实现。步骤中实现。开户功能代码实现:开户功能代码实现:步骤步骤1212:实现:实现checkInput()checkInput()函数,这个函数实现函数,这个函数实现的功能是检查操作员输入的账号信息是否规范。的功能是检查操作员输入的账号信息是否规范。开户功能代码实现:开户功能代码实现:至此,我们的开户功能全部实现至此,我们的开户功能全部实现开户功能代码实现:开户功能代码实现:任务总结任务总结 1.在头文件中对所需要的函数进行声明在头文件中对所需要的函数进行声明 2.每个头文件要对应有相应的实现文件每个头文件要对应有相应的实现文件 3.搞清楚程序的结构搞清楚程序的结构,各个函数的调用及调用关系各个函数的调用及调用关系u三个三个.h.h文件,三个文件,三个.c.c文件,文件,u编写了编写了1010函数的实现函数的实现 4.用好用好C语言的字符型函数,在编程中多查资料并做语言的字符型函数,在编程中多查资料并做好记录,这是以后基础。好记录,这是以后基础。5.好的编程风格要从一点一滴逐步养成好的编程风格要从一点一滴逐步养成。