当前位置:文档之家› C语言课程设计---模拟银行存取款业务

C语言课程设计---模拟银行存取款业务

《C语言程序设计》课程设计报告题目:模拟银行存取款业务学生姓名学号时间目录第1章绪论 (1)1.1设计目的 (1)1.2 背景 (1)1.3 开发环境 (1)1.4 运行环境 (1)第2章系统总体设计 (2)2.1系统设计的组成框图 (2)2.2功能描述 (2)第3章系统详细设计 (3)3.1程序设计流程图 (3)3.2功能模块设计 (4)3.2.1 登陆界面 (4)3.2.2 普通用户登陆 (4)3.2.3 管理员登陆 (6)3.3函数功能描述 (9)第4章系统使用说明 (10)4.1管理员使用说明 (10)4.2 普通用户使用说明 (10)附录 (10)第1章绪论1.1设计目的1)银行存取款系统是针对银行账目的日常管理而设计。

银行账目管理系统不仅要求操作方便而且要求界面简洁,它还需要实现账目管理,用户查询功能。

2)并了解银行存取款业务的流程,使用C语言和数据程序知识模拟银行存取款系统。

1.2 背景说明:a.待开发的软件系统的名称:模拟银行存取款业务。

b.本项目的任务由安博思软的严武军老师提出,面向的用户是银行的管理员和普通用户。

c.面对日新月异的计算机的普及,利用计算机对储蓄的用户进行综合的管理。

1.3 开发环境Vi 编辑器 gcc编译器1.4 运行环境Red Hat第2章系统总体设计2.1系统设计的组成框图2.2功能描述系统实现的主要功能有:1.管理员登陆管理员可以实现对账户的管理:注销用户,添加用户,查看用户,退出。

2.普通用户登陆普通用户可以实现对自己的账户的管理:取款,存款,查看余额,退出。

第3章系统详细设计3.1程序设计流程图3.2功能模块设计3.2.1 登陆界面进入系统,显示欢迎界面,选择普通用户操作还是管理员用户操作。

3.2.2 普通用户登陆1.密码验证作为普通用户登陆时,需要验证账号和密码是否匹配,匹配成功即可进行其他操作。

2.存款功能登陆账号后,选择存款功能,并输入存款金额,写入文件,原有金额增加,可使用查询功能进行查询。

3.取款功能:存款功能输入存款金额存档结束入金额是否大于原有存款,若大于原有金额显示输入错误,余额不足,若输入金额小于原有金额则取出钞票,并写入文件,原有金额减小,可使用查询功能进行查询。

4.查询模块:查询功能:查询账户现有存款。

3.2.3 管理员登陆1.密码验证管理员的权限很大,可以添加,注销,查看,用户信息,在此系统中,管理员的默认账号是555,密码是555。

2.注销用户管理员登陆成功以后进行操作选择:输入要注销用户的账号,若存在就删除,若不存在就返回操作选择界面。

3.添加用户管理员登陆成功以后进行操作选择:输入要添加用户的账号,密码,姓名,余额,若已存在此账号,则注册失败,返回操作选择界面。

4.查看用户管理员登陆成功以后进行操作选择:查看所有用户的信息。

3.3函数功能描述menu1()//登陆的第一个界面menu2()//超级管理员界面menu3()//普通用户界面is_mima()//验证管理员账号密码pass(struct person *head,long num,long password)//验证普通用户账号和密码creat() // 将银行卡信息.txt文本中的信息读取到链表中get_money(struct person *head,long num,int money)//用户取钱save_money(struct person *head,long num,int money)//用户存钱insert(struct person *head,struct person *p)//添加用户del(struct person *head,long num)//注销用户writeb(struct person *head)//将建立的链表存入银行卡信息.txt 中第4章系统使用说明4.1管理员使用说明1)输入账号555密码555,登陆界面。

若账号密码错误则重新输入。

2)登陆界面后,选择功能3)选择a为注销用户,输入要注销的账号,若存在则注销,若不存在,则操作失败4)选择b为添加用户,输入要添加的账号,密码,姓名,余额,若不存在此账号,则注册成功,否则失败。

