C++技术支持项目-综合储物业务平台
来源:互联网 发布:如何找出excel重复数据 编辑:程序博客网 时间:2024/04/30 20:53
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: 技术支持项目-综合储物业务平台 * 作 者: 李洪悬 * 完成日期: 2012 年 1 月 4 日* 版 本 号: * 对任务及求解方法的描述部分* 输入描述:帐户信息* 问题描述:技术支持项目-综合储物业务平台* 程序输出:生成帐户* 程序头部的注释结束项目-综合储物平台头文件//显示欢迎信息void welcome();//系统主菜单void mainmenu();//开户void openAnAccount();//销户void closeAnAcount();//存款void deposit();//取款void withdraw();//查询void query();//查找一个账户在数组中的位置int findAnAccount(int accNumber);//显示一个账户的信息void dispAnAccount(int i);//生成账号int createAccNumber();//检查录入的户名.密码.存入金额格式是否合法。返回值: 0: 合法.1: 非法。//flag: 0: 户名. 1:密码. 2:存入金额。checkstr: 需要检查的项目。int checkInput(int flag, char *checkStr);//显示所有账户void queryall();//得到键盘录入的户名void getaccName(char accName[]);//得到键盘录入的密码void getaccPWD(char accPWD[]);//得到键盘录入的金额double getcash(int flag);//得到键盘录入的账号int getaccNumber(int flag);#define N_MAXREC_NO 100//文件最大行数#define MAXLINE 256//行最大长度//数据文件记录结构struct record{ int accNumber;//账号 char accName[9];//户名 char accPWD[7];//密码 double balance;//余额 char flag[2];//销户标志};//自定义数据类型typedef struct record RECORD;//结构体数组RECORD rs[N_MAXREC_NO];//最后一个账户在结构体中的位置int maxAccount = -1; 项目-综合储物平台源文件#include <string.h>#include <conio.h>#include <stdlib.h>#include <stdio.h>#include <ctype.h>#include "bank.h"void main(){ char userName[9]; char userPWD[7]; int i; welcome(); for(i = 0; i < 3; i++) { printf("\n"); printf("请输入您的用户名:"); scanf("%s", userName); fflush(stdin); printf("\n"); printf("请输入您的密码:"); scanf("%s",userPWD); fflush(stdin); if ( (strcmp (userName, "admin") == 0) && (strcmp (userPWD, "admin") == 0) ) { //用户名和密码正确,显示主菜单 mainmenu(); } else { if (i < 2) { //用户名或密码错误,提示用户重新输入 printf("用户名或密码错误,请重新输入!"); } else { //连续三次输错用户名或密码,退出系统。 printf("用户名或密码错误,退出系统!"); } } } }//显示欢迎的函数void welcome(){ printf("+----------------------------+\n"); printf("| |\n"); printf("| 欢迎使用储蓄综合业务平台 |\n"); printf("| |\n"); printf("+----------------------------+\n");}//系统主菜单函数void mainmenu(){ char choice = -1; do { printf("\n"); printf("+-------------------------------------+\n"); printf("| 存款请按1 开户请按4 |\n"); printf("| 取款请按2 销户请按5 |\n"); printf("| 查询请按3 退出请按0 |\n"); printf("+-------------------------------------+\n"); printf("请输入您的选择:"); scanf("%c", &choice); fflush(stdin); switch(choice) { case '0': exit(0); case '1': deposit(); break; case '2': withdraw(); break; case '3': query(); break; case '4': openAnAccount(); break; case '5': closeAnAcount(); break; case '6': queryall(); break; default: printf("\n无效选项!"); } }while(choice != 0);}//开户函数void openAnAccount(){ int accNumber;//账号 char accName[9];//户名 char accPWD[7];//密码 double cash;//存入金额 //初始化变量 accNumber = 0; memset ( accName, 0, sizeof(accName) ); memset ( accPWD, 0, sizeof(accName) ); cash = 0; //生成账号 accNumber = createAccNumber(); //获取账户名称 getaccName(accName); //获取账户密码 getaccPWD(accPWD); //获取存入金额 cash = getcash(0); maxAccount++; rs[maxAccount].accNumber = accNumber; strcpy(rs[maxAccount].accName,accName); strcpy(rs[maxAccount].accPWD,accPWD); rs[maxAccount].balance = cash; strcpy(rs[maxAccount].flag,"0"); //显示账户信息 dispAnAccount(maxAccount); printf("开户成功!按任意键返回主菜单..."); getch(); return;}//显示用户信息函数void dispAnAccount(int i){ printf("+-------------------------------------------------+\n"); printf("| %-5s | %-8s | %-6s | %-12s | %4s |\n","账号","户名","密码","余额","状态"); printf("+-------+----------+--------+--------------+------+\n"); printf("| %-5d | %-8s | %-6s | %-12.2f | %4s |\n",rs[i].accNumber,rs[i].accName, rs[i].accPWD,rs[i].balance,atoi(rs[i].flag)?"销户":"正常"); printf("+-------------------------------------------------+\n");}//自动生成账号函数int createAccNumber(){ if(maxAccount == -1) { //账号从开始 return 10001; } else { //顺序产生账号 return rs[maxAccount].accNumber + 1; }}//获取账户名称函数void getaccName(char accName[]){ char caccName[100];//户名 int i = 1; while(i) { memset(caccName, 0, sizeof(caccName)); printf("\n"); printf("请输入储户户名:"); scanf("%s", caccName); fflush(stdin); if(checkInput(0,caccName)) { printf("超过位的最大户名长度!\n"); continue; } i = 0; } memcpy(accName, caccName, 9);}//获取账户密码函数void getaccPWD(char accPWD[]){ char caccPWD[100];//密码 int i = 1; while(i) { memset(caccPWD, 0, sizeof(caccPWD)); printf("\n"); printf("请输入储户密码:"); scanf("%s", caccPWD); fflush(stdin); if(checkInput(1,caccPWD)) { printf("超过位的最大密码长度!\n"); continue; } i = 0; } memcpy(accPWD, caccPWD, 7);}//获取存入(取款)金额函数double getcash(int flag){ char ccash[100];//金额 double dcash;//金额 int i = 1; while(i) { memset(ccash, 0, sizeof(ccash)); dcash = 0; printf("\n"); switch(flag) { case 0: printf("请输入存入金额:");break; case 1: printf("请输入取款金额:");break; } scanf("%lf",&dcash); fflush(stdin); sprintf(ccash,".2f",dcash); if(checkInput(2,ccash)) { printf("录入的金额超过位的最大存入(取出)金额长度!\n"); continue; } i = 0; } return dcash;}//检查账户信息规范函数int checkInput (int flag, char *checkStr){ switch(flag) { //检查户名是否超过最大长度 case 0: { if(strlen(checkStr) > 8) { return 1; } break; } //检查密码是否超过最大长度 case 1: { if(strlen(checkStr) > 6) { return 1; } break; } //检查存入金额是否超过最大长度 case 2: { if(strlen(checkStr) > 12) { return 1; } break; } default: return 0; } return 0;}//存款函数void deposit(){ int accNumber;//账号 int accountPosition;//账户在数组中位置 double cash;//存入金额 //初始化 accNumber = 0; accountPosition = -1;//-1,表示未找到 cash = 0; //获取存款账号 accNumber = getaccNumber(0); //查找该账户 accountPosition = findAnAccount(accNumber); if (accountPosition == -1) { printf("查无此账户,按任意键返回..."); getch(); return; } //显示账户信息 dispAnAccount(accountPosition); //已销户账户,不能进行存款操作 if (strcmp (rs[accountPosition].flag,"0") != 0) { printf("该账户已经销户,不能存款!按任意键返回..."); getch(); return; } //得到存款金额 cash = getcash(0); rs[accountPosition].balance = rs[accountPosition].balance + cash; dispAnAccount(accountPosition); printf("存款成功!按任意键返回..."); getch();}//取款函数void withdraw(){ int accNumber;//账号 char accPWD[7];//密码 int accountPosition;//账户在数组中位置 double cash;//取出金额 //初始化 accNumber = 0; accountPosition = -1;//-1,表示未找到 memset (accPWD, 0, sizeof (accPWD)); cash = 0; //获取取款账号 accNumber = getaccNumber(1); //获取取款密码 getaccPWD (accPWD); //查找该账户 accountPosition = findAnAccount(accNumber); if (accountPosition == -1) { printf("查无此账户,按任意键返回..."); getch(); return; } //显示账户信息 dispAnAccount(accountPosition); //已销户账户,不能进行取款操作 if (strcmp (rs[accountPosition].flag,"0") != 0) { printf("该账户已经销户,不能取款!按任意键返回..."); getch(); return; } //密码不正确 if(strcmp(rs[accountPosition].accPWD, accPWD) != 0) { printf("\n密码不正确!按任意键返回..."); getch(); return; } //得到取款金额 cash = getcash(1); //比较金额大小 if( rs[accountPosition].balance < cash) { printf ("余额不足,按任意键返回..."); } else { rs[accountPosition].balance = rs[accountPosition].balance - cash; dispAnAccount(accountPosition); printf("取款成功!按任意键返回..."); getch(); }}//获取账号函数int getaccNumber (int flag){ int iaccNumber;//账号 iaccNumber = 0; printf("\n"); switch(flag) { case 0: printf ("请输入要存款的账号"); break; case 1: printf ("请输入要取款的账号"); break; case 2: printf ("请输入要销户的账号"); break; case 3: printf ("请输入要查询的账号"); break; } scanf( "%d" , &iaccNumber ); fflush(stdin); return iaccNumber;}//查找账户函数int findAnAccount (int accNumber){ int accountPosition;//账户在数组中位置 if (accNumber <= rs[maxAccount].accNumber) { accountPosition = accNumber - 10001 ; } return accountPosition;}//查询函数void query(){ int accNumber;//账号 char accPWD[7];//密码 int accountPosition;//账户在数组中的位置 //初始位置是-1,表示未找到 accountPosition = -1; accNumber = 0; memset (accPWD, 0, sizeof (accPWD)); //获取要查询的账户 accNumber = getaccNumber(3); //获取要查询的账户密码 getaccPWD(accPWD); //查找此账户 accountPosition = findAnAccount(accNumber); if (accountPosition == -1) { printf ("查无此账户,按任意键返回..."); getch(); return; } //显示账户信息 dispAnAccount (accountPosition); //密码不正确 if (strcmp (rs[accountPosition].accPWD,accPWD) != 0) { printf ("\n密码不正确!按任意键返回..."); getch(); return; } //已销户账户 if (strcmp(rs[accountPosition].flag, "0") != 0) { printf ("\n该账户已经销户!按任意键返回..."); getch(); return; } printf ("\n查询成功!按任意键返回..."); getch(); return;}//销户函数void closeAnAcount(){ int accNumber;//账号 char accPWD[7];//密码 char userAnswer;//用户的回答 int accountPosition;//账户在数组中的位置 //初始化 accountPosition = -1;//-1,表示未找到 accNumber = 0; memset ( accPWD, 0, sizeof(accPWD) ); //获取要销户的账号 accNumber = getaccNumber(2); //获取要销户的账户密码 getaccPWD(accPWD); //查找该帐户 accountPosition = findAnAccount(accNumber); if(accountPosition == -1) { printf("查无此帐户,按任意键返回..."); getch(); return; } //显示账户信息 dispAnAccount(accountPosition); //密码不正确 if ( strcmp(rs[accountPosition].accPWD , accPWD) != 0 ) { printf("\n密码不正确!按任意键返回..."); getch(); return; } //账户已销户 if( strcmp (rs[accountPosition].flag, "0") != 0 ) { //已销户帐户,不能再次销户 printf("该帐户已经销户,不能再次销户,按任意键返回..."); getch(); return; } printf("确认将帐户 %d 销户吗? [1:销户 | 其他:不销户]",rs[accountPosition].accNumber); scanf ("%c", &userAnswer); fflush(stdin); if(userAnswer == '1') { strcpy(rs[accountPosition].flag, "1"); rs[accountPosition].balance = 0; dispAnAccount (accountPosition); printf("销户成功!按任意键返回..."); getch(); return; } printf("用户取消销户!按任意键返回..."); getch(); return;}//全部查询函数void queryall(){ int accountPosition;//账户在数组中位置 int i;//循环控制变量 if (maxAccount >= 0) { for (i = 0; i <= maxAccount; i++) { accountPosition = i; dispAnAccount(accountPosition); } } else { printf ("查无此账户,按任意键返回..."); getch(); return; } if (maxAccount >= 0) { printf ("\n全部查询成功!按任意键返回..."); getch(); return; }}
- C++技术支持项目-综合储物业务平台
- 技术支持课--项目实训--储蓄综合业务平台--完成--C语言编写
- 技术支持课--项目实训--储蓄综合业务平台(第一期)--开户功能实现--c语言编写
- 提供小区物业综合管理系统解决方案
- 网欣物业EAP物业行业智慧化软件平台---物业行业营改增解决方案
- 2011年下半年项目“银行储蓄综合业务平台”C语言版
- 物业erp项目的开发环境配置
- 整理项目(二)——物业
- 迈瑞综合应用及流程管理平台项目
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- 技术支持
- sizeof()与 数组长度获取
- libxml C解析xml文档
- 自动调整软键盘
- C语言和设计模式(抽象工厂模式)
- Java线程(三):线程协作-生产者/消费者问题
- C++技术支持项目-综合储物业务平台
- 敌兵布阵 dp
- poj2761----树状数组
- 见与不见
- JAVA,JSP,Servlet获取当前工程路径-绝对路径
- 那一天
- Linux编程之路---共享内存
- xxxxxxxxxxxxx
- C常用库函数