程序设计基础课程设计.docx
《程序设计基础课程设计.docx》由会员分享,可在线阅读,更多相关《程序设计基础课程设计.docx(32页珍藏版)》请在冰豆网上搜索。
程序设计基础课程设计
程序设计基础课程设计
ATM自动取款机
院系:
机算计科学技术一系
班级:
师计09-2
******
学好:
200928010232
合作者:
吴梦佳,吴力楠,王立加
指导教师:
***
1概述
1.1研究的背景及意义
ATM自动取款机的开发让人们的生活更方便,更便利,更快捷,ATM自动取款机的利用使得人们取款更方便,更快捷,不用到银行排队等候,浪费太多的时间在“等待”上,人们大多数时间都浪费在等待上,等待公车,等待上车,等待下车,等待上班,等待下班······ATM自动取款机帮助人们有效地利用时间。
ATM自动取款机的占地面积小,因此在很近的地方也可以建立两个取款机,而且不会浪费太多的土地面积。
且取款的操作步骤简单,容易被广大的群众接受,不仅如此,取款的时间仅仅1分钟就可以完成,合理地利用了这个忙碌社会的人们的时间。
1.2设计的任务和需要的知识点
1.2.1所设计的任务及目的
在原来的ATM自动取款机的基础上加上了音乐“东方红”,寓意着东方这个古老的国度越来越强大,经济也会越来越发达。
ATM自动取款机在运行过程中加上声音,使得操作的人在使用该取款机的同时也可以欣赏美妙的音乐。
并在使用完取款机后,会有15只大雁飞过,寓有“雁声远过潇湘去,十二楼中月自明”之意。
1.2.2需要的知识点
(1)加上音乐这一过程中需要我们掌握sound函数的使用,例如sound(262)的意义即是发中音‘1’,因此重要的是需要我们牢记声音频率与音符之间的对照关系。
(2)不仅如此,还需要我们掌握delay函数的运用及其意义,delay(m)使程序暂停m毫秒,用来作为发音的时间停顿,即是节拍。
(3)当该音乐结束时,用函数nosound(),nosound()是专门用来结束声音的函数,该函数关闭计算机的扬声器,使其停止发音。
1.3具体完全的设计内容
在该程序设计中,我组对该程序加上了音乐模块,并在运行程序的最后加上了大雁南飞之景,修改了ATM的版块,将ATM的版块根据对应的模式进行了一定的修改,我们组自己总共编写了56行源代码,
2需要分析
2.1功能需求
①帮助新用户在自动取款机上进行新用户的创建,提高运行效率。
②进行业务办理和查询,包括取款,余额查询,存款项目,修改密码等。
2.2操作方法
2.2.1新用户开户
对于初步使用该取款机的用户来说,进入程序之后,选‘1’,先进行新用户注册,根据提示输入用户名,之后输入密码,并进行密码重复输入,注册成功后可以按任意键返回主菜单。
2.2.2用户登录
输入‘2’进入用户登录,连续输入三次用户名和用户密码,若有错将自动退出程序,三次输入正确后进入工作程序,输入‘1’进入存款程序,输入‘2’进入取款程序,输入‘3’进入余额查询,输入‘4’进行密码修改,输入‘5’便可退出返回主菜单。
进入后根据一步步的提示便可顺利地使程序运行下去。
若要进行多步程序,可在进行晚一步程序后推到该页面在进行选择进行其他程序。
2.2.3退出系统
若要退出该程序直接按‘3’,根据提示确定退出按“y”,若不再退出则可输入“n”返回主菜单。
3总体设计
3.1软件结构设计
该软件的功能有新用户建立、存款、取款、修改密码、余额查询等。
当进入主菜单后根据提示进入下一轮系统,进入下一同样根据提示输入数字进入用户需停药进入的系统程序中,进行用户所需的步骤。
使用时,程序中都会对所有的下一步进行提示,能使得用户使用起来流畅,而且在使用时只需要输入数字,因此该软件很容易被操纵、掌握。
该软件的主要功能即是一些简单的开户、存取金额和修改密码。
3.2数据结构设计
程序使用了fr【】数组和tim【】数组,对音乐的音符和节拍进行了有效地“定义”,使得程序的编译更简洁,不会形成累赘或长篇大论。
4详细设计
在该程序设计中,我们组主要是负责添加一段音乐和在结束时加上一段动画,加音乐时用一维数组,定义了数组fr和tim并对他们进行了赋值,使得在使用这两个数组中的数据时更加方便,快捷;在使其发音的过程中使用了一个for循环语句,使得该程序更简单,明了。
再编译最后的动画时,运用了for语句的嵌套,使得编译的动画程序更加简单,不会形成长篇大论,编译简单,也使得程序不啰嗦。
在编译动画程序时也使用了setcolor()函数,用来设置前景的颜色,用不同数字表示不同的颜色setcolor(j+1)使得每一个大雁出现的颜色都各不相同。
5程序调试与测试
对音乐的编译在开始的时候编译出来的音乐只能在某一个时段才能进行,经过一定的调试后,即将delay语句和nosound语句都调到cartoon语句后,使得整个程序都能发音。
6总结
在对自动取款机的修改的目的是为了使这种取款机不再是人们心目中那种“庄严”的东西,而是一件能够带给人们“平淡”的感觉的东西,该程序进行修改后,将取款机这样“庄严”的物体,改变的既“庄严”又不失“亲切”,音乐和动漫的运用使得自动取款机的更“平淡”,将世界的每一个角落都变成一个有音乐,有美的世界······
7结束语
在设计过程中,第一次编译如此长的程序,在加上音乐和动画的时候,刚开始不明白应该将这两个程序加在什么地方,如何加上这两个程序,后来经过与书上的例题进行对比,和同学们之间的互相帮助明白了音乐的程序不应该直接使用例题中的全音乐的程序,将音乐函数分开使用才能使音乐在用户使用的整个过程中都有音乐可放,而最后的动画设计中运用函数引用,可以使得ATM自动取款机的编译程序过程的主函数简便。
我觉得在编译程序时,使用引用函数,循环语句以及数组的使用都可以大大减少主函数的累赘,也可以使得主函数简单明了,编译的整个函数看起来有条不紊。
该程序能够很好的完成完全是同学们齐心协力的结果,很感谢同学们相互之间的配合和老师的指导
8程序清单
#include
#include
#include
#include
#include
#include
#include
structuser
{
charname[20];
charpsw[7];
intzh;
floatmoney;
}user,users[100];
intno,l=0;//记录用户总数l记录用户登录编号
FILE*fp;
voidwelcome_jm()//显示欢迎界面0
{
system("cls");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇理◇◇◇财◇◇◇通◇◇◇天◇◇◇下◇◇◇\n");
printf("\t◇◇◇●●●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●●●●●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇自◇◇◇◇◆欢◇迎◇您◇的◇使◇用◆◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●●●●●◇◇动◇◇◇★★★★★★★★★★★★★★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★您是第一次使用本软件★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇柜◇◇◇★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★请您按任意键开始创建用户★◇◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇★★◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇员◇◇◇★★★★★★★★★★★★★★★◇◇◇◇\n");
printf("\t◇◇●●◇●●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇●◇●◇◇◇◇◇◇◇◇◇◇◇◇◇◇版权所有◇违者必究◇◇\n");
printf("\t◇◇●◇◇◇●◇◇机◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇版本1.0◇◇◇◇◇◇◇作者Happy小屋◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n\a");
printf("\n\n");
}
voidzhu_jm()//显示主界面函数
{
system("cls");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇理◇◇◇财◇◇◇通◇◇◇天◇◇◇下◇◇◇\n");
printf("\t◇◇◇●●●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●●●●●◇◇◇◇◇◇◇◇主〓〓〓〓菜〓〓〓〓单◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇自◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇◇◇◇◇◆服◇务◇项◇目◆◇◇◇◇◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●●●●●◇◇动◇◇◇★★★★★★★★★★★★★★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★1新用户开户★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇柜◇◇◇★★◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇◇◇★2用户登陆★◇◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇★★◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇员◇◇◇★3退出系统★◇◇◇◇\n");
printf("\t◇◇●●◇●●◇◇◇◇◇◇★★◇◇◇◇\n");
printf("\t◇◇●◇●◇●◇◇◇◇◇◇★★★★★★★★★★★★★★★◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇机◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇版本1.0◇◇◇◇◇◇作者Happy小屋◇◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n\a");
printf("\n\n");
printf("\t\t\t★请您选择服务项目(1-3)?
");
}
voidkaihu_jm()//显示用户开户界面函数
{
system("cls");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆理◇财◇通◇天◇下◆\n");
printf("\t◆◆\n");
printf("\t◆●欢迎新客户开户●◆\n");
printf("\t◆1使用方法:
◆\n");
printf("\t◆◆\n");
printf("\t◆您需要输入用户名和一个6位密码并确认密码,◆\n");
printf("\t◆这样系统就分配给您了一个帐号。
◆\n");
printf("\t◆◆\n");
printf("\t◆2注意事项:
◆\n");
printf("\t◆◆\n");
printf("\t◆开户成功后您必须牢记帐号和密码,◆\n");
printf("\t◆只有输入正确了帐号和密码,◆\n");
printf("\t◆系统才能受理您要使用的业务。
◆\n");
printf("\t◆◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
printf("\t\t\t★请您进行开户★\n");
}
voidkhcg_jm()//显示开户成功界面函数
{
system("cls");
printf("\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆理◇财◇通◇天◇下◆\n");
printf("\t◆◆\n");
printf("\t◆●恭喜您●◆\n");
printf("\t◆◆\n");
printf("\t◆◆\n");
printf("\t◆★您已经开户成功★◆\n");
printf("\t◆◆\n");
printf("\t◆**请牢记您的信息**◆\n");
printf("\t◆用户名:
%4d◆\n",user.name);
printf("\t◆帐号:
%4d密码:
%6d◆\n",user.zh,user.psw);
printf("\t◆帐户余额是:
%.2f(元)◆\n",user.money);
printf("\t◆◆\n");
printf("\t◆别忘了,只有输入正确了帐号和密码,◆\n");
printf("\t◆系统才能受理您要使用的业务。
◆\n");
printf("\t◆◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
printf("\t\t\t按任意键返回主菜单!
\n");
/*这里用到了user.name,user.zh,user.psw,user.money这几个变量*/
}
voiddlyz_jm()//显示登陆验证界面函数
{
system("cls");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆理◇财◇通◇天◇下◆\n");
printf("\t◆◆\n");
printf("\t◆!
登陆验证!
◆\n");
printf("\t◆◆\n");
printf("\t◆您必须输入正确的帐号和密码,◆\n");
printf("\t◆系统才能受理您要使用的业务。
◆\n");
printf("\t◆您一共有三次机会◆\n");
printf("\t◆三次如果都不正确,系统会自动退出◆\n");
printf("\t◆请您务必认真输入,◆\n");
printf("\t◆以免造成不必要的麻烦!
◆\n");
printf("\t◆◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
printf("\t\t您现在可以输入了,请谨慎!
\n");
}
voidywxz_jm()//显示登陆成功后业务选择界面函数
{
system("cls");
printf("\n\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇理◇◇◇财◇◇◇通◇◇◇天◇◇◇下◇◇\n");
printf("\t◇◇◇●●●◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇◇◇业〓〓务〓〓菜〓〓单◇◇◇◇\n");
printf("\t◇◇●●●●●◇◇◇◇╭★★★★★★★★★★★★★╮◇◇\n");
printf("\t◇◇●◇◇◇●◇◇服◇★╭━1存入款项━╮★◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇★︾︾★◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇★┇┇★◇◇\n");
printf("\t◇◇●●●●●◇◇◇◇★︾2取出款项︾★◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇务◇★┇┇★◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇★︾︾★◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇★┇3余额查询┇★◇◇\n");
printf("\t◇◇◇◇●◇◇◇◇◇◇★︾︾★◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇项◇★┇┇★◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇★︾4修改密码︾★◇◇\n");
printf("\t◇◇●●◇●●◇◇◇◇★┇┇★◇◇\n");
printf("\t◇◇●◇●◇●◇◇◇◇★︾︾★◇◇\n");
printf("\t◇◇●◇◇◇●◇◇目◇★┇5返回主菜单┇★◇◇\n");
printf("\t◇◇●◇◇◇●◇◇◇◇╰★★★★★★★★★★★★★╯◇◇\n");
printf("\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n\a");
printf("\n");
printf("\t\t\t★请您选择服务业务(1-5)?
");
}
voidckyw_jm()//显示存款业务界面函数
{
system("cls");
printf("\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆╭━理◇财◇通◇天◇下━╮◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇【业务1】┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇〓存入款项〓┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇输入您要存入的金额┇◆\n");
printf("\t◆︾即完成操作!
︾◆\n");
printf("\t◆┇┇◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
printf("\t\t确定要继续存钱请按任意键,返回请按n:
");
}
voidqkyw_jm()//显示取款业务界面函数
{
system("cls");
printf("\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆╭━理◇财◇通◇天◇下━╮◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇【业务2】┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇〓取出款项〓┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇输入您要取出的金额┇◆\n");
printf("\t◆︾即完成操作!
︾◆\n");
printf("\t◆┇┇◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
printf("\t\t确定要继续取钱请按任意键,返回请按n:
");
}
voidyecx_jm()//显示余额查询业务界面函数
{
system("cls");
printf("\n");
printf("\t↓╭◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆╮\n");
printf("\t◆╭━理◇财◇通◇天◇下━╮◆↓\n");
printf("\t↓◆︾︾◆\n");
printf("\t◆┇【业务3】┇◆↓\n");
printf("\t↓◆︾︾◆\n");
printf("\t◆┇〓余额查询〓┇◆↓\n");
printf("\t↓◆︾︾◆\n");
printf("\t◆┇系统会自动显示您的余额┇◆↓\n");
printf("\t↓◆︾︾◆\n");
printf("\t╰◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆╯↓\n\a");
printf("\n");
}
voidrePassword_jm()//显示修改密码业务界面函数
{
system("cls");
printf("\n\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
printf("\t◆╭━理◇财◇通◇天◇下━╮◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇【业务4】┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇〓修改密码〓┇◆\n");
printf("\t◆︾︾◆\n");
printf("\t◆┇需要两次输入新密码┇◆\n");
printf("\t◆︾只有两次一样系统才能修改︾◆\n");
printf("\t◆┇请您认真输入以免造成不必要的麻烦┇◆\n");
printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n\a");
printf("\n");
}
voidexit_jm()//退出系统的界面
{
printf("\n");
printf("\t\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("\t\t↗︽︽︽︽︽︽︽︽↖\n");
printf("\t\t↗◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇↖\n");
printf("\t\t↗◇◇◇◇●◇◇◇◇◇●●●●●◇◇◇◇●●●◇◇◇↖\n");
printf("\t\t↗◇◇◇●●●◇◇◇◇◇◇●◇◇◇◇◇●◇●◇●◇◇↖\n");
prin