Linking...
cc.obj : error LNK2001: unresolved external symbol _display
Debug/cc.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
cc.exe - 1 error(s), 0 warning(s)
这是我在编写一个人事档案管理系统是链接时提示的错误。本人是一个刚接触c语言不久的菜鸟,希望江湖上各路大虾指点一下小子导致这个错误的原因。谢谢啦!
源代码如下:#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define N 100
#define LEN sizeof(struct staff)
#define NAME "0901.dat"
struct staff /*结构体*/
{
char name[20]; /*员工姓名*/
char num[20]; /*员工序号*/
char sex[20]; /*性别*/
char age[20]; /*年龄*/
char remarks[20]; /*备注*/
}member[N];
/*函数声明*/
void menu();
void input();
void modify();
void search();
void del();
void save();
void display();
int load();
void save(int n);
void browse(int n);
void choice(int p);
/*主函数*/
void main()
{
printf(" 欢迎使用人事档案管理系统/n");
menu();
}
/*主菜单*/
void menu()
{
int n,w;
printf("/t/t/t/t **菜单功能**/n");
printf(" 1 输入数据 /n");
printf(" 2 修改数据 /n");
printf(" 3 查询数据 /n");
printf(" 4 删除数据 /n");
printf(" 5 保存数据 /n");
printf(" 6 显示数据 /n");
printf(" 7 退出系统 /n");
do
{
printf("选择你要的操作序号(1-7):[ ]/b/b");
scanf("%d",&n);
if(n<1||n>7)
{
w=1;
printf("输入错误请从新输入!/n");
}
else w=0;
} while(w==1);
switch(n)
{
case 1:input();break; /*调用输入函数*/
case 2:modify();break; /*调用修改函数*/
case 3:search();break; /*调用查询函数*/
case 4:del();break; /*调用删除函数*/
case 5:save(0);break; /*调用保存函数*/
case 6:display();break; /*调用显示函数*/
case 7:exit(0);break; /*退出系统*/
}
}
/*信息输入*/
void input()
{
int i,n,m;
printf("准备输入多少员工(1-%d)?:",N);
scanf("%d",&n);
printf("/n开始录入数据/n");
for(i=0;i<n;i++)
{
printf("第%d个员工的信息:/n",i+1);
printf("员工姓名:");
scanf("%s",&member[i].name);
printf("员工序号:");
scanf("%s",&member[i].num);
printf("性别:");
scanf("%s",&member[i].sex);
printf("年龄:");
scanf("%s",&member[i].age);
printf("备注:");
scanf("%s",&member[i].remarks);
}
printf("你输入员工信息为:/n");
browse(n);
save(n);
printf("是否返回主菜单?(1是 2否):");
scanf("%d",&m);
choice(m);
}
/*信息修改*/
void modify_1()
{
int i,n;
char name[20];
n=load();
printf("输入你要修改的员工姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
if(strcmp(member[i].name,name)==0)
{
printf("输入修改后的姓名:");
scanf("%s",&member[i].name);
printf("输入修改后的员工序号:");
scanf("%s",&member[i].num);
printf("输入修改后的性别:");
scanf("%s",&member[i].sex);
printf("输入修改后的年龄:");
scanf("%s",&member[i].age);
printf("输入修改后的备注:");
scanf("%s",&member[i].remarks);
}
save(n);
}
void modify()
{
int c,n,m;
do
{
modify_1();
printf("是否继续修改?(1是 2否):");
scanf("%d",&c);
}while(c==1);
printf("修改后的数据为:/n");
n=load();
browse(n);
printf("是否返回主菜单?(1是 2否):");
scanf("%d",&m);
choice(m);
}
/*信息查询*/
void search_1(char M[20])
{
int i,n;
n=load();
for(i=0;i<n;i++)
if(strcmp(member[i].name,M)==0)
printf("员工姓名:%s/t员工序号:%s/t性别:%s/t年龄:%s/t备注:%s/n",member[i].name,member[i].num,member[i].sex,member[i].age,member[i].remarks);
}
void search_2(char M[20])
{ int i,n;
n=load();
for(i=0;i<n;i++)
if(strcmp(member[i].num,M)==0)
printf("员工姓名:%s/t员工序号:%s/t性别:%s/t年龄:%s/t备注:%s/n",member[i].name,member[i].num,member[i].sex,member[i].age,member[i].remarks);
}
void search()
{
int c,m,w,p;
char name[20];
char num[20];
// char sex[20]; /*性别*/
// char age[20]; /*年龄*/
printf("选择排序方式:");
printf("1姓名/t2序号/t3性别/t4年龄/n");
do{
printf("选择你要操作的序号:[ ]/b/b");
scanf("%d",&p);
if(p<1||p>4)
{
w=1;printf("输入错误!请重新输入:/n");}
else w=0;
switch(p)
{
case 1: {printf("输入你要查询员工的姓名:");scanf("%s",name);search_1(name);};break;
case 2: {printf("输入你要查询员工的序号:");scanf("%s",num);search_2(num);};break;
// case 3: {printf("输入你要查询员工的性别:");scanf("%s",sex);search_3(sex);};break;
// case 4: {printf("输入你要查询员工的年龄:");scanf("%s",age);search_4(age);};break;
}
printf("是否继续?(1是 2否):");
scanf("%d",&c);} while(c==1);
printf("是否返回主菜单?(1是 2否):");
scanf("%d",&m);
choice(m);
}
/*信息删除*/
void del_1(char M[20])
{
int n,j,k;
n=load();
for(j=0;j<n;j++)
{
if(1)
{
if((strcmp(member[j].name,M)==0)&&(j!=(n-1)))
{
for(k=j+1;k<n;k++)
member[k-1]=member[k];
n--;
}
if((strcmp(member[j].name,M)==0)&&(j==(n-1)))
n--;}
else printf("你要删除的员工不存在!/n");
}
save(n);
}
void del()
{
int n,c,p;
char name[20];
do{
printf("输入你要删除员工姓名:");
scanf("%s",name);
del_1(name);
printf("是否继续?(1是 2否):");
scanf("%d",&c);
}while(c==1);
printf("删除后的信息为:/n");
n=load();
browse(n);
printf("是否返回主菜单?(1是 2否):");
scanf("%d",&p);
choice(p);
}
/*保存文件*/
void save( int n)
{
FILE *fp;
int i;
if((fp=fopen(NAME,"wb"))==NULL)
printf("不能打开文件!/n");
for(i=0;i<n;i++)
if(fwrite(&member[i],LEN,1,fp)!=1)
printf("文件写入错误!/n");
fclose(fp);
}
/*信息添加*/
void add_1()
{
FILE *fp;
struct staff New;
if((fp=fopen(NAME,"ab"))==NULL) /*以追加方式打开文件*/
{
printf("不能打开文件");
return;
}
printf("输入员工姓名:");
scanf("%s",New.name);
printf("输入员工序号:");
scanf("%s",New.num);
printf("输入性别:");
scanf("%s",New.sex);
printf("输入年龄:");
scanf("%s",New.age);
printf("输入备注:");
scanf("%s",&New.remarks);
if(fwrite(&New,LEN,1,fp)!=1)
printf("添加出错!/n");
fclose(fp);
}
void add()
{
int n,c,p;
do
{
printf("输入你要添加员工的信息:/n");
add_1();
printf("是否继续?(1是 2否):");
scanf("%d",&c);
}while(c==1);
printf("添加后的数据为:/n");
n=load();
browse(n);
printf("是否返回主菜单?(1 是2 否):");
scanf("%d",&p);
choice(p);
}
/*打开文件*/
int load()
{
FILE *fp;
int i;
if((fp=fopen(NAME,"rb"))==NULL)
printf("不能打开文件!/n");
for(i=0;!feof(fp);i++)
fread(&member[i],LEN,1,fp);
fclose(fp);
return (i-1);
}
/*浏览函数*/
void browse(int n)
{
int i;
printf("员工姓名/t员工序号/t性别/t年龄/t/t备注/n");
for(i=0;i<n;i++)
printf("%-s/t/t%-s/t/t%-s/t/t%-s/t/t%-s/n",member[i].name,member[i].num,member[i].sex,member[i].age,member[i].remarks);
}
/*判断函数*/
void choice(int p)
{
if(p==1)
menu();
else {printf("按任意键退出系统!/n");exit(0);
}
}