| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:职工信息管理系统,查询调用函数问题
只看楼主 加入收藏
zeko
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2011-5-24
结帖率:0
收藏
 问题点数:0 回复次数:0 
职工信息管理系统,查询调用函数问题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct worker
{
    int id;
    char name[20];
    char sex[3];
    int age;
    char edu[50];
    int wages;
    char adr[255];
    char phone[13];
}WORKER, *PWORKER;
//typedef struct WORKER *PWORKER;
typedef struct link
{
    WORKER w;
    struct link *next;
}LINK, *PLINK;
//typedef struct LINK *PLINK;

/*创建职工信息链表*/
PLINK create()
{
    PLINK p=(PLINK)malloc(sizeof(LINK));
    if(NULL!=p)
    {
        p->next=NULL;
        return p;
    }
    printf("内存不足!\n");
    return NULL;
}

/*显示程序界面文字*/
void message()
{   system("color 09f");/*设置当前窗口的背景色和前景色*/
/* 0 = 黑色   8 = 灰色
1 = 蓝色   9 = 淡蓝色
       2 = 绿色   A = 淡绿色
       3 = 浅绿色 B = 淡浅绿色
       4 = 红色   C = 淡红色
       5 = 紫色   D = 淡紫色
       6 = 黄色   E = 淡黄色
       7 = 白色   F = 亮白色*/
    system("cls");
    printf("\t\t************************************************\n\n");
    printf("\t\t>>>>>>>>>>>>>>欢迎进入职工管理系统<<<<<<<<<<<<<<\n\n");
    printf("\t\t************************************************\n\n");
    printf("\t\t **************  Choose Function  *************\n\n");
    printf("\t\t ************    帮助     请输入:0************\n\n");
    printf("\t\t ************录入职工信息 请输入:1************\n\n");
    printf("\t\t ************浏览职工信息 请输入:2************\n\n");
    printf("\t\t ************查询职工信息 请输入:3************\n\n");
    printf("\t\t ************删除职工信息 请输入:4************\n\n");   
    printf("\t\t ************修改职工信息 请输入:5************\n\n");
    printf("\t\t ************    清屏     请输入:6************\n\n");   
    printf("\t\t ************    退出     请输入:-1***********\n\n");
    printf("\t\t************************************************\n\n");
    printf("\t\t************************************************\n\n");
}

/*录入职工信息*/
int add(PLINK p)
{
    PLINK h = NULL;
    PLINK q=(PLINK)malloc(sizeof(LINK));
    if(NULL==q)
    {
        printf("录入失败提示:内存不足!\n");
        return -1;
    }
    printf("请输入职工号(数字):");
    scanf("%d",&q->w.id);
    h=p->next;
    while(h)
    {
        if(h->w.id==q->w.id)
        {
            free(q);
            printf("录入失败提示:此职工号已经存在!\n");
            return -1;
        }
        h=h->next;
    }
    printf("请输入职工姓名(文字):");
    scanf("%s",&q->w.name);
    printf("请输入职工性别(文字):");
    scanf("%s",&q->w.sex);
    printf("请输入职工年龄(数字):");
    scanf("%d",&q->w.age);
    printf("请输入职工学历(文字):");
    scanf("%s",&q->w.edu);
    printf("请输入职工工资(数字):");
    scanf("%d",&q->w.wages);
    printf("请输入职工住址(文字):");
    scanf("%s",&q->w.adr);
    printf("请输入职工电话(文字):");
    scanf("%s",&q->w.phone);
    q->next=p->next;
    p->next=q;
    printf(".^_^.录入成功!.^_^.\n");
    return -1;
}

/*按工号查询*/
PLINK findid(PLINK p,int id)
{
message();
printf("按工号查询\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
while(NULL!=p->next)
{
if(p->next->w.id==id)
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
return p;
}
p=p->next;
}
printf(".^_^.查询结束!.^_^.\n");
return NULL;
}
/*按学历查询*/
PLINK find_sr(PLINK p,char *str)
{
message();
printf("按学历查询\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
while(NULL!=p->next)
{
if(0==strcmp(p->next->w.edu,str))
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
return p;
}
p=p->next;
}
printf(".^_^.查询结束!.^_^.\n");
return NULL;
}

