银行管理代码返回垃圾值(使用uml技术)

时间:2013-11-17 15:06:58

标签: class inheritance linked-list uml

我的银行项目代码无法正常运行。当我在主要运行(无效部门)时输入分支和部门信息。 并且我显示(无效显示)它们返回垃圾值,我认为这些值不在链表中。 代码块中的代码 以下代码的一部分:

#include<iostream>
#include<conio.h>
#include<cstdio>
#include<string.h>
#include<cstdlib>
#include<malloc.h>
using namespace std;

int code=1100;
int acc=9900;
int loan_no=3300;
int emp=10;

void createmenu();
void depositormenu();
void employee();
void loanmenu();
void operationmenu();

class branch
{
    char bname[20];
    int bcode;
    branch *link;
public:
    branch()
    {
        bcode=code++;
    }
    void input()
    {
        fflush(stdin);
        cout<<"\nEnter Branch Name: ";
        gets(bname);
    }
    void output()
    {
        cout<<"\nBranch Name: "<<bname;
        cout<<"\tBranch Code: "<<bcode;
    }
};

class department
{
    char dname[30];
    int dcode;
public:
    branch *b;
    department *link;
    department()
    {
        b=new branch;
    }
    void input()
    {
        b->input();
        fflush(stdin);
        cout<<"Enter Department Code: ";
        cin>>dcode;
        fflush(stdin);
        cout<<"Enter Department Name: ";
        gets(dname);
    }
    void output()
    {
        b->output();
        fflush(stdout);
        cout<<"\nDepartment Name: "<<dname;
        cout<<"\tDepartment Code: "<<dcode;
    }
};
void departments(department **);
void display(department **);
department *start,*p=NULL;

void departments(department **start)
{
    department *temp,*r,*temp2;
    temp2=*start;
    system("cls");
    cout<<"\nEnter data for Departments->";

    department d;
    if(*start==NULL)
    {
        temp=(department*)malloc(sizeof(department));
        d.input();
        temp=&d;
        temp->link=NULL;
        *start=temp;
    }
    else
    {
        temp=*start;
        while(temp->link!=NULL)
        {
            temp=temp->link;
        }
        r=(department*)malloc(sizeof(department));
        r->input();
        r->link=NULL;
        temp->link=r;
    }
}

void display(department **start)
{
    department *temp;
    temp=*start;
    fflush(stdout);
    if(temp==NULL)
    {
        cout<<"\nList not created!";
        cout<<"\tPress any key to return";
        getch();
    }
    else
    {
        while(temp)
        {
            temp->output();
            temp=temp->link;
            getch();
        }
    }
}

请帮助。 提前谢谢

1 个答案:

答案 0 :(得分:0)

由于我看不到您的输入值和预期输出值,我无法肯定地说。但是,既然您选择使用指针来处理所有事情,那么我看到的一件事就是使用部门函数中的这段代码:

department d;
if(*start==NULL)
{
    temp=(department*)malloc(sizeof(department));
    d.input();
    temp=&d;     // you are assigning the address of a local variable to temp, 
                 // and then assigning it to the argument pointer.
    temp->link=NULL;
    *start=temp;
}

如果将局部变量的地址分配给参数指针,然后从函数外部引用它,则会丢失该数据。

我的建议是将部门的内容分配给起始对象,而不是使用本地指针地址。

这可能是您看到垃圾数据的原因。

我很惊讶编译器没有对此说些什么。