5)选择c为查看用户信息,显示所有的用户信息。

6)选择d安全退出系统。

4.2 普通用户使用说明1)输入用户的账号和密码,登陆界面,若账号密码错误则重新输入。

2)登陆界面后,选择功能3)选择a.为取款功能,输入取款金额,若取款机金额小于原有存款,则取款成功,取出钞票。

4)选择b.为存款功能,输入存款金额,存档,存款成功。

5)选择c.为查看余额,显示账户的余额。

6)选择d.退出系统。

附录/*程序源代码*/#include<stdio.h>#include<string.h>#include<stdlib.h>struct person{long num;//账号char name[20];//姓名long money;//余额struct person *next;};struct person *head=NULL;int n;//文件的个数int a=-1;long id;//超级管理员的id是555long password;//超级管理员的密码是555void writeb(struct person *head)//将建立的链表存入银行卡信息.txt 中{FILE *pt;struct person *p;pt=fopen("银行卡信息.txt","w");if (pt==NULL){perror("银行卡信息.txt\n");exit(1);}p=head;while(p){fprintf(pt,"%d %d %s %d \n",p->num,p->password,p->name,p->money);p=p->next;}fprintf(pt,"%d %d",a,a);fclose(pt);}struct person *insert(struct person *head,struct person *p)//创建链表{struct person *p1;p1=head;while(p1->num!=p->num&&p1->next!=NULL){p1=p1->next;}if (p1->num==p->num){printf("已经存在此账号 \n请重新选择:\n");}p->next=head;head=p;printf("插入成功!\n");n++;writeb(head);return head;}struct person *del(struct person *head,long num) {struct person *p,*p2;if (head==NULL){printf("没有信息\n");exit(1);}p=head;while(p->num!=num&&p->next!=NULL){p2=p;p=p->next;}if (p->num==num){if(p==head)head=head->next;elsep2->next=p->next;printf("删除成功!\n");}else{printf("没有此信息\n");}writeb(head);/*pt=fopen("银行卡信息.txt","w");if (pt==NULL){exit(1);}p=head;while(p){fprintf(pt,"%d %d %s %d \n",p->num,p->password,p->name,p->money);p=p->next;}fprintf(pt,"%d %d",a,a);fclose(pt);*/return head;}struct person *creat() // 将银行卡信息.txt文本中的信息读取到链表中{FILE *pt;struct person *p,*p2;p=(struct person *)malloc(sizeof (struct person));p2=(struct person *)malloc(sizeof (struct person));pt=fopen("银行卡信息.txt","r");if (pt==NULL){perror("银行卡信息.txt");exit(1);}fscanf(pt,"%d %d %s %d ",&p->num,&p->password,&p->name,&p->money);if(p->num==-1)printf("数据库中没有信息");while(p->num!=-1){n++;if (n==1){head=p;}elsep2->next=p;p2=p;p=(struct person *)malloc(sizeof (struct person));fscanf(pt,"%d %d %s %d ",&p->num,&p->password,&p->name,&p->money);}p2->next=NULL;return (head);}struct person *save_money(struct person *head,long num,int money)//用户存钱{struct person *p1,*p2;if(head==NULL){printf("卡中无记录\n");return 0;}p1=head;while(p1->num!=num&&p1->next!=NULL){p2=p1;p1=p1->next;}if (p1->num==num){p1->money=p1->money+money;printf("已经存入%d\n",money);printf("可用余额为%d\n",p1->money);}elseprintf("不存在此卡号\n");return head;}struct person *get_money(struct person *head,long num,int money)//用户取钱{struct person *p1,*p2;if(head==NULL){printf("卡中无记录\n");return 0;}p1=head;while(p1->num!=num&&p1->next!=NULL)p2=p1;p1=p1->next;}if (p1->num==num){if(p1->money>money){p1->money=p1->money-money;printf("已经取出%d\n还剩余额%d\n",money,p1->money);}elseprintf("余额不足,操作失败!\n");}elseprintf("不存在此卡号\n");return head;}/*int know_money(int num){int money=-1;struct person *p1,*p2;if(head==NULL){printf("卡中无记录\n");return 0;}p1=head;while(strcpy(p1->num,num)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if (strcpy(p1->num,num)==0){money=p1->money;printf("余额为:%d\n",money);}elseprintf("不存在此卡号\n");return money;struct person *pass(struct person *head,long num,long password)//验证普通用户账号和密码{struct person *p;/*if(head==NULL);{printf("没有信息\n");exit(1);}*/p=head;while(p->num!=num&&p->next!=NULL){p=p->next;}if (p->num==num&&p->password==password){printf("登陆成功\n");return p;}else{printf("账号或密码错误\n");return NULL;}}void _printf(struct person *head){struct person *p;p=head;printf("账号姓名余额\n");while(p){//printf("%d %d %s %d \n",p->num,p->password,p->name,p->money);printf("%3d %5s %6d \n",p->num,p->name,p->money);p=p->next;}}{printf("*********************************************\n");printf(" 欢迎进入此银行服务系统!\n");printf("*********************************************\n");getchar();}void menu2()//超级管理员界面{printf("********************************************\n");printf(" a 注销用户 b 添加用户 c 查看所有用户 d 退出\n");printf("********************************************\n");}void menu3()//普通用户界面{printf("********************************************\n");printf(" a 取款 b 存款 c 查看余额 d 退出 \n");printf("********************************************\n");printf("请选择:\n");}int is_mima()//验证管理员账号密码{printf("输入管理员账号\n");scanf("%d",&id);printf("输入管理员密码\n");scanf("%d",&password);if ((id!=555)||(password!=555)){printf("密码或者账户错误\n");return 0;}elsereturn 1;}int main(){struct person *temp;struct person *p3;char ch;int b1;// int b2;int money;temp=(struct person *)malloc(sizeof(struct person));p3=(struct person *)malloc (sizeof(struct person));head=creat();system("color f0");menu1();printf("*********************************************\n");printf(" 1超级管理员登陆\n");printf(" 2普通用户登陆\n");printf("*********************************************\n");scanf("%c",&number);while(1){if (number=='1'||number=='2'){break;}printf("操作错误,请重新选择: ");getchar();scanf("%c",&number);}switch(number){case '1':{while(1){b1=is_mima();if (b1==1){printf("管理员登陆成功!\n");break;}elseprintf("重新输入\n");}menu2();getchar();scanf("%c",&ch);{switch(ch){long b3;case 'a':{printf("输入要注销的账号:");scanf("%d",&b3);head=del(head,b3);getchar();scanf("%c",&ch);}break;case 'b':{printf("添加的账号密码姓名余额\n");scanf("%d %d %s %d",&p3->num,&p3->password,p3->name,&p3->money);head=insert(head,p3);getchar();scanf("%c",&ch);}break;case 'c':{_printf(head);getchar();scanf("%c",&ch);}break;default:break;}if(ch=='d'){printf("安全退出!\n");break;}}break;}{while(1){printf("输入用户账号:");scanf("%d",&id);printf("输入用户密码");scanf("%d",&password);temp=pass(head,id,password);if (temp!=NULL){break;}}menu3();getchar();scanf("%c",&ch);while(ch=='a'||ch=='b'||ch=='c'){switch(ch){case 'a':{printf("输入要取的金额\n");scanf("%d",&money);head=get_money(head,temp->num,money);writeb(head);getchar();scanf("%c",&ch);}break;case 'b':{printf("输入要存的金额\n");scanf("%d",&money);head=save_money(head,temp->num,money);writeb(head);getchar();scanf("%c",&ch);}break;case 'c':{getchar();scanf("%c",&ch);}break;case 'd':break;default:break;}if(ch=='d'){printf("已安全退出\n");break;}}}break;default:{printf("输入错误\n");getchar();scanf("%c",&number);}break;}return 0;}。

相关主题