C语言-ATM机模拟操作
程序实现功能点:
a.查询:查询帐户的存款余额。按任意键返回主菜单;
b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过
帐户余额,操作后帐户余额应相应减少,之后可返回主菜单;
c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过
20000元,操作后帐户余额应相应增加。之后可返回主菜单;
d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无误后,再输入10
0、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单;
e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放
到帐户信息文件中。之后可返回主菜单;
f.退出:退出系统;
g.帮助:增加趣味性;
h.存款时,可正可负,正表示存款,负表示取款;
i.帐户信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;(在目录下
创建这两个文件)
j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;
k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;
l.有效避免输入存款金额、取款金额为负数等异常情况的出现。
较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。
(2)程序运行截图及说明(每图限50到100字);
●进入程序,menu1可选择登录、注册功能。
●选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否
成功登录。若登录失败,则重新选择。
●选择注册,输入账号密码,写入文件中。
●进入menu2,有五大功能选择,输入对应的序列号进入。
●余额查询功能输出账号所对应的余额。
●取款功能,需要安装要求取出格式化的金额。
●存款功能,选择金额,若超过存款,自动报错。存储成功后,在屏幕
上显示余额并可在txt中看到对应数目的增加。
●修改密码功能,输入当前密码,输入新密码,并进行确认。即修改成
功。
●转账功能,输入对方卡号,核程序核对卡号是否存在,选择金额转
账,对应存款的减少会反映在屏幕的余额上。
●退出功能,任意键退出程序。
●帮助功能,介绍了本程序的相关信息。
(3)采用的主要技术(限150到200字);
答:主要采用模块化管理代码。使用结构体对文本信息进行操作、运用文件操作相关函数如fwrite()、fread()、fgets()、fputs()、fgetc()、fputc()、fopen()、fclose()......
并使用指针操作数值。
附:程序代码
#include
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include
#defineN 3
void enterzhanghao(); //ATM账号输入函数
void inputmima(); //密码输入函数
voidmenu(); //操作界面
void Withdraw(); //取款函数
voiddaly();//延时函数
void yuer(); //余额查询函数
void Desposit(); //存款函数
int quit(); //退出界面函数
voidchange();//密码修改
void read();//文件读取函数
voidwrite(); //文件写入函数
void write2(float h); //流水账函数
void tran_account();//转账函数
void enter();//登录函数
void flesh();//注册函数
void help();//帮助
typedef struct
{
?int num;
int password;
?double accounte;
}atm;
atm ATM[N] = { { 10001, 111111, 10000 }, { 10002, 222222, 20000 }, { 10003,333333,30000 } };
typedefstruct
{
?int year;
intmonth;
?intday;
}riqi;
int k;
int main()
{
?enterzhanghao();
}
//ATM账号输入函数
void enterzhanghao()
{
?read();
?printf("\t\t\t\t\t**************************************\n");
printf("\t\t\t\t\t-> 欢迎使用ATM机模拟操作的程序 <-\n");
?printf("\t\t\t\t\t-> 1、登录 <-\n");
?printf("\t\t\t\t\t-> 2、注册<-\n"); ?printf("\t\t\t\t\t**************************************\n");
printf("请输入对应序号:");
?int k;
scanf("%d", &k);
?switch (k){
?case1:enter();break;
?case2:flesh(); break;
}
}
void enter()
?{
?system("cls");
??int user;
??printf("请输入账号:");
??scanf("%d", &user);
?if(user== 0)
{
?printf("\t\t\t\t\t* 账号错误 *\t\t\t\t\t\n");
?enterzhanghao();
?}
?else if (user!= (ATM[k].num))
??{
??for (k = 1; k < N; k++)
??{
??if(user == (ATM[k].num))
??inputmima();
?}
?system("cls");
??printf("\t\t\t\t\t* 账户不存在,请从新输入 *\t\t\t\t\t\n"); ??enterzhanghao();
?}
??else
?inputmima();
}
?voidflesh()
{
system("cls");
??printf("\t\t\t\t\t请输入账号:");
scanf("%f", &ATM[k].num);
printf("\t\t\t\t\t请输入密码:");
?scanf("%f", &ATM[k].password);
??write();
?}
//密码输入函数
voidinputmima()
{
intcode;
?int temp = 3;
?read();
?system("cls");
?printf("\t\t\t\t\t*请输入密码 *\t\t\t\t\n");
?scanf("%d", &code);
?while(code != ATM[k].password)
?{
??temp--;
??system("cls");
??printf("\t\t\t\t\t* 密码错误,请重新输入 *\t\t\t\t\n");
?printf("\t\t\t\t\t* 您还有: ");
?printf("%d", temp);
??printf("次机会 *\n");
?scanf("%d", &code);
?if(temp ==1)
?{
?system("cls");
?printf("\t\t\t\t\t* 您已经 3 次输入密码错误 *\t\t\t\t\n"); ???printf("\t\t\t\t\t* 系统将退出操作*\t\t\t\t\n"); ??daly();
??enterzhanghao();
}
?}
menu();
}
//操作界面
voidmenu()
{
system("cls");
int h = 1, x;
while (h)
{
??printf("\t\t\t\t\t----------------------\n");
printf("\n");
printf("\t\t\t\t\t1、\t查询余额\n ");
?printf("\t\t\t\t\t2、\t取款\n");
printf("\t\t\t\t\t3、\t存款\n ");
?printf("\t\t\t\t\t4、\t修改密码\n ");
printf("\t\t\t\t\t5、\t转账 \n");
printf("\t\t\t\t\t6、\t退出登录\n ");
?printf("\t\t\t\t\t7、\t帮助 \n ");
?printf("\n");
?printf("\t\t\t\t\t----------------------\n\n ");
?scanf("%d", &x);
switch(x)
?{
?case1:yuer(); break;
case 2:Withdraw(); break;
?case 3:Desposit(); break;
case 4:change();break;
??case5:tran_account();break;
case 6:quit(); h = quit(); break;
?case7:help(); break;
}
}
}
//取款函数
void Withdraw()
{
system("cls");
float i;
?inty;
printf("\t\t\t\t\t请输入你要取款的金额:\n");
printf("\t\t\t\t\t---------------------- \n"); ?printf("\n");
?printf("\t\t\t\t\t1、\t100\n");
?printf("\t\t\t\t\t2、\t200\n ");
?printf("\t\t\t\t\t3、\t500\n ");
?printf("\t\t\t\t\t4、\t1000\n ");
printf("\t\t\t\t\t5、\t2000\n ");
printf("\t\t\t\t\t6、\t其他金额\n ");
printf("\n");
?printf("\t\t\t\t\t---------------------- \n");
printf("\t\t\t\t\t\t\t请输入对应序列号:\n ");
scanf("%d",&y);
?system("cls");
switch (y)
{
?case 1:i = 100; break;
case 2:i = 200;break;
case3:i = 500;break;
?case 4:i = 1000; break;
case 5:i = 2000; break;
case6:scanf("%f", &i); break;
default:
?printf("\t\t\t\t\t請重新輸入");
?Withdraw();
break;
}
if (i <= ATM[k].accounte&&i != 0)
{
??ATM[k].accounte = ATM[k].accounte - i;
?printf("\t\t\t\t\t取款成功!你的余额为:");
printf("%f", ATM[k].accounte);
?i = i*(-1);
?write2(i);
?}
else
??printf("\t\t\t\t\t余额不足!");
?write();
}
//延时函数
void daly()
{
?long inth;
int k;
?for (h =600000; h>0; h--)
?{
??for(k = 300; k>0; k--);
}
}
//余额查询函数
void yuer()
{
?system("cls");
printf("\t\t\t\t\t账号%4d,余额:%.2lf\n\n\n\n\n",ATM[k].num,ATM[k].a ccounte);
}
//存款函数
void Desposit()
{
?system("cls");
int i;
printf("\t\t\t\t\t请将钞票整齐放入!!\n\n");
?printf("\t\t\t\t\t请输入你要存的金额:");
scanf("%d", &i);
?if(i % 100 ==0)
printf("\t\t\t\t\t存款成功!");
?else
{
printf("\t\t\t\t\t数额必须是100的整数倍!请重新放入!!");
daly();
?Desposit();
?}
?ATM[k].accounte =i+ ATM[k].accounte;
?printf("%f", ATM[k].accounte);
write();
write2(i);
}
//退出函数
int quit()
{
system("cls");
int i;
printf("\t\t\t\t\t谢谢你的使用!!!\n\n");
i = 0;
returni;
}
//密码修改
void change()
{
daly();
?system("cls");
?intpassword1, password2, password3;
?printf("\t\t\t\t\t请输入旧密码:");
?scanf("%d", &password1);
printf("\n");
if(password1 == ATM[k].password)
{
loop:printf("\t\t\t\t\t请输入新的密码:");
??scanf("%d", &password2);
??printf("\n");
printf("\t\t\t\t\t请再次输入新的密码:");
?scanf("%d", &password3);
??if (password2 == password3)
??{
?ATM[k].password = password2;
??printf("\t\t\t\t\t\n密码修改成功!\n");
}
?else
??{
?printf("\t\t\t\t\t\n密码不一致!\n"); ?printf("\t\t\t\t\t请重新输入!!\n");
??goto loop;
?}
?}
?else
{
??printf("\t\t\t\t\t输入错误\n");
?change();
?}
write();
}
//文件读取函数
voidread()
{
?int i;
FILE *fp;
fp = fopen("accounts.txt", "r");
if (fp ==NULL)
?{
?printf("\t\t\t\t\t打开文件失败\n");
??return;
?}
?for (i = 0; i { ??fscanf(fp,"%d", &(ATM[i].num)); fscanf(fp, "%d", &(ATM[i].password)); fscanf(fp, "%lf\n", &(ATM[i].accounte)); ?} fclose(fp); } //accounts文件写入函数 void write() { ?int i; ?FILE *fp; fp = fopen("accounts.txt","w"); ?if(fp ==NULL) ?{ printf("\t\t\t\t\t打开文件失败\n"); ?return; ?} for (i = 0; i<N; i++) { ?fprintf(fp, "%-8d", ATM[i].num); ?fprintf(fp, "%-8d", ATM[i].password); fprintf(fp, "%lf\n",ATM[i].accounte); } fclose(fp); //records文件写入函数 void write2(float h) { ?time_t t; ?struct tm*lt; time(&t);//获取Unix时间戳。 ?lt = localtime(&t);//转为时间结构。 FILE *fp; ?fp = fopen("records.txt", "a"); ?if(fp == NULL) ?{ ?printf("\t\t\t\t\t打开文件失败\n"); return; ?} ?else ?{ ??fprintf(fp,"%-5d", lt->tm_year + 1900); ?fprintf(fp, "%-3d", lt->tm_mon); ??fprintf(fp,"%-3d", lt->tm_mday); ?fprintf(fp, "%-5lf\n", h); ?} ?fclose(fp); } //转账函数 void tran_account() { ?int other_num[10]; inti, c, q, tran;??//c用来判断转账是否继续,q用来判断用户行为,tran用来存储转账金额 system("CLS"); ?printf("\n\t\t\t\t\t\t\t\t0.返回菜单"); ?printf("\n\n\n\n\n\n\t\t\t请输要对方的账号: "); ?scanf("%d", other_num[10]);????//输入对方账号 if (other_num[10] == ATM[k].num) ??//判断是否为自身账号 ?{ system("CLS"); ??printf("\n\n\n\n\n\n\n\n \t\t对不起,不能给自己转账,请重新输入账号!\n"); ?printf("\n\n\n按任意键返回!"); _getch(); ?system("CLS"); ?tran_account();?????//递归调用 ?} else ?while (1) { ??for(i = 0; i < N; i++) ?{ ??if (other_num[10] == ATM[i].num) //匹配用户 ??{ ??while (1) ???{ ??system("CLS"); ????printf("\t\t\t请输入对方账号:%s", ATM[i].num);?//显示对方信息 ???printf("\n\n\n\n\n\t\t0.返回菜单\t\t\t9.确认"); ???scanf("%d", &c);//输入9确认 ???if (c == '9') ???{ ???system("CLS"); ??do ??{ ?printf("\n\t\t\t\t\t\t\t\t0.返回菜单"); ????printf("\n\n\n\n\n\n\t\t请输入转账金额(整百数):"); ???scanf("%d", &q);getchar(); ??if(q) ?//q为非0时进入内层条件语句 ????{ ??????tran = q; ???if (tran >= 100 && tran % 100 == 0)?//判断是否为整百???????//数并且大于100的数????{ ??????if(tran <= ATM[k].accounte)//取款数是否不超过余额 ??????{ ???????if (tran <= 3000) //判断是否超过3000 ????{ ????system("CLS"); ?????ATM[k].accounte -= tran; ????ATM[k].accounte += tran; ???????menu(); //调用save_info,存储信息 ????????printf("\n\n\n\n\n\n\t\t\t 交易成功!\n"); ????????printf("\n\n\n\n\n\t\t0.返回菜单\t\t\t9.继续转账"); ???? c = _getch(); ????????if(c == '9')?//输入9就行转账 ???{ ????system("CLS"); ??????} ??????else ?????if (c=='0') //c为0返回菜单 ??????{ ????system("CLS"); ?????menu(); ??} ????else ????{ ???printf("输入错误,请重新输入!\n"); ???system("CLS"); ?????} ?????} ????????else ??????{ ???????system("CLS"); ???????printf("\n\n\n\n\n\n\t\t对不起,一次最多能转账3000元,请重新输入!"); ?????printf("\n\n\n\n\n按任意键返回!\n"); ????????_getch(); ???????system("CLS"); ???} ???} ????else ??{ ????system("CLS"); ??????printf("\n\n\n\n\n\n\t\t\t您的余额不足,请重新输入!"); ?????printf("\n\n\n\n\n按任意键返回!\n"); ?????_getch(); ????system("CLS"); ????} ?????} ????else ????{ ????system("CLS"); ?????printf("\n\n\n\n\n\n\t\t\t请输入正确的金额!请重新输入!"); ????printf("\n\n\n\n\n按任意键返回!\n"); ??????_getch(); ??????system("CLS"); ???} ???} ???else ??{ ??system("CLS"); ??????menu(); ???} ???}while(1); } ?else ???if(c == '0') ????menu(); } ??} ?} { ?system("CLS"); printf("\n\n\n\n\n\n\t\t\t用户不存在!请重新输入!"); ?printf("\n\n\n\n\n按任意键返回!\n"); ?_getch(); system("CLS"); ?tran_account(); //递归调用 } } } //帮助 void help() { ?system("CLS"); printf("\t\t\t\t\t**************************************\n"); printf("\t\t\t\t\t->码字不易,我可以在你心里跑一圈吗 <-\n"); ?printf("\t\t\t\t\t-> 1、可以 <-\n"); printf("\t\t\t\t\t-> 2、当然可以<-\n"); printf("\t\t\t\t\t**************************************\n"); ?printf("\t\t\t\t\t-> 你要选哪个? <-\n"); int k; ?scanf("%d", &k); switch(k){ case 1:{printf("蟹蟹你~~~!\n"); _getch(); menu(); ?}; break; ?case 2:{printf("等下我,第十圈了!\3n"); _getch(); menu(); }break; } } 一、课题要求 1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录A TM柜员机系统。 2、查询余额:初始余额为10000元。 3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 4、ATM存款:不能出现负存款。 5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确, 新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 二、代码 #include "stdafx.h" #include "stdio.h" #include "windows.h" #include "stdlib.h" #include "conio.h" void gotoxy(int x,int y); //光标位置函数 void enter_ATM(); //账号输入函数 void input_code(); //密码输入函数 void caozuo(); //基本操作界面 void qukuan(); //取款函数 void success(); //操作成功函数 void delay(); //延时函数 void yu_e(); //余额查询函数 void cunkuan(); //存款函数 void panduan(long int z); //判断取款是否合法函数 void exit(); //退出界面函数 void mima(); //密码修改 void zhuangyi(); long int CODE=123456,YU_E=10000; //=========================主函数========================// main() { enter_ATM(); caozuo(); } //======================================================// //==================================柜台机账号输入函数=======================================// 1 设计目的 机房机位预定系统 2 任务概述 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 ......... 3 模块划分 4 主要函数说明及其N-S图 1.主函数: int main() { Menu(); /*当前状态函数*/ } void Menu() /*主界面*/ { int n,w; do { puts("\t\t****************机房机位预约系统*******************\n"); puts("\t\t*************************菜单 ***************************\n"); puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/ puts("\t\t\t 2.预定空机位"); /*预定空机位*/ puts("\t\t\t 3.取消预订"); /*取消预订*/ puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/ puts("\t\t\t 5.退出"); /*退出*/ puts("\t\t********************************************************\n"); printf("选择菜单号(1-5):"); scanf("%d",&n); if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break; case 2:Book();break; case 3:Cancel();break; case 4:SearchWaiting();break; case 5:exit(0);break; } getch(); } 2.机位查询: void Situation() { int time; printf("输在 (8-20)范围内的时间:"); scanf("%d",&time); if(time<8||time>20) {printf("\t时间输入错误!\n"); printf("输入在 (8-20)范围内的时间:"); scanf("%d",&time); } detail(time); /*函数调用*/ getchar(); Menu();} 3.机位预定: 课程设计报告 课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计 姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级: 目录 1.课程设计内容.................................................. 2.课程设计要求.................................................. 3.可行性研究................................................... 4.需求分析..................................................... 5.概要设计...................................................... 5.1 功能模块图............................................... 5.2 功能模块描述............................................. 5.3数据结构 ................................................. 6.详细设计...................................................... 6.1 功能流程图............................................... 6.2 重点设计................................................. 7.测试与调试.................................................... 8.总结.......................................................... 8.1 心得体会.................................................. 8.2 不足与改进................................................ 9.参考文献...................................................... 信息科学与工程学院《数据结构》 课程设计报告 课程设计名称:ATM的设计与实现 专业班级: 学生姓名: 学号:201616010107 指导教师: 课程设计时间:2016-2017学年第二学期 计算机科学与技术专业课程设计任务书 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页 目录 1 需求分析 (1) 1.1存款 (1) 1.2取款 (1) 1.3查看流水账 (1) 1.4排序 (1) 1.5修改密码 (2) 1.6查看ATM使用情况 (2) 1.7录入信息 (2) 1.8恢复限额 (2) 2 概要设计 (3) 2.1数据类型的定义 (3) 2.2功能模块结构图 (4) 3 运行环境 (6) 4 开发工具和编程语言 (7) 5 详细设计 (8) 5.1 主函数 (8) 5.2 录入函数 (9) 5.3加载和存储函数 (9) 5.4 输出流水账函数 (10) 5.5 查看ATM使用情况函数 (10) 6 程序编码 (11) 7 运行结果 (14) 8 心得体会 (15) 9 参考文献 (16) 1需求分析 ATM自助机——便于储户存钱、取钱。 按功能分为两大系统:个人用户系统和银行后台系统; 个人用户系统————登录(输入正确的账号或密码才能进入)、存款、取款、查看流水账(查看用户最近存取款情况)、排序(此为超级用户功能,可以查看所有人的余额)、修改密码(修改个人登录密码); 银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息和录入atm 信息)、恢复限额(每天6点恢复所有人的取款上限)。 1.1存款 输入金额,存入ATM,当前AMT以及自己的余额会增加并且自动生成流水账。 1.2取款 输入取款金额,判断它是否小于ATM总金额并且小于当天的限额,当前的ATM金额减少,自己的余额和限额也会减少。 1.3查看流水账 输出自己近段时间内的所有操作,发生额,以及时间。 1.4排序 此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。 C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号 目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献 一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。 #include for(int j=0;j<10;j++) { if(st[j].zh==zh && strcmp(st[j].mm,mm)==0) { flag=true; printf("找到了"); f=j; break; } } } else if (i==4) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入存款金额"); int je; scanf("%d",&je); st[f].je=st[f].je+je; printf("存款成功"); } } else if (i==3) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入取款金额"); int je; scanf("%d",&je); if (je>st[f].je) { printf("余额不足"); } else { st[f].je=st[f].je-je; C语言-ATM机模拟操作 程序实现功能点: a.查询:查询帐户的存款余额。按任意键返回主菜单; b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取 款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单; c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存 款金额不超过20000元,操作后帐户余额应相应增加。之后可返回主菜单; d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无 误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码 取代旧密码,并存放到帐户信息文件中。之后可返回主菜单; f.退出:退出系统; g.帮助:增加趣味性; h.存款时,可正可负,正表示存款,负表示取款; i.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这两 个文件) j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。 较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); 进入程序,menu1可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。 1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table(); void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include 一、实验目的 通过设计一个ATM机模拟操作的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。 二、实验要求 要求每人独立完成设计,编写一个ATM机模拟操作程序。提交实验报告、源程序、程序运行截图。 1.程序具有以下功能: 1)登录系统: 输入卡号(16位)、密码(6位),只有卡号、密码同时正确(帐户信息存放在文件中)才能进入系统; 2)操作功能: ●查询:查询帐户的存款余额。按任意键返回主菜单; ●修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到 帐户信息文件中。之后可返回主菜单; ●取款:输入50或100的倍数模拟为取款金额,请注意:取款金额不得超过帐户余额,操作后 帐户余额应相应减少。之后可返回主菜单; ●存款:输入50或100的倍数模拟为存款金额,现假设存款金额不得超过20000元,操作后 帐户余额应相应增加。之后可返回主菜单; ●转帐:先输入一个帐户号(已保存在帐户信息文件中),然后显示一部分用户名(如:张*山), 储户确认无误后,再输入50或100的倍数模拟为转帐金额,请注意:转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; ●退出:退出系统。 2.定义如下结构体类型: ●“日期”结构体Date:成员有:year(年)、month(月)、day(日); ●“帐户”结构体Account:成员有:no(帐户号)、name(姓名)、balance(余额) ●“存取款记录”结构体Record,:成员有:no(帐户号)、date(日期)、number(数量,可正可负, 正表示存款,负表示取款) 实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图: 1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数 C语言课程设计A T M机模拟操作附源码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】 C语言-ATM机模拟操作 程序实现功能点: a.查询:查询帐户的存款余额。按任意键返回主菜单; b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取 款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单; c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存 款金额不超过20000元,操作后帐户余额应相应增加。之后可返回主菜单; d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无 误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码 取代旧密码,并存放到帐户信息文件中。之后可返回主菜单; f.退出:退出系统; g.帮助:增加趣味性; h.存款时,可正可负,正表示存款,负表示取款; i.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这 两个文件) j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。 较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); 进入程序,menu1可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。 C程序设计课程设计 题目:学生选课系统专业班级:通信工程1班姓名: 学号: 指导教师: 成绩: 摘要 学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决策者、管理者管理、查看课程来说都有至关重要,所以学生选课管理系统应该能够为广大学、师生提供充足的信息和快捷的课程选择过程,有助于学生选好每一门课程,此系统系统选课方便、快捷,用简单的界面来展示学生的选课信息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极大的提高对学生信息管理的效率。利用C语言开发,实现了简单的学生课程信息的录入、修改、查询、删除等操作,并且能够利用文件系统长久的保留原始数据。 目录 一、需求分析 (1) 二、总体设计 (1) 三、详细设计 (2) 1、数据定义...................................................... 错误!未定义书签。 2、算法流程图 (2) 四、编码 (6) 五、调试 (7) 六、设计总结 (10) 致谢 (11) 参考文献 (12) 附录 (13) 一、需求分析 语言文字描述系统要做什么 数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。 二、总体设计 系统由哪几个功能模块构成,给出功能模块图。C 中模块化的工具是函数 根据上面的需求分析,可以将这个系统的设计分为如下七大模块: 选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。 菜单选择模块 录入学生信息 学生选课 系统信息查看及储存 退出系统 完成选择模块 学生信息 管 理 录入课程信息 课程 管理 程设计报告课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级: 目录 1. 课程设计内容....................... 2. 课程设计要求....................... 3.可行性研究........................ 4.需求分析......................... 5. ...................................................................... 概要设计. 5.1 功能模块图 ..................... 5.2 功能模块描述 ..................... 5.3 数据结构 ...................... 6. ...................................................................... 详细设计. 6.1 功能流程图 ..................... 6.2 重点设计 ...................... 7. 测试与调试........................ 8. 总结. ....................................................... 8.1 心得体会 ....................... 8.2 不足与改进 ...................... 9. 参考文献. ................................................. 1. 课程设计内容 仲恺农业工程学院工程实训报告 ATM取款机 课程名称C语言程序设计工程实训 姓名林少烈 院(系)计算机科学与工程学院 专业班级计算机113班 学号201110214317 指导教师王成 仲恺农业工程学院教务处制 目录 1 需求分析 (1) 2 系统总框图和功能模块说明 (1) 2.1 系统总框图 (1) 2.2 功能模块说明 (1) 3 系统设计 (2) 3.1 主要结构体 (2) 3.2主要功能函数 (2) 3.3 关键函数的流程图 (3) 4 系统调试 (12) 5 总结 (25) 6 源程序清单 (28) 6.1头文件 (28) 6.2主程序 (29) 6.3 解除被冻结用户 (64) 6.4 用户注册 (66) 1 需求分析 所设计的ATM取款机应具备以下功能: ●插入银行卡(用账号输入的方式代替); ●密码的输入; ●用户信息查询; ●用户余额查询; ●取款; ●转账; ●修改密码; ●退卡。 2 系统总框图和功能模块说明 2.1 系统总框图 图1 系统总框图 2.2 功能模块说明 ?输入用户账号模块:在运行时,完成用户账号的输入(代替插卡); ?输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能; ?信息读取功能模块:完成用户信息的读取; ?冻结账号功能模块:当输入密码3次错误时,冻结用户账号: ?查询用户信息模块:完成用户的信息查询(不包括余额查询); ?查询余额功能模块:完成用户余额的查询; ?取款功能模块:完成取款功能模块: ?转账功能模块:完成转职功能; ?修改密码功能模块:完成用户修改密码功能; ?退卡功能模块:完成退卡功能(即:退出程序功能)。 3 系统设计 3.1 主要结构体 用户账号、、密码、余额 struct User //用户数据 { char num[20]; //用户账号 char name[10]; // char password[7]; //密码 float balance; //余额 }; 3.2主要功能函数 void read_info(); //用户信息读取 void input_num(char * num); //输入账号 C语言课程设计题目 选题一(起评分100分) 高考招生录取程序 已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。 假定当年该省的招生计划是:一类本科招生计划为10%;二类本科招生计划为15%;三类本科招生计划为20%;四类高职高专招生计划为25%。 请编写程序,实现以下功能: (1)划定各批次录取分数线,结果可屏幕显示,也可存入文件。 (2)能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件。 (3)确定每名学生的录取情况及录取批次。 (4)考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况; 说明: ①系统程序要有界面 ②存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。 选题二(起评分85分) 《C语言课程设计与学习指导》第4章题目或第5章题目任选其一 成绩评定方式 平时考勤:20% 考试(即程序考核及检查):40% 实习报告:40% 违规违纪处理 出现以下6种情况中的任何一种,整个课程设计的成绩直接认定为不及格: 1.考勤抽查出现3次(含)不在的情况; 2.上机从事玩游戏、看电影等活动被抓住2次(含)的情况; 3.程序检查被认定为抄袭的情况; 4.实习报告被认定抄袭或雷同的情况; 5.不参加考试(即程序考核及检查)的情况 6.不交实习报告的情况。 C语言课程设计报告撰写要求 1 内容要求 整个报告由六个部分构成: ①课设题目 ②题目分析 ③设计思路 ④实现结果 ⑤课设总结 ⑥附录(源代码) 2 篇幅要求 ①-⑤合计不低于8页,⑥不低于8页。 篇幅没有上限要求,但原则上要求不超过25页。 标题字体字号格式:宋体,三号,加黑,单倍行距。 正文字体字号格式:宋体或Times New Roman,五号,单倍行距。 3 撰写要求 严谨出现抄袭。 严谨出现雷同。 报告出现抄袭或雷同的,整个课程设计成绩一律按不及格论处。 4 其它 封面格式附后。 #include void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 void main()//主函数{int j; chushihua();//系统初始化判断是否存在原始数据文件 printf("欢迎使用飞机订票系统\n");//打印出系统主界面 do{printf("============================================================= =================== "); printf(" 1.增加航班信息\n" "\t 2.浏览航班信息\n" "\t\t 3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n" "\t\t\t 4.航班排序(按航班号)\n" "\t\t\t\t 5.订票业务\n" "\to(︶︿︶)o\t\t\t #i n c l u d e 错误!未找到目录项。 C程序课程设计报告 题目车票管理系统 院别数学与计算机学院班级 姓名学号 指导教师邓永江 二○一五年六月 预习报告 一:设计题目 银行存取款管理设计 二:功能要求 ①能够添加和修改以及删除客户文件。(在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。 ②能够输入和查询客户存款取款记录。(在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种)。 ③能够给程序提供运行提示。 三:设计要求 ①、用C 语言实现系统; ②、函数功能要划分好(结构化程序设计); ③、界面友好(良好的人机交互),加必要的注释; ④、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能 运行起来,不能运行的程序是没有价值的。 四:设计目的 ①、通过这次课程设计,使我们更加深入地理解和掌握C 语言基本概念,切身体会用结构化程序设计的工程思想,感受C 语言的魅力。 ②、通过这次课程设计,培养我们独立思考、勇于探索、积极创新、严谨求实、有过必改的工作态度以及较熟的上级操作能力,同时加强我们团结友爱,协作攻关的团队合作意识。 五:设计框架图 void main():在里面写了“功能选择”的SWITCH函数; void kehu();客户资料添加与操作主菜单;void kehu1(struct cou p[],char *re,long *h); 客户资料查询函数; void kehu2(struct cou *p,char *re,long h);客户资料添加函数; void kehu3(struct cou *p,char *re,long h); 客户资料修改函数; void kehu4(struct cou *p,char *re,long h); 客户资料清楚函数; void kehup(struct cou *p,char *re,long *h); 客户资料打印函数; void cunq1(); 存取款办理选择主菜单; void cunq11(struct cou *p,char *re,long h);客户存款资料的键入; void cunq12(struct cou *p,char *re,long h); 客户取款资料的键入; void cunq2();存取款选择查询主菜单; void cunq211(struct cou p[],char *re,long *h);把顾客存款资料从文件读到缓冲 区; void cunq212(struct cou *p,char *re,long *h);打印存款资料; void cunq221(struct cou p[],char *re,long *h);把顾客取款资料从文件读到缓冲 区; void cunq222(struct cou *p,char *re,long *h);打印取款资料; void help(); 使用说明模块。 ㈡变量 ①全局的结构体型数组w(用来存放200多个结构体变量): extern struct cou { long b; char x[20]; long m; c语言课程设计源代码标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N] 学校运动会管理系统问题描述: (1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数; (2) 各项目名次取法有如下几种: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。 (4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。 程序代码: #include<> #include<> #define N 3 #define M 3 #define W 3 char* n_number[3]={"1","院系2","院系3"}; char* m_number[3]={"1","男项2","男项3"}; char* w_number[3]={"女项1","女项2","女项3"}; int size=2; struct student { char num[10]; char name[20]; char xiangmu[20]; int score; char ximing[20]; }stu[100],temp; void input() um,&stu[i].name,&stu[i].xiangmu,&stu[i].score,&stu[i].ximing); iming,n_number[0])==0) iming); iming,n_number[h])==0) for(int s=0;s 高级语言程序设计课程设计题目: 专业计算机类 班级计算机类1102 学生 学号 指导教师_______________ 起止时间2012.2.13——2012.2.17 2012年2月 目录 实验报告 (3) 必做题: (3) 选做题: (8) 题目10 写一个日历显示程序 (8) 流程图:(如下) (14) 工程代码: (19) 心得体会 (24) 实验报告 必做题: (1)编一程序对2种排序方法进行比较:交换法、选择法、插入法、冒泡法四种方法选2。具体比较方法是随机生成一组(≥300个)的100以内的整数数据,用选定的2种排序方法进行排序。纪录排序过程中数据比较和交换的次数,输出比较结果。 #include { t=i; for(j=i+1;j<300;j++) { if(b[t]
C语言ATM程序模拟
c语言课程设计机房机位预定系统绝对正确,附源代码
c语言程序设计atm自动取款机实验报告材料
c语言Atm的简单实现Word版
C语言课程设计报告——贪吃蛇源程序
C语言ATM机实现
C语言课程设计ATM机模拟操作附源码
C语言课程设计俄罗斯方块源代码
C语言模拟ATM机
c语言课程设计报告学生成绩信息管理系统源代码
C语言课程设计ATM机模拟操作附源码
C语言课程设计---学生选课系统加源代码
c语言程序设计atm自动取款机实验报告
C语言程序设计报告模拟ATM取款机
中国地质大学C语言课程设计题目(附参考代码)
C语言课程设计――飞机订票系统源代码
c语言课程设计报告会员卡计费系统源代码
//编译预处理指令,引入头文件 #include C语言课程设计报告(银行存取款管理设计)
c语言课程设计源代码
C语言日历显示课程设计报告(含源代码)