我在银行上的项目代码无法正常工作。 当我在 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;
}
如果将局部变量的地址分配给参数指针,然后从函数外部引用它,则将丢失该数据。
我的建议是将部门的内容分配给开始对象,而不是使用本地指针地址。
这可能就是您看到垃圾数据的原因。
我很惊讶编译器没有对此说什么。