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



我在银行上的项目代码无法正常工作。 当我在 Main 中运行时输入分支机构和部门信息(无效部门)时。并且我显示(void display)它们返回垃圾值,我认为这些值不会进入链表中。在代码块中制作的代码部分代码如下:

#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();
        }
    }
}

请帮忙。提前致谢

由于我看不到您的输入值和预期输出值,因此我不能确定。但是,由于您选择对所有内容都使用指针,因此我看到的一件事是部门函数中的此代码块:

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;
}

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新