ATM存取款系统的改进与完善.doc

上传人:仙人指路1688 文档编号:3931351 上传时间:2023-03-28 格式:DOC 页数:43 大小:256.50KB
返回 下载 相关 举报
ATM存取款系统的改进与完善.doc_第1页
第1页 / 共43页
ATM存取款系统的改进与完善.doc_第2页
第2页 / 共43页
ATM存取款系统的改进与完善.doc_第3页
第3页 / 共43页
ATM存取款系统的改进与完善.doc_第4页
第4页 / 共43页
ATM存取款系统的改进与完善.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《ATM存取款系统的改进与完善.doc》由会员分享,可在线阅读,更多相关《ATM存取款系统的改进与完善.doc(43页珍藏版)》请在三一办公上搜索。

1、长沙学院 程序设计基础实训II实训报告实 训 题 目: ATM存取款系统的改进与完善 系部: 计算机科学与技术系 专 业 /年 级: 软件工程专业2011级 学 生 姓 名: 李安平 班 级: 1班 学号 2011022122 指导教师姓名: 职称 最终评定成绩 2012年6月项目实训任务书课程名称:程序设计基础实训II课程编码:JX020158课程类别:专业基础必修课学分数:2学时数:32开课学期:2实训题目:ATM存取款系统的改进与完善一、已知技术参数和设计要求:银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。为了模拟真实的ATM业

2、务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:(1) 登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。(2) 开户业务 要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。(3) 存款业务 客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。(4) 取

3、款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。(5) 查询业务 客户登陆系统后,可以选择查询业务,查询账户余额。(6) 转账业务 客户登陆系统后,可以选择转账业务,进行转账。注意的是转账的目的账户必须是本系统已经存在的银行账户。(7) 修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。二、各阶段具体要求:1、系统总体设计阶段(1)根据需求分析划分功能模块(2)分析并设计各个功能模块之间的关系(3)对于各个功能模块,设计相应的数据结构(必须使用链表完成全部功能)(4)设计相应的算法(必须包括排序和检索功能,且基于链表

4、进行排序和检索)2、详细设计阶段(1)对于每个功能模块,应划分成操作层和数据层(2)对于每个操作层,应尽量考虑用户操作的简单,便捷(3)对于每个数据层,必须使用链表进行管理(4)在用链表进行管理时,必须用到链表检索和排序(5)对于数据层的操作完的数据必须保存到文件中(包括文件读、写操作)3、编码实现阶段(1)完成代码编写 (2)要求代码编写规范(不得使用全局变量、所有功能模块必须使用函数封装主函数main()的行数不得超过代码总长度的25%)(3)代码必须有相应的注释(注释行数不得少于代码的10%,函数功能、变量名、算法、重要的循环、分支都必须用注释说明)4、系统测试阶段(1)完成功能调试(2

5、)要求完成必要的测试工作5、交付实施阶段(1)提交可正常执行的系统,程序代码(2)撰写项目实训报告书(3)要求按照文档书写规范,严格地书写文档(4)注意:不允许使用代码、图片和表格填充报告空间。代码、图片和表格在报告中的空间比重不得超过1/3。要求使用文字清晰描述代码思想和逻辑,文字描述不得少于3000字(不包含注释文字)。三、设计工作量:(1)软件设计:严格按照具体设计要求,完成问题陈述中所提到的所有需求功能。(未使用链表实现的、代码少于300行的不及格,未使用链表排序的成绩不可以为优)(2)设计报告:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。四、工作计划:安排16周时间进

6、行实训(每周2课时),软件开发步骤如下,在第16周必须完成所有任务,实训与报告撰写同步进行;序号实践项目名称内容提要实践时数实践类型实践要求每组人数1实训项目1:程序架构的描述1、数据与逻辑分离2、程序架构的描述4验证必开12实训项目2:链表在工程中的应用1、使用链表来构造ATM机的后台数据管理2、实现常见的链表操作插入、删除、修改、遍历以及创建链表8验证必开13实训项目3:排序在项目中的应用1、在使用链表的基础上引导学生完成23种主要排序冒泡、选择和插入2、将这些算法结合到学生的工程应用题中8验证必开14实训项目4:查找在项目中的应用1、在使用链表的基础上引导学生完成12种主要查找如顺序查找

