《数据结构(C++版)(第2版)》课程设计 ||物联网工程1131,201311672101

来源:互联网 发布:电脑录音软件推荐 编辑:程序博客网 时间:2024/06/06 13:56

实验原题 (#1):

小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:

(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;

(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。


实验内容:

储户开户、销户、存入、支出活动频繁,系统设计要求:

(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;

(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。


功能:

用以方便银行对客户进行开户、销户、存入、支出等情况进行操作以及记录。


运用到的课程知识点:

线性表、字符串链表、数据的遍历操作、数据的查找技术、反馈技术等。


设计的大体思路:

1.运用C++语言编写程序外壳及内部操作;

2.用链表储存和管理银行账户的各种信息;

3.程序界面的设计根据功能来划分。


编译环境:

Windows 8.1 Standard x64,Visual Studio 2013 Express for Desktop


成品效果如下图:

主菜单界面


创建一个账户:


登陆账户:


进行存款操作:


进行取款操作:


查询余额操作:


进行销户操作(删除已有帐户):


输入密码错误:


提示不存在帐户号码:


源代码:

/*Project Name:本地账户储值管理系统  Mission Details:小明是一个计算机专业top student,祝贺他毕业了。并准备到银行参加工作。上班第一天,经理叫他编制一个实现一个活期储蓄处理程序,算作考查。上班第一天, 一定要给领导一个好印象,小明二话没说,就答应了。现要你是小明了,请完成如下题目功能。储户开户、销户、存入、支出活动频繁,系统设计要求:(1)能比较迅速地找到储户的帐户,以实现存款、取款记账;(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define file "Storage.txt"int total = 0;typedef struct ElemType{char n[11];int ac;char pw[7];float bonus;}ElemType;typedef struct Storage{ElemType data;struct Storage *next;}LINK;void InitList(LINK *&L){L = (LINK *)malloc(sizeof(LINK));L->next = NULL;}void InsertList(LINK *&L){int x;LINK *s;s = (LINK*)malloc(sizeof(LINK));printf("请您输入帐户名称(10字符以字母数字组合),并按Enter键确认:"); scanf("%s", s->data.n);x = rand() % 10;total += x;s->data.ac = 000 + total;printf("\n您开户的帐户号码为:%d\n",s->data.ac); printf("请您输入帐户的密码(6位以内纯数字),并按Enter键确认:"); scanf("%s", s->data.pw);s->data.bonus = 0.00;s->next = NULL;if (L->next == NULL)L->next = s;else{s->next = L->next;L->next = s;}printf("您的帐户已成功开启,请按Enter键返回。\n"); }void DeleteList(LINK *&L){LINK *p = L, *q;char pass[6];int s;printf("请输入您要销户的账户号码,并按Enter键确认:"); scanf("%d", &s);printf("请输入该账户的密码,并按Enter键确认:"); scanf("%s", pass);while (p->next != NULL){if (p->next->data.ac == s)break;p = p->next;}if (p->next != NULL){while (strcmp(p->next->data.pw, pass) != 0){printf("错误!密码不正确!请重新输入,并按Enter键确认:"); scanf("%s", pass);}q = p->next;p->next = q->next;free(q);printf("该账户销户成功。请按Enter键返回\n");}else printf("错误!您所要销户的账户不存在,请检查输入是否有误,请按Enter键返回。\n"); }void PrintList(LINK*L){LINK *p = L->next;while (p != NULL){printf("%s\t", p->data.n);printf("%d\t%s\t%.2f\n", p->data.ac, p->data.pw, p->data.bonus);p = p->next;}}void Deposit(LINK *&L, LINK *p){int cq;float mn;while (1){if (p != NULL){printf("请选择:\n 1.存款、2.取款、3.查询余额、4.退出账号。\n(请输入括号内的数字,输入其它字符默认为取款,并按Enter键确认) :"); scanf("%d", &cq);if (cq == 1){printf("请输入你的存款金额,并按Enter键确认:"); scanf("%f", &mn);p->data.bonus = p->data.bonus + mn;printf("存款成功!请按Enter键返回\n");return;}else if (cq == 3){printf("您账户的余额为:%.2f\n",p->data.bonus); }else if (cq == 4){printf("账户已退出成功。请按Enter键返回\n");return;}else{printf("请输入你的取款金额,并按Enter键确认:");FH :scanf("%f", &mn);if ((p->data.bonus - mn) >= 0){p->data.bonus = p->data.bonus - mn;printf("取款成功!请按Enter键返回\n"); return;}else{printf("错误:取款失败!\n");printf("你账户上的金额不足!\n你的账户余额为: %.f\n",p->data.bonus);printf("请输入合适的取款金额,并按Enter键确认:"); goto FH;}}}}}void Search(LINK *L){LINK *p = L->next;int acc;char pass[6];printf("请输入你要登录的账号,并按Enter键确认:"); scanf("%d", &acc);printf("请输入你的密码,并按Enter键确认:");scanf("%s", pass);while (p != NULL){if (p->data.ac == acc)break;p = p->next;}if (p == NULL)printf("错误:不存在该账户,请检查输入的账户名称是否有误\n 请按Enter键返回");else{if (strcmp(p->data.pw, pass) == 0)printf("账户登录成功,请按Enter键继续。\n");else{while (strcmp(p->data.pw, pass) != 0){char pa;printf("错误:密码不正确\n"); printf("是否重新输入(是,就输入任意键)、(否,从输入N or n),并按Enter键确认:");scanf("\n%c", &pa);if (pa == 'n' || pa == 'N'){system("cls"); return;}printf("\n请您重新输入密码,并按Enter键确认:"); scanf("%s", pass);}}Deposit(L, p);}}void save(LINK *L){FILE *fp;if ((fp = fopen(file, "rb")) == NULL){printf("cannot open file.\n");exit(1);}LINK *p = L->next;if (p != NULL){if (fwrite(p, sizeof(struct Storage), 1, fp) != 1)printf("file write error\n");p = p->next;}fclose(fp);}void Print(LINK *&L){FILE *fp;LINK *p, *s;if ((fp = fopen(file, "rb")) == NULL){printf("cannot open file.\n");exit(1);}s = (LINK*)malloc(sizeof(LINK));p = NULL;s->next = NULL;while (fread(s, sizeof(struct Storage), 1, fp)){total++;if (L->next == NULL){p = s;p->next = s->next;}else{p->next = s;p = s;p->next = s->next;}s = (LINK*)malloc(sizeof(LINK));s->next = NULL;}fclose(fp);}void menu(){printf("***********************************************\n"); printf("=====本地帐户储值管理系统有限公司beta v0.01====\n");printf("1.账户新开户。\n");printf("2.账户销户。\n");printf("3.存款、取款。\n");printf("4.查看所有储蓄账户信息。\n");printf("5.退出管理系统。\n");printf("***********************************************\n");}void choice(){LINK *L;InitList(L);while (1){menu();char x, ch;printf("请输入您需要的功能的序号,并按Enter键确认:");scanf("%c", &x);getchar();if (x > '5')printf("您输入的序号有误,请重新输入并按Enter键确认:\n");if (x == '5')break;switch (x){case '1':InsertList(L); ch = getchar();break;case '2':DeleteList(L); ch = getchar();break;case '3':Search(L); ch = getchar();break;case '4':PrintList(L); ch = getchar();break;default:break;}getchar();system("cls");}save(L);}void main(){choice();}


0 0
原创粉丝点击