收藏 分享(赏)

课程设计实验报告_atm机仿真程序报告.doc

上传人:无敌 文档编号:716807 上传时间:2018-04-19 格式:DOC 页数:21 大小:82.50KB
下载 相关 举报
课程设计实验报告_atm机仿真程序报告.doc_第1页
第1页 / 共21页
课程设计实验报告_atm机仿真程序报告.doc_第2页
第2页 / 共21页
课程设计实验报告_atm机仿真程序报告.doc_第3页
第3页 / 共21页
课程设计实验报告_atm机仿真程序报告.doc_第4页
第4页 / 共21页
课程设计实验报告_atm机仿真程序报告.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、1安徽科技学院网络工程专业数据结构课程设计实验报告学 院: 理学院 班 级:112 班组 长: 学 号:成 员 开课学期: 2012 年 09 月 03 号实验日期: 2012 年 11 月 19 号至 12 月 16 日指 导教师: 2目录1.数据结构课程设计目的和要求-31.1.地位目的-31.2 内容要求-31.3.与其它课程的联系-31.4.课程报告撰写-42 任务书-43.正文-43.1.需求分析-43.2.概要设计-53.3.详细设计-63.4程序源代码清单-63.5.调试分析-153.6.调试结果-164.总结与体会-206.参考文献-2031.数据结构课程设计目的要求一、本课程

2、的地位、目的数据结构课程设计是计算机科学技术专业集中实践性环节之一,是学习完数据结构课程后进行的一次全面的综合练习。开设该课程设计的主要目的是:1. 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序 中的使用方法。2. 使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。3. 使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。二、课程设计的内容和要求根据课程设计的时间和个人能力,在老师的协助下选择适当难度的课程设计课题,用C/C+语言实现。具体内容如下:1、 需求分析以无歧义的陈述说明程序设

3、计的任务,强调的是程序要做什么?明确规定:输入的形式,输出的形式和值的范围;程序所能达到的功能;测试的数据。2、 概要设计说明程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。3、 详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法,画出函数的调用关系图。4、 调试分析调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析(包括基本操作和主要算法的时空复杂度的分析)和改进设想;经验和体会等5、 用户使用说明说明用户如何使用你编写的程序,详细列出每一步的操作步骤。6、 测试结果列出测试结果,包括输入的数据和相应

4、的输出数据。三、与其它课程的联系先修课程为C 语言程序设计 和数据结构等。4四、课程设计报告撰写课程设计报告包括:封面、任务书、目录、正文和参考文献等。正文包括以下几方面的内容:1.需求分析2.概要设计3.详细设计4.调试分析5.测试结果6.体会与总结2.任务书【题目描述】设计一个 ATM 机仿真程序,该程序应该具有一下功能:(1) 可以让用户开设新的账户;(2) 可以完成对账户的查询功能;(3) 可以完成账户的存款功能;(4) 可以完成账户的取款功能;(5) 可以完成账户的密码进行修改功能【题目要求】(1)存储结构采用顺序表或链表;(2)用 C 语言知识和本学期所学算法实现各模块;(3)主函

5、数设计一个菜单,通过菜单进入各模块测试。3.正文3.1 需求分析需设计的程序是模拟 ATM 机进行查询、存款、取款操作的一个程序,同时还添加了密码修改,模拟银行工作人员进行开户的功能。因为此程序是模拟对用户财产安全进行操作的程序,要求本程序要保证用户的信息的安全性,如输入密码时要用字符覆盖,输入密码有上限,减少可能存在的程序漏洞。要求此程序满足:1. 正确性和健壮性:即此程序对一切合法的操作都能得出满足规格说明要求的结果,对不合法的操作也要有正确的处理措施,使程序严谨,保证用户的信息和财产安全。2.可读性:程序要尽量简明扼要,便于相关人员调试和修改。3.时空效率:要求本程序执行时间尽可能短,占

6、用的储存空间尽可能的少。5实验名称 ATM 机仿真程序 实验场所 软件工程 1 号机房3.2 概要设计:程序的流程图如下所示:否是否是开户开始界面开户失败帐户操作菜单查询存款取款修改密码对原帐户操作输入卡号输入密码操作成功开户成功出口 1开始界面出口2选择语言63.3 详细设计:本程序是 ATM 仿真程序,对于用户的所有信息是通过一个线性表 COUNT 来存储的,本程序总共设计了 main menu(int)、languagemen() 、query(float,int)、withdraw(float,int)、kaihu(psqlist p),changepw(psqlist,int,int

7、),caozuo(psqlist)等子函数来共同完成的,具体分析如下:在主函数 main() 里分成了四个模块。模块一是完成事先设置了 10 个用户的所有信息。模块2、3、4 在一个开始界面(通过一个 switch 语句来完成) ,分别为开户、对原有用户操作和退出整个程序模块是完成对新用户的操作,通过函数 kaihu( )来完成,给新用户注册一个卡号,接下来就是让用户设置密码,要输入两次,具体要用到 getchar(),和 putchar()等函数,当两次输入不一样时提示用户重新输入,用户完成后会退出 kaihu( )函数,返回开始界面。模块 3 是对用户账户操作的一个函数,首先要输入卡号和密

