0

我几乎完成了这个程序,但是我收到一个我不确定如何处理的错误。我一直在寻找其他解决方案,但似乎没有任何帮助

我得到的错误是: error LNK2019: unresolved external symbol "void __cdecl deposit(class customer * const,int)" (?deposit@@YAXQAVcustomer@@H@Z) 在函数 _main C:\Users\D\ 中引用Desktop\Programs\Project 3\DProject3\Debug\DProject3.exe : 致命错误 LNK1120: 1 unresolved externals

它似乎与存款功能有关,但是我试图愚弄它无济于事,如果有人可以帮助它,将不胜感激,我有这个项目的 3 个文件

标题

#ifndef CUSTOMER_H
#define CUSTOMER_H

#include <string>

struct Date
{
int Day;
int Month;
int Year;
};

struct Name
{
std::string first_name;
std::string middle_name;
std::string last_name;
};

class customer
{ 
   private:
Date birth_date;
    Name name;
    float balance_saving, balance_checking, initial_saving, initial_checking, amount, account_type;

   public:
    customer(); //Customer constructor
    customer(Date birth_date, Name  name, float initial_saving, float initial_checking); // Customer constructor with info
    void withdraw(float amount, int account_type);
    void deposit(float amount, int account_type);
    float check_balance_saving();  // Print out the savings balance on screen
    float check_balance_checking();  // Print out the checking balance on screen
    void setDate(int Day, int Month, int Year);
    Date getDate();
    void setName(std::string first_name, std::string middle_name, std::string last_name);
    Name getName();
    void setSaving(float initial_saving);
    void setChecking(float initial_checking);
};

#endif

实施文件

#include "customer.h"

//Contructor without info / Default info
customer::customer()
{
birth_date.Day = 01;
birth_date.Month = 01;
birth_date.Year = 1901;
name.first_name = "N/A";
name.middle_name = "N/A";
name.last_name = "N/A";
balance_saving = 0;
balance_checking = 0;
}

// Constructor with user input data
customer::customer(Date DMY, Name FML, float initSav, float initCheck)
{
birth_date = DMY;
name = FML;
initial_saving = initSav;
initial_checking = initCheck;
}

void customer::withdraw(float amtW, int accW)
{
amount = amtW;
account_type = accW;
}

void customer::deposit(float amtD, int accD)
{
amount = amtD;
account_type = accD;
}

float customer::check_balance_saving()
{
return initial_checking;
}

float customer::check_balance_checking()
{
return initial_checking;
}

void customer::setDate(int Day, int Month, int Year)
{
birth_date.Day = Day;
birth_date.Month = Month;
birth_date.Year = Year;
}

Date customer::getDate()
{
return birth_date;
}

void customer::setName(std::string First, std::string Middle, std::string Last)
{
name.first_name = First;
name.middle_name = Middle;
name.last_name = Last;
}

Name customer::getName()
{
return name;
}

void customer::setSaving(float setSav)
{
initial_saving = setSav;
}

void customer::setChecking(float setCheck)
{
initial_checking = setCheck;
}

主要的

#include "customer.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

//Function prototypes
void withdraw (customer[], int);
void deposit (customer[], int);
void checkBal (customer[], int);
void newAccountFile (customer[], int);