7、2、将这些算法结合到学生的工程应用题中4验证必开15实训项目5:结构在文件中的应用1、讨论不同结构的设计技巧,考虑在同一项目中使用自定义结构的必要性2、考虑将复杂结构双向链表、循环链表作为解决问题的一种途径与手段4验证必开16实训项目6:文件操作技巧1、加强学生对文件操作的认识2、考虑将复杂结构中的相关数据通过写入文件的方法作为长期记录保存的工具3、并将此作为改进项目的手段4验证必开1五、注意事项1)提交文档课程实训任务书(每学生1份)课程实训报告(每学生1份)2)成绩评定学生成绩由指导老师负责考察评定,分为:优、良、中、及格和不及格五档。l 以下情况可以判断成绩为不及格:a、 抄袭b、 代码

8、量少于300行c、 未使用链表d、 报告不符合规范l 以下情况不可以判断成绩为优:a、 未使用链表排序b、 使用全局变量c、 大量代码集中在主函数main()中,而不是使用函数进行合理封装d、 功能不完善,有残缺e、 代码缺乏必要的注释f、 缺课l 其他情况由指导老师综合考虑给予成绩评定l 主要考察知识点与要求:a、 链表组织数据b、 排序(基于链表)c、 链表检索d、 文件保存和读取数据e、 函数封装及调用f、 代码缩进和注释等软件工程原则基本要求g、 文档 摘 要银行ATM取款机系统能为用户提供存款、取款、查询、转账与修改密码的功能。在设计编写银行取款机系统时,明确需求以及操作流程,构造出

9、取款机的基本框架及正确的操作流程。将取款机的任务需求分成若干个模块进行编写。编写主要运用链表建立完整的客户信息,完成客户所需的存款以及取款,修改密码等多项功能。查询信息需要对链表进行遍历,逐一对信息进行核对比较,直到找到所需信息或找到链表尾部停止。链表能够按所需分配内存空间,让空间得到充分的利用,同时能够短暂的保存信息,若需长期保存,需要文件的配合。文件能够长久的保存信息。在银行取款机系统中,先把链表中的信息存进文件中,然后在文件中将信息读到链表中。能够实现信息的多次利用。关键词:ATM,链表,文件目 录摘 要I第1章 需求分析11.1 功能需求11.2 性能需求11.3 运行需求1第2章 系

10、统设计22.1银行开户功能22.2银行登录功能22.3银行取款功能22.4余额查询功能22.5转账功能32.6修改密码功能32.7存款功能32.8卡号查询功能32.9姓名查询功能32.10余额查询功能42.11删除客户功能42.12增加客户功能4第3章 系统实现53.1卡号与密码的验证53.2 从文件中读取信息63.3 删除功能的实现73.4数据域逻辑的分离73.5程序架构的描述73.6 链表的应用83.7 链表排序8第4章 测 试94.1开户功能测试94.2登陆功能测试94.3取款功能测试94.4修改密码功能测试104.5多个客户信息测试10结 论11附 录13致 谢33第1章 需求分析1.

11、1 功能需求先进行系统分析,将该系统划分为登陆注册模块、键盘输入输出模块、信息认证模块、显示模块、数据存储模块。登陆注册模块主要包括新用户的开户以及老用户的登陆功能。键盘输入输出模块输入客户信息,银行卡号,密码,存款取款的金额等相关信息,待系统处理后,输出客户的某项信息或提示客户的操作信息。信息认证模块主要是对客户的卡号、密码、以及客户的输入信息的规范进行判断与认证。显示模块主要包括取款模块、存款模块、查询余额模块、转账模块、修改密码模块。数据存储模块主要是将客户信息存储到文件中,需要时从文件中读取数据到链表中,找到相关信息。1.2 性能需求 性能的需求就是要求在数据上要有精确值,以免因为数据

12、上的马虎而使得程序存在不确定的风险,在查询过程中,要求显示该客户账号上的所有金额,在客户存取款的过程中,系统只支持交易金额为一百的倍数,并且交易的金额一次不能超过六百,当客户的输入的取款金额比现有余额还大时,要提示客户,余额不足,自动跳出系统。密码的设置只能是六位数。在转账过程中支持任何输入的数据,但转账只能在文件中已经存在的用之间进行转账。交易结束后账户余额要与保存的客户信息越保持一致性,并且在运行时不能太过于繁琐,尽量减少不必要的运行程序,尽量做到简单而功能强大,运行速度快,执行力强等特点。1.3 运行需求银行取款机系统的界面要求简洁、友好,且菜单操作简单易懂。当客户输入的信息不符合要求时

