c++ 一個簡單的map,struct小應用
題目要求:
Test Program
(24-2-2012)
BANKING SYSTEM PROJECT
Description: This C++ programs on BANKINGSYSTEM has account class with data members like account number. name, deposit,withdraw amount and type of account. Customer data is read from file (Createyour own file format) and add them to customer class attributes. A customer candeposit and withdraw amount in his account. All the fields must be accessedthrough setters and getters.
Output should look like:
Main Menu
1. New Account
2. Deposit amount
3. WithDraw amount
4. Exit
Select your option: 1
%%%%%%%%%New Entry Account Form%%%%%%%%%
Enter the account number: 92837
Enter Account holder Name: pi*og2
Enter type of account: savings
Enter Initial amount: 500
Your account created successfully...
我的檔案:
bankaccountInfo.txt
bank.cc
bank.hh
main.cc
bankaccountInfo.txt:
2012
John
savings
1000
3264
Lauri
savigns
3000
92837
prog2
savings
0
bank.hh:
-bash-4.1$ more bank.hh
#ifndef BANK_HH
#define BANK_HH
#include<iostream>
#include<fstream>
#include<string>
#include<map>
using namespace std;
const string filename = "bankaccountInfo.txt";
struct accountinfo {
accountinfo(): name(), type_account(), amount(0){}
accountinfo(string newname, string newtype, double newamount): name(newname), ty
pe_account(newtype), amount(newamount) {}
string name;
string type_account;
double amount;
};
class Bank {
public:
void newAccount();
void depositAmount();
void withdrawAmount();
Bank();
private:
int account_number;
void sendtoFile();
map <int,accountinfo> customers;
};
#endif
bank.cc:
#include "bank.hh"
Bank::Bank(void)
{
ifstream inFile(filename.c_str());
int key;
string temp_name, temp_type_account;
double temp_amount;
while(!inFile.eof()) {
inFile >> key >> temp_name >> temp_type_account >> temp_amount;
customers[key] = accountinfo(temp_name, temp_type_account, temp_amount);
}
inFile.close();
}
void Bank::sendtoFile(void)
{
ofstream outFile;
outFile.open(filename.c_str());
map <int,accountinfo>::iterator map_it;
for (map_it = customers.begin(); map_it != customers.end(); map_it++) {
outFile << map_it->first << endl;
outFile << map_it -> second.name << endl;
outFile << map_it -> second.type_account << endl;
outFile << map_it -> second.amount << endl;
}
outFile.close();
}
void Bank::newAccount(void)
{
int someone_account_number;
cout << "%%%%%%%%%New Entry Account Form%%%%%%%%%\n";
cout << "Enter the account number: ";
cin >> someone_account_number;
map <int,accountinfo>::iterator map_it;
map_it = customers.find(someone_account_number);
if(map_it != customers.end())
cout << "the account number already existed\nfail to create account\n";
else {
int key = someone_account_number;
string temp_name, temp_type_account;
double temp_amount;
cout << "\nEnter Account holder Name: ";
cin >> temp_name;
cout << "\nEnter type of account: ";
cin >> temp_type_account;
cout << "\nEnter Initial amount: ";
cin >> temp_amount;
cout << endl;
customers[key] = accountinfo(temp_name, temp_type_account, temp_amount);
sendtoFile();
cout << "Your account created successfully...\n";
}
}
void Bank::depositAmount(){
int key;
double deposit_amount;
cout << "%%%%%%%%%Deposit Amount%%%%%%%%%\n";
cout << "Enter the account number: ";
cin >> key;
map <int,accountinfo>::iterator map_it;
map_it = customers.find(key);
if(map_it == customers.end())
cout << "No such account\n";
else {
cout << "\nEnter deposit amount: ";
cin >> deposit_amount;
map_it->second.amount += deposit_amount;
sendtoFile();
cout << "deposit successfully now you have " << map_it->second.amount << " in the bank\n";
}
}
void Bank::withdrawAmount()
{
int key;
int loop_index = 1;
double withdraw_amount;
cout << "%%%%%%%%%Deposit Amount%%%%%%%%%\n";
cout << "Enter the account number: ";
cin >> key;
map <int,accountinfo>::iterator map_it;
map_it = customers.find(key);
if(map_it == customers.end())
cout << "No such account\n";
else {
do {
cout << "you have " << map_it->second.amount << " in the bank\nEnter withdraw amount: ";
cin >> withdraw_amount;
if (withdraw_amount <= map_it->second.amount) {
map_it->second.amount -= withdraw_amount;
sendtoFile();
cout << "\nwithdraw successfully now you have " << map_it->second.amount << " in the bank\n";
loop_index = 0;
}
else {
cout << "you don't have enough balance\n";
}
} while(loop_index);
}
}
main.cc:
-bash-4.1$ more main.cc
#include "bank.hh"
#include <cstdlib>
using namespace std;
int main(void)
{
int choice;
Bank accountOperation;
cout << "Main Menu\n1. New Account\n2. Deposit amount\n3. WithDraw amount\n4. Exit\n";
cout << "Select your opetion: ";
cin >> choice;
cout << endl;
switch(choice) {
case 1:
accountOperation.newAccount();
break;
case 2:
accountOperation.depositAmount();
break;
case 3:
accountOperation.withdrawAmount();
break;
case 4:
exit(EXIT_SUCCESS);
}
return 0;
}
相關推薦
c++ 一個簡單的map,struct小應用
題目要求: Test Program (24-2-2012) BANKING SYSTEM PROJECT Description: This C++ programs on BANKINGSYSTEM has account class with data members
爬蟲教程」Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發
Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發環境,對於必須的
「爬蟲教程」Python做一個簡單爬蟲,小白也能看懂的教程
俗話說“巧婦難為無米之炊”,除了傳統的資料來源,如歷史年鑑,實驗資料等,很難有更為簡便快捷的方式獲得資料,在目前網際網路的飛速發展寫,大量的資料可以通過網頁直接採集,“網路爬蟲”應運而生,本篇將會講解簡單的網路爬蟲編寫方法。 開發環境 每個人的開發環境各異,下面上是我的開發
Java語言,基於TCP編寫一個簡單的Client/Server 網路應用程式。
要求實現客戶向伺服器傳輸任意一個字串,伺服器將收到的字串變換成大寫後傳回客戶。//客戶端: package tcpClient; import java.io.BufferedReader; import java.io.DataOutputStream; impo
通過簡單的迴圈語句,一個簡單的猜數小遊戲
import java.util.*; class Day3_DoWhile { public static void main(String[] args) { int i=(int)(Math
華為OJ:開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼所在的檔名稱和行號。
用到了類string的length(), size(),find_first_of(),find_last_of(),substr(),push_back()函式 #include <iostream> #include <algorithm> #
C語言編程 如何構建一個簡單的猜數字小遊戲
term 51cto 界面 如何 技術 pause 函數 vpd clu 源代碼如下: #include<stdio.h> #include<stdlib.h> #include<time.h>//生成隨機函數起點時用到time.h in
node起一個簡單服務,打開本地項目或文件瀏覽
utf html vue content 名稱 控制臺 AC 運行 -type 1、安裝nodejs 2、在項目文件夾目錄下創建一個js文件,命名server.js(自定義名稱),內容如下 var http = require(‘http‘); var fs =
C#一個簡單辦法判斷操作系統版本
message art 微軟 tin dem pac sna string win 做個記錄,最近寫個小軟件,涉及到判斷操作系統版本的,查看了微軟的相關資料,感覺以及網上的一些Demo,感覺不全,而且有些系統也不好區分。 因為之前寫過批處理版本的操作系統判斷使用了WMIC的
一個簡單的canvas射擊小遊戲
本人初學前端技術,在HTML5的背景下,逐漸感受到前端技術的越來越強大與完善。web開發者已經不再是簡簡單單的製作網頁name簡單了。 近日看見網路上許多H5小遊戲,非常感興趣,於是臨時抱佛腳,學習了有關canvas的知識,製作了一個小遊戲。 大家儲存圖片,複製程式碼就可以
c++:一個記憶體地址,居然可以存在兩個不同的值
#include<iostream> using namespace std; int main() { const int a = 10; const int * p = &a; int *q; q = const_cast<int *&
Netty - 一個簡單的聊天室小專案
經過一段時間對Netty的學習,我們對Netty各版本以及像ProtocolBuffers等技術應用都有了不少相關的瞭解, 我們就用這段時間學到的只是做一個簡單的聊天室的小專案來練習自己學到的技術。 做這個小專案之前我們先大致瞭解下我們需要用到的技術點,netty3.x/4.x/5.
一個簡單實用的Android除錯應用技巧
在應用開發中,我們常常會進行日誌列印或者debug除錯,以此來分析執行時的一些資訊,便於發現bug和問題。Android Studio的Debug功能很好用,但是有時候有些情況下,就顯得不是那麼快捷和便利。 比如 我們除錯的點在應用一開啟的時候,很靠前,例如Appli
一個簡單案例,5 分鐘看懂 Java Lamdba 表示式
JDK8引入了一個新玩意,叫做lamdba(那麼大)的表示式,說得神乎其神,說真的,這玩意吧,並不難,但是要講清楚吧,也不是太容易的事情。 從匿名內部類開始說起 老實交代,直接來講lamdba表示式還真是個枯燥的玩意,那從哪下手呢,我想你一定使用過匿名內部類吧,這玩意
python入門篇:開發一個簡單的猜數字小遊戲
python是史上最簡潔的語言!(其實就是一個文字遊戲) 今天太晚了,我把程式碼貼出來還有事情忙(其實是想偷個懶,不想打字,反正我有註釋) 看我的文章千萬不要著急,慢慢看完,看到最後。 ****************************** #coding=utf-8 name =
[C#]一個簡單的獲取網頁原始碼的函式
獲取網頁原始碼,顯示在richTextBoxWeb中: private void Show_Web() { // 獲取網頁原始碼
C# 觀察者模式,兩個應用例項程式碼
C# 觀察者模式,兩個應用例項程式碼# 介紹 觀察者模式的目的:定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。 主要解決:一個物件狀態改變給其他物件通知的問題,而且要考慮到易用和低耦合,保證高度的協作。 何時
C++一個簡單的刪除句子中母音字元的程式
#include <iostream> using namespace std; void main() { char c; string str; while(c = getchar()) { if(
介紹Hrorm:一個簡單的,宣告式的,經過型別檢查的ORM
一個問題 關於將Java程式碼中的模型與關係(SQL)資料庫中的模型連線的問題,已經有很多網路墨水洩露了。物件關係對映(ORM)的主題確實很豐富,您可能想要在應用程式和資料庫之間傳輸資訊的全部內容都是巨大的。許多ORM工具試圖覆蓋儘可能多的空間; 他們的設計和實現提供了很大的靈活性,並