int main ()
{
customer custInfo[49]; //Creates the customer array for info to be stored in
int customerAmt = 0; //Keeps track of the amount of customers in the array

ifstream customerfile ("account.dat"); //Open existing customer file
while (customerAmt < 2) //Loop to read the data from the existing file
{
    int D, M, Y; // Birth day, month, year
    string FN, MN, LN; //First name, middle name, last name
    float Save, Check; //Savings & Checking initial amount

    customerfile >> D;
    customerfile >> M;
    customerfile >> Y;
    customerfile >> FN;
    customerfile >> MN;
    customerfile >> LN;
    customerfile >> Save;
    customerfile >> Check;

    custInfo[customerAmt].setDate(D, M, Y);
    custInfo[customerAmt].setName(FN, MN, LN);
    custInfo[customerAmt].setSaving(Save);
    custInfo[customerAmt].setChecking(Check);

    customerAmt++;
}
customerfile.close(); //Close customer file and end file reading

//Variables for the User menu
int accountNumber, option, D1, M1, Y1;
string FN1, MN1, LN1;
float Save1, Check1;

//Loop used for User menu
do
{
    cout << "1. withdraw" << endl;
    cout << endl;
    cout << "2. Deposit" << endl;
    cout << endl;
    cout << "3. Check Balances" << endl;
    cout << endl;
    cout << "4. Create a New Account" << endl;
    cout << endl;
    cout << "0. Exit" << endl;
    cin >> option;

    if (option == 1) // Uses withdraw function
    {
        cout << "Enter the account number: ";
        cin >> accountNumber;
        withdraw(custInfo, accountNumber);
    }

    else if (option == 2) // Uses deposit function
    {
        cout << "Enter the account number: " << endl;
        cin >> accountNumber;
        deposit(custInfo, accountNumber);
    }

    else if (option == 3) // Uses check balance function
    {
        cout << "Enter the account number: " << endl;
        cin >> accountNumber;
        checkBal(custInfo, accountNumber);
    }

    else if (option == 4) //Option to handle creating a new account
    {
        cout << "Enter the new account information, starting with birth info: " << endl;
        cin >> D1 >> M1 >> Y1;
        custInfo[customerAmt].setDate(D1, M1, Y1);
        cout << endl;
        cout << "Enter the new customer's full name: " << endl;
        cin >> FN1 >> MN1 >> LN1;
        custInfo[customerAmt].setName(FN1, MN1, LN1);
        cout << endl;
        cout << "Enter the inital savings balance: " << endl;
        cin >> Save1;
        custInfo[customerAmt].setSaving(Save1);
        cout << endl;
        cout << "Enter the initial checking balance: " << endl;
        cin >> Check1;
        custInfo[customerAmt].setChecking(Check1);

        customerAmt++;
    }


}while (option != 0);

newAccountFile(custInfo, customerAmt); // Creates new updated account info file

system ("pause");
return 0;
}

void withdraw(customer custInfo[], int number)
{
float withdrawAmount;
int optionWit;
float tempSave;
float tempCheck;

cout << "1. Withdraw from savings" << endl;
cout << endl;
cout << "2. Withdraw from checking" << endl;
cin >> optionWit;
cout << "Enter the amount to be withdrawn: ";
cin >> withdrawAmount;

if (optionWit == 1)
{
    tempSave = custInfo[number].check_balance_saving() - withdrawAmount;
    custInfo[number].setSaving(tempSave);
}

else if (optionWit == 2)
{
    tempCheck = custInfo[number].check_balance_checking() - withdrawAmount;
    custInfo[number].setChecking(tempCheck);
}
}

void desposit(customer custInfo[], int number)
{
float depositAmount;
int optionDep;
float tempSave;
float tempCheck;

cout << "1. Deposit to savings" << endl;
cout << endl;
cout << "2. Deposit to checking" << endl;
cin >> optionDep;
cout << "Enter the amount to be deposited: ";
cin >> depositAmount;

if (optionDep == 1)
{
    tempSave = custInfo[number].check_balance_saving() + depositAmount;
    custInfo[number].setSaving(tempSave);
}

else if (optionDep == 2)
{
    tempCheck = custInfo[number].check_balance_checking() + depositAmount;
    custInfo[number].setChecking(tempCheck);
}

}

void checkBal(customer custInfo[], int number)
{
int optionBal;
cout << "1. Check savings balance" << endl;
cout << endl;
cout << "2. Check checking balance" << endl;
cin >> optionBal;

if (optionBal == 1)
{
    cout << "Current savings balance is: " << custInfo[number].check_balance_saving() << endl;
}

else if (optionBal == 2)
{
    cout << "Current checking balance is: " << custInfo[number].check_balance_checking() << endl;
}
}

void newAccountFile(customer custInfo[], int size)
{
int i;
Date tempDate;
Name tempName;
ofstream newAccountStorage;
newAccountStorage.open ("updated_account.dat"); //Opens new file for updated account info

for (i = 0; i < size; i++);
{
    tempDate = custInfo[i].getDate();
    tempName = custInfo[i].getName();
    newAccountStorage << tempDate.Day << endl;
    newAccountStorage << tempDate.Month << endl;
    newAccountStorage << tempDate.Year << endl;
    newAccountStorage << tempName.first_name << endl;
    newAccountStorage << tempName.middle_name << endl;
    newAccountStorage << tempName.last_name << endl;
    newAccountStorage << custInfo[i].check_balance_saving() << endl;
    newAccountStorage << custInfo[i].check_balance_checking() << endl;
}

newAccountStorage.close(); //Closes the file after writing new information
}
4

1 回答 1

4

您的函数定义中打印错误

void desposit(customer custInfo[], int number)
     ^^^^
于 2013-04-20T19:16:59.053 回答