13、,要温馨的提示客户重新输入,或者退出。如客户输入的密码与开户时所设密码不相同,则提示客户重新输入密码,若密码连续输入三次,则提示客户三次密码输入错误,退出程序。这样能让客户很清楚自己当前的操作,以及操作后系统运行产生的结果,简单方便,使用性强。第2章 系统设计2.1银行开户功能 新客户使用银行取款机系统时,必须先进行开户。客户在进行开户业务时,提示客户输入姓名,身份证号码即新客户的银行卡号,并设定好银行卡密码。将客户的信息写入链表当中,并保存在文件中。新客户的默认余额为0.0元。当客户注册成功后,系统将自动保存客户信息,然后显示客户的姓名,卡号,以及客户的默认余额。以便客户识记。2.2银行登录

14、功能 客户进入银行取款机登录界面时,按照指定的要求进行操作,当提示客户输入身份证号(卡号),当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,若客户输入的银行卡号与注册的卡号不相同,则提示客户输入有误,让客户重新输入。三次输入银行卡号有误,系统将自动退出。若输入卡号正确,则进入下一个流程。当提示客户输入银行卡密码,当系统接收到客户的输入信息时,将文件中的信息输到链表中,进行遍历核对,若客户输入的银行卡密码与注册的银行卡密码不相同,则提示客户输入有误,让客户重新输入。2.3银行取款功能客户进入银行取款界面时

15、,在银行取款界面中显示客户可取金额数目项目,客户按照指定金额对应的阿拉伯数字输入即可。当客户按照指定的要求输入时,将对客户输入的金额与用户里面的余额进行比较,若客户输入的金额大于现有余额,则提示客余额不足,返回功能选择界面。若客户输入的金额小于客户原有余额,则按p-money-=i的公式从客户原有余额中减去当下所取金额,然后提示取款成功,并显示客户现有余额。2.4余额查询功能客户在进入银行查询界面时,系统自动从链表中读取与该客户相匹配的余额。2.5转账功能客户进入银行转账界面时,当系统提示客户两次输入需要转账的卡号,若两次输入不相同,则返回选择功能界面。若客户两次输入相同,则从客户原有余额中减

16、去当下所取金额,然后提示转账成功,并显示客户现有余额。2.6修改密码功能客户进入登录界面时,系统自动提示客户输入银行卡原密码,当系统接收到客户的输入的信息时,遍历链表中的信息与客户输入的密码进行核对,若客户输入的银行卡原密码与注册的银行卡密码不相同,则提示客户输入有误,系统将自动返回功能选择界面。若输入密码正确,提示客户输入新密码,并保存好客户修改的新密码。下次登录只能用新密码才能成功登录。2.7存款功能客户进入银行存款界面时,系统会从链表中找出该客户的余额显示出来,在银行存款界面中显示客户可取金额数目项目,客户按照指定金额对应的阿拉伯数字输入即可。系统将在客户原有余额中加上当下所存金额,然后

17、提示存款成功,并显示客户现有余额。2.8卡号查询功能 在客户信息查询界面中,能够对建立的所有客户的信息按照卡号进行查询,当操作人员输入需要查找的客户的卡号,当找到链表中的卡号与输入的客户的卡号相同时,则显示出客户的信息,包括客户的姓名,卡号,以及余额。若没有找到与之相同的客户卡号,则提示没有该用户,返回功能界面,重新选择。操作者完成客户信息查询后,显示该客户的姓名、卡号、以及余额。2.9姓名查询功能 在客户信息查询界面中,能够对建立的所有客户的信息按照姓名进行查询,当操作人员输入需要查找的客户的姓名,当找到链表中的客户姓名与输入的客户的姓名相同时,则显示出客户的信息,包括客户的姓名,卡号,以及

18、余额。若没有找到与之相同的客户姓名,则提示没有该用户,返回功能界面,重新选择。操作者完成客户信息查询后,显示该客户的姓名、卡号、以及余额。2.10余额查询功能 在客户信息查询界面中,能够对建立的所有客户的信息按照余额进行查询,当操作人员输入需要查找的客户的余额,若找到链表中的客户余额与输入的客户的余额相同,则显示出客户的信息,包括客户的姓名,卡号,以及余额。若没有找到与之相同的客户余额,则提示没有该用户,返回功能界面,重新选择。操作者完成客户信息查询后,显示该客户的姓名、卡号、以及余额。2.11删除客户功能 在已经建立起了链表的前提下,后台操作者可以对客户的信息进行删减,当操作人员输入需要删除

19、的客户的卡号,当找到链表中的客户卡号与输入的客户的卡号相同时,将该客户信息赋给一工作指针,用另一操作指针指向该用户后一客户,则删除该用户的信息。若没有找到与之相同的客户卡号,则提示没有该用户,返回功能界面,重新选择。2.12增加客户功能 后台操作者可以增加客户的信息,操作者按要求输入客户的姓名、卡号、余额即可。系统将操作人员输入的信息写入链表中。传入头指针,并以头插法的形式写入即可。第3章 系统实现3.1卡号与密码的验证密码是当客户登陆银行取款机系统时,系统对顾客的身份进行验证的一种方式。当用户的密码完全与注册时的密码相同时,则可以进入该系统,但如何对客户的密码进行验证,就需要对其原理及其运行

20、方式做详细的解说,客户进入登陆界面后,将链表的头指针head传给该函数,char mima6 为客户输入卡号的变量, Char d20为客户输入卡号的变量。当接收到客户输入的卡号与密码时,要对客户的卡号与密码进行验证,则得对链表进行一次遍历,将工作指针指向头指针,从头结点开始寻找,逐一与客户输入的卡号进行核对,如果第一个节点没有所需信息,则让工作指针指向下一个节点,当工作指针p指向NULL时还未找到该用户时,则说明没有该用户,若找到该客户的卡号,提示该客户输入密码,并对客户的密码进行核对,若与链表中的密码不同,则提示客户密码输入错误,请重新输入,若完全相同,则提示客户登陆成功,进入菜单选择界面

21、。下面是验证密码的相关程序:void denglu(struct per *head) char d20; char mima20; printf(请您输入卡号n); scanf(%s,d);for(q=head;q!=NULL;q=q-next) if(strcmp(q-ID,d)!=0) printf(nn请输入您的密码n); scanf(%s,mima); if(strcmp(q-mima,mima)!=0) printf(密码不正确,请重新输入密码n); else caidan(head); 3.2 从文件中读取信息运用文件,将运用链表建立的银行取款机系统进行优化。当运用文件对链表建立

22、的数据,以写的方式将所有信息写入文件夹中进行持久保存,当需要查找某客户的信息时,又以读的形式将信息从文件中读出来。这样,当第一次操作全部结束后,再登录银行取款机系统时,将文件中存有的数据以读的方式读出来,又可以进行连续的操作,这样数据能够多次利用,方便实用。如何将文件中的信息读入链表中,又是我们需要探讨的问题。需要我们仔细的分析。首先定义两个工作指针,然后以读的方式打开一个二进制的文件,如果文件指针指向NULL,则提示“不能打开文件”,如果能够打开,那么进行下一读取数据,读取数据到链表时,必须申请空间来接受信息,当成功申请到空间后,将工作指针p指向头指针head,以便从第一个节点开始读取数据,