/*按姓名查询*/
PLINK findname(PLINK p,char *name)
{
message();
printf("按姓名 查询\n");
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
while(NULL!=p->next)
{
if(0==strcmp(p->next->w.name,name))
{
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
return p;
}
p=p->next;
}
printf(".^_^.查询结束!.^_^.\n");
return NULL;
}

/*按职工号删除职工信息*/
int del(PLINK p,int id)
{
message();
printf("按职工号删除职工信息\n");
while(NULL!=p->next)
{
if(p->next->w.id==id)
{
PLINK q=p->next;
p->next=p->next->next;
free(q);
printf(".^_^.删除成功!.^_^.\n");
return 1;
}
p=p->next;
}
printf("没有你输入的职工号!\n");
return -1;
}

/*程序结束释放内存*/
void release(PLINK p)
{
PLINK q;
while(NULL!=p->next)
{
q=p;
p=p->next;
free(q);
}
free(p);
}

//浏览职工信息  
void show(PLINK p)  
{  
message();  
printf("浏览职工信息\n");  
printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");  
while(NULL!=p->next)  
{  
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",  
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.age,  
p->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);  
p=p->next;  
}  
printf("显示完毕!\n");  
}  

/*查询调用*/
void search()
{
int id;
char name[20];
char str[20];
PLINK pworker;
int l;
printf("\t\t\t\t*姓名查找按:1*\n");
printf("\t\t\t\t*学历查找按:2*\n");
printf("\t\t\t\t*职工号查按:3*\n");
scanf("%d",&l);
if(l>0&&l<4)
{switch(l)
{
case 1:printf("请输入要查询的职工姓名:");
       scanf("%s",name);
       findname(pworker,name);
       break;
case 2:printf("请输入要查询的职工学历: ");
       scanf("%s", str);
       find_sr(pworker, str);
       break;
case 3:printf("请输入要查询的职工号:");
       scanf("%d",&id);
       findid(pworker,id);
       break;
}
printf("\n\n选择完毕!!!");
}
else printf("\t\t\t\t输入有误!!!");
}

/*修改职工信息*/
int modify(PLINK p)
{   int id;
    PLINK q;
    PLINK h = NULL;
    printf("请输入职工号(数字):");
    scanf("%d",&id);
    h=p->next;
    while(h)
    {
        if(h->w.id==id)
        {
            break;
        }
        h=h->next;
    }
    if (h == NULL)
    {
        printf("找不到此职工,请重试\n");
        return -1;
    }
    printf("请输入职工姓名(文字):");
    scanf("%s",&h->w.name);
    printf("请输入职工性别(文字):");
    scanf("%s",&h->w.sex);
    printf("请输入职工年龄(数字):");
    scanf("%d",&h->w.age);
    printf("请输入职工学历(文字):");
    scanf("%s",&h->w.edu);
    printf("请输入职工工资(数字):");
    scanf("%d",&h->w.wages);
    printf("请输入职工住址(文字):");
    scanf("%s",&h->w.adr);
    printf("请输入职工电话(文字):");
    scanf("%s",&h->w.phone);
    q->next=p->next;
    p->next=q;
    printf(".^_^.修改成功!.^_^.\n");
    return -1;
}

int main()
{
   
int cmd=0;
int id;
char name[20];
char str[20];
PLINK pworker;
if(!(pworker=create()))
{
exit(0);
}
while(cmd!=-1)
{
switch(cmd)
{
case 0: message(); break;
case 1: add(pworker); break;
case 2: show(pworker); break;
case 3: search(); break;
case 4: printf("请输入要删除的职工号:");
        scanf("%d",&id);
        del(pworker,id);
        break;
case 5: modify(pworker); break;
case 6: message(); break;
}
printf("请输入操作命令数字:\n");
scanf("%d",&cmd);
}
printf(".^_^.谢谢使用!.^_^.\n");
release(pworker);
return 0;
}

程序运行到查找和修改的时候总是出现问题,应该是查找调用中PLINK pworker没有初始化的问题,不知道怎么解决啊,求高手指点···急啊,在线等···
搜索更多相关主题的帖子: 管理系统 
2011-07-05 09:49
快速回复:职工信息管理系统,查询调用函数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030151 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved