fig14-09

来源:互联网 发布:算法设计与分析课件 编辑:程序博客网 时间:2024/05/18 17:58

ClientData.h

#pragma once#include<string>class ClientData{public:ClientData(int = 0, const std::string & = "",const std::string & = "", double = 0.0);void setAccountNumber(int);int getAccountNumber() const;void setLastName(const std::string &);std::string getLastName() const;void setFirstName(const std::string &);std::string getFirstName() const;void setBalance(double);double getBalance() const;private:int accountNumber;char lastName[15];char firstName[10];double balance;};

fig14_09.cpp

#include<string>#include"ClientData.h"using namespace std;ClientData::ClientData(int accountNumberValue, const string &lastName,const string &firstName, double balanceValue):accountNumber(accountNumberValue), balance(balanceValue){setLastName(lastName);//原文为lastNameValue和firstnameValsetFirstName(firstName);}int ClientData::getAccountNumber() const{return accountNumber;}void ClientData::setAccountNumber(int accountNumberValue){accountNumber = accountNumberValue;}string ClientData::getLastName() const{return lastName;}void ClientData::setLastName(const string &lastNamestring){int length = lastNamestring.size();length = (length < 15 ? length : 14);lastNamestring.copy(lastName, length);lastName[length] = '\0';}string ClientData::getFirstName() const{return firstName;}void ClientData::setFirstName(const string &firstNameString){int length = firstNameString.size();length = (length < 10 ? length : 9);firstNameString.copy(firstName, length);firstName[length] = '\0';}double ClientData::getBalance() const{return balance;}void ClientData::setBalance(double balanceValue){balance = balanceValue;}

fig14_11.cpp

#include<iostream>#include<fstream>#include<cstdlib>#include"ClientData.h"using namespace std;int main(){ofstream outCredit("credit.dat", ios::out | ios::binary);if (!outCredit){cerr << "File could not be opened." << endl;exit(EXIT_FAILURE);}ClientData blankClient;for (int i = 0; i < 100; ++i)outCredit.write(reinterpret_cast <const char*>(&blankClient),sizeof(ClientData));}

fig14_12.cpp

#include<iostream>#include<fstream>#include<cstdlib>#include"ClientData.h"using namespace std;int main(){int accountNumber;string lastName;string firstName;double balance;fstream outCredit("credit.dat", ios::in | ios::out | ios::binary);if (!outCredit){cerr << "File could not be opended." << endl;exit(EXIT_FAILURE);}cout << "Enter account number (1 to 100, 0 to end input)\n?";ClientData client;cin >> accountNumber;while (accountNumber > 0 && accountNumber <= 100){cout << "Enter lastName. firstName, balance\n?";cin >> lastName;cin >> firstName;cin >> balance;client.setAccountNumber(accountNumber);client.setLastName(lastName);client.setFirstName(firstName);client.setBalance(balance);outCredit.seekp((client.getAccountNumber() - 1) *sizeof(ClientData));outCredit.write(reinterpret_cast<const char *>(&client),sizeof(ClientData));cout << "Enter account number\n? ";cin >> accountNumber;}}


原创粉丝点击