23、运用一个循环来读取文件中的数据,直到独到文件尾结束。在循环过程中,如果没有读到数据,则跳出循环,如果读到了数据,那么运用p-next开辟另外一个空间用来接收下一个节点的信息,然后运用工作指针q保存当前节点的指针,作为下一个节点的前驱,然后让工作指针p指向下一个节点新都如数据链到当前表尾,直到最后一个节点的后继指针为空。读取完毕。下面是验证密码的相关程序:FILE *fp; per *p,*q; if(fp=fopen(save.txt,rb+)=NULL) printf(不能打开文件n); p=(per*)malloc(sizeof(per); head=p; while(!feof(fp)

24、if(1!=fread(p,sizeof(per),1,fp) break; p-next=(per *)malloc(sizeof(per); q=p; p=p-next; q-next=NULL; fclose(fp); 3.3 删除功能的实现在链表中删除某个节点时,若是第一个客户时,运用头指针指向该节点下一个节点的地址,这样就把第一个节点删除了。如果不是头节点,用一个工作指针指向该节点,用另一工作指针指向该接点的下一节点的地址,这样就把指定要删节点删除了。printf( 请输入要删除的客户卡号:n); scanf(%s,k); if(p-kehu.ID=k) *Phead=(*Phead

25、)-next,free(p); else while(NULL=p-next&p-next-kehu.ID!=k) p=p-next; if(p-next=NULL) printf(对不起,没有该客户 !n); else t=p-next; p-next=p-next-next; 3.4数据域逻辑的分离在制作银行取款机系统时,首先不处理程序的有关数据,比如说不核对客户银行卡卡号与密码即可进入功能选择界面,不处理取款时余额是否不足,客户的输入有误等这些问题,而是将银行取款机系统中的各个功能的函数基本框架构建好,这样银行取款机系统中逻辑这一块就不受数据方面的约束而显得非常清晰了。3.5程序架构的描

26、述在构建的取款机系统的函数中包括注册函数、登录函数、取款函数、查询函数、转账函数、存款函数、修改密码函数、退出函数。每构件一个函数时,先在主函数中调用,能够成功编译运行时再写别的函数,然后逐一进行调用,编译运行无误即可。然后根据到那个模块就调用相应的功能函数,在运行时都有相应的功能界面即可,这样银行取款机系统的基本框架就已经成型了。3.6 链表的应用运用链表建立银行ATM后台管理系统。在银行ATM后台管理系统中,可以建立若干个客户信息,直到连续输入三个零则停止客户信息的建立。在后台中,可以运用卡号、姓名、以及余额进行客户信息查询。并且可以对客户的信息进行插入、删除等功能。在后台链表操作中。能够

27、建立若干个客户的信息,同时也可以对所有的客户信息遍历,进行输出,同时可以对所有的客户信息按余额的降序排序进行输出。在已经建立好了客户信息的前提下,能够对客户的信息进行删减,同时也能够增加客户的信息。同时能够按客户的卡号、姓名、以及余额,对客户的信息进行查询。3.7 链表排序链表排序,包括冒泡排序,选择排序,以及插入排序。运用链表排序与运用数组进行排序的思想很类似。比如说冒泡排序,冒泡排序同样是对所有数据进行逐一的比较。然后将大的数据保存到下面去,直到一轮比较结束,然后再进行第二轮比较。直到所有的比较完成。将链表排序运用于银行ATM后台客户信息输出系统中,已经建立好若干个客户信息,当需要让客户的

28、信息按照余额的降序进行排列输出时,则链表的排序则体现出了它的功能。让客户的信息以余额的降序一一排列输出。但在实际运用时又遇到了麻烦,交换的是某项的值,而不是地址,这个让我很头疼,但我会继续努力,将其弄懂弄透。做到得心应手。第4章 测 试4.1开户功能测试当客户注册成功时,出现如图4.1所示的界面。图4.1 开户界面示意图4.2登陆功能测试当客户卡号与密码核对无误,登陆成功时,出现如图4.2所示的界面。图4.2 登录界面示意图4.3取款功能测试当客户取款成功时,出现如图4.3所示的界面。图4.3 取款界面示意图4.4修改密码功能测试当客户密码修改成功时,出现如图4.2所示的界面。图4.4 修改密

29、码界面示意图4.5多个客户信息测试当管理员按要求输入多个客户信息时,出现如图4.5所示的界面。图4.5 建立客户信息示意图结 论在ATM存取款系统的改进与完善的过程中,让我学到了许多的知识,有了更多新的感受。在改进取款机系统时,让我增强了挑战困难的勇气。上学期对链表与文件有着强烈的恐惧心理,感觉那是一道不可逾越的高山。但通过老师的一步步的引导,让我们慢慢向高山靠近,然后试着去攀登。经过若干次的尝试,慢慢体会到了其中的乐趣,同时也就增加了自己继续攀登的信心。ATM的制作过程中,常常会遇到一系列的问题,比如说如何传递指针,这个问题一直是我难以理解的知识,总感觉很抽象的,为什么它就能很准确的将头指针

30、传过来。刚开始就是运用全局指针进行操作,这样理解起来就比较容易了,但是全局变量有着很大的缺陷,那就是一旦全局变量发生变化,其他的函数都将发生一系列的变化,那种变化是很难预知的,轻则运行出错,重则系统瘫痪,无法运行。后来怀着对该问题的深思,向同学询问,并去图书馆查阅资料,慢慢对链表传参有了一定的了解。通过多次的尝试,对其的理解程度又有了新的提高。在制作的过程中,我不仅学到的是一些直观实用的应用知识,更学到了许多设计思想。以前写程序,拿到就一股脑的写,没有去对其需求进行分析。同时程序很零乱,可读性不高,并且程序复杂但功能繁琐。若哪一环节出现错误时,很难调试。但通过这一学期的学习,让我在程序的设计思

31、想这一块又有了更深层次的了解。比如说ATM的制作过程,首先不急于编写程序,而是详细了解需求关系,弄清楚操作流程,构建整体框架,将取款机系统的功能分成若干个小模块。这样在功能的设计方面就不至于盲目去尝试,这样费时又费力。但一一分割后,就只需对各个功能进行针对性的设计与分析,这样就目的性很强,容易测试与修改。然后在构建好的框架中以链表为工具进行编写,最后加上文件,保存客户信息,以备多次利用。完善ATM的功能。 参考文献1谭浩强C程序设计(第三版)北京:清华大学出版社,2005,330-348.2 高涛,陆丽娜C语言程序设计西安:西安交通大学出版社,2007.2:249-280附 录#include

32、 #include#includestruct per /*定义结构体*/ char name20; char ID20; int money; char mima6; struct per *next;typedef struct person /*定义另一结构体*/ struct per kehu ; struct person *next; L; void chaxun(struct per *head); /*各个函数的声明*/void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct pe

33、r *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuangzhang(struct per *head);void chuangjian(struct person *Phead);void shuchu(struct person *Phead);void shanchu(struct person *Phead);void zengjia(struct person *Phead); void chaxun1(struct pers

34、on *Phead);void chaxun2(struct person *Phead);void chaxun3(struct person *Phead);void tuichu();void menu();/*主函数*/void main() char x; char choose; /*choose为定义输入选择的变量*/ int flag=1; struct person *Phead=NULL; /* Phead为定义二层头指针*/ struct per *head=NULL; /*head为定义一层头指针*/ printf( *n); printf( * 欢迎使用ATM自动取款

35、机系统 *n); printf( *nnnn); printf(-n); printf(| 1 开户 |n); printf(-n); printf(| 2 登录 |n); printf(-n); printf(| 3 前台客户信息查询中心|n); printf(-n); printf(| 请选择您的需求 |n); printf(-n); scanf(%s,&x); system(cls); switch(x) case 1:system(cls); kaihu(head); /*调用开户函数*/ break; case 2:system(cls); denglu(head); /*调用登陆函

36、数*/ break; case 3:system(cls); menu(); /*调用后台菜单函数*/ break; while(flag) system(cls); menu(); /*调用后台菜单函数*/ choose=getchar(); switch(choose) case 1:chuangjian(&Phead); shuchu(Phead); /*调用后台输出函数*/ system(pause); system(cls); break; case 2:chaxun1(Phead); /*调用后台卡号查询函数*/ system(pause); system(cls); break;

37、 case 3:chaxun2(Phead); /*调用后台姓名查询函数*/ system(pause); system(cls); break; case 4:chaxun3(Phead); /*调用后台余额查询函数*/ system(pause); system(cls); break; case 5:shanchu(&Phead); /*调用后台删除用户函数函数*/system(pause); system(cls); break; case 6:zengjia(&Phead); /*调用后台增加用户函数*/ system(pause); system(cls); break; case

38、 7: shuchu(Phead); /*调用后台输出函数函数*/system(pause); system(cls); break; case 8:shuchu(Phead);system(pause); system(cls); break; case 0:flag=0; printf(The end.n); break; /*开户函数*/void kaihu(struct per *head) head=NULL; FILE *fp; /*定义文件指针*/ struct per *p1=NULL,*p2=NULL; /*p1,p1为定义链表指针*/ p1=(struct per*)malloc(sizeof(struct per); /*开辟内存单元*/printf(请输入您的姓名:n); /*将数据输入链表中*/ scanf(%s,p1-name

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号