8、码,当不正确时返回上一界面,当输入正确时设置了两种语言选择,选择语言后进入操作菜单函数 mainmenu,可划分为五个小模块;模块一是查询账户余额函数 query;模块二是存款函数 deposit;模块三是取款函数withdraw;模块四是密码修改函数 changepw;模块五是返回上一界面函数 exit() 。本程序通过各个模块的组合连接共同在一起完成 ATM 仿真程序的开户、查询、存款、取款、修改密码等有关操作。3.4 程序源代码清单:#include“stdio.h“#include“string.h“#include“stdlib.h“#include“conio.h“#include

9、“ctype.h“void mainmenu(int); /-账户菜单int languagemenu(); /-语言选择void query(float,int); /-查询当前余额float deposit(float,int);/-存钱float withdraw(float,int);/-取钱int true1(int a); /密码确认函数 typedef struct float money;int key6;datatype;typedef struct /储存用户信息的线性表datatype data50;int length;sqlist,*psqlist;psqlist i

10、nit_sqlist() /线性表的初始化 psqlist count;count=(psqlist)malloc(sizeof(sqlist);if(count)count-length=0;return count;7psqlist kaihu(psqlist p)/-开户函数 system(“cls“);psqlist pl=p;int i,j;pl-length=pl-length+1;while(1) char a7=0,b7=0;printf(“您的卡号是 :%dn“,pl-length);printf(“请设置您的账号密码“);for(i=0;idatapl-length.key

11、j=(int)bj-48;printf(“n“);printf(“=n“); printf(“密码设置成功 n“); printf(“请输入您要预存的金额 :“);scanf(“%f“,printf(“恭喜您开户成功 n“);break;printf(“=n“); else printf(“n“);printf(“=n“);printf(“两次密码输入不一致 n“); printf(“按任意键键后从新输入 n“); printf(“=n“); getch(); system(“cls“);printf(“按任意键继续 n“); getch();8system(“cls“);return pl;

12、psqlist changepw(psqlist q,int k,int islan)/-密码修改函数 psqlist pa=q;int i;char b7=0, p7=0;if(islan) while(1)system(“cls“);printf(“=n“);printf(“Please enter your new password:“);for(i=0;idatak.keyi=(int)pi-48;printf(“Congratulations on your password successfully changedn“);printf(“=n“);break;else printf

13、(“The two codes are not the samen“);printf(“Press any key to boot from the new inputn“); printf(“=n“); getch(); else while(1)system(“cls“);9printf(“=n“);printf(“请输入您的新密码 :“);for(i=0;idatak.keyi=(int)pi-48;printf(“恭喜您密码修改成功 n“);printf(“=n“);break;else printf(“两次密码输入不一样n“);printf(“按任意键后从新输入 n“); print

14、f(“=n“); getch(); printf(“按任意键继续 n“);getch(); return pa; int caozuo(psqlist count) /对账户的操作菜单函数 system(“cls“);int exit=0,k,m,language;char in;printf(“请输入卡号 :“);scanf(“%d“,if (klength) m=true1(count-datak.key); if(m)10 printf(“n“);printf(“按任意键确定密码 :“);getch();language=languagemenu();while(!exit) mainm

15、enu(language);in=getch();switch(in)case 1:query(count-datak.money,language);break;case 2:count-datak.money=deposit(count-datak.money,language);break;case 3:count-datak.money=withdraw(count-datak.money,language);break;case 4:count=changepw(count,k,language);break;case 5:return 0;else printf(“密码输入已达上限

16、“);else printf(“此卡无效“);getch();return 1; int main ()int i,j,y;char on;psqlist count=init_sqlist();for(j=1;jdataj.money=(float)(1000+100*j);/输入用户的最初帐户金额for(i=0;idataj.keyi=j-1;count-length+; int exit1=0;while(!exit1) system(“cls“);printf(“=n“);printf(“1.开户 n“);printf(“2.对原卡进行操作 n“);printf(“3.exit1 n“);printf(“=n“); on=getch();

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

当前位置:首页 > 实用文档 > 调研文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报