鱼C论坛

 找回密码
 立即注册
查看: 2068|回复: 6

[已解决]求大神指导

[复制链接]
发表于 2019-12-22 11:51:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

GLXT.obj : error LNK2001: unresolved external symbol _head
Debug/GLXT.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

什么原因啊
最佳答案
2019-12-22 13:28:09
少了head()函数的代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-22 11:54:37 | 显示全部楼层
代码?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-22 11:57:01 | 显示全部楼层

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct wokertype

{
        char wokerbir;                                /*出生日期*/
        char workno[15];                        /*工号*/
        char worname[20];                        /*姓名*/
        char workwage;                                /*工资*/
    struct wokertype *pNext;
}WOKE,*PWOKE;

PWOKE pHead = NULL;
PWOKE pNew = NULL;
size_t iCount = 0;

void head();
void Menu();
void Quit();
void Add_Information();
void Delete_Information();
void Search_Information();


int main()
{
        Menu();
        return 0;
}


int MenuSelect();


typedef enum Menu
{
                                Exit,Add,Delete,Search
}MENU;


void Menu()
{
        switch (MenuSelect())                                                                                    //菜单选择
        {       
               
                                case Exit:                                                                                         //退出程序
                                        system("wok");
                                        head();
                                        Quit();                                                                                         //退出或返回主菜单
                                        break;
                                       
                                                                        case Add:                                                 //添加信息
                                                                                system("wok");
                                                                                Add_Information();
                                                                                Quit();
                                                                                break;
                                       
                                                                        case Delete:                                         //删除信息
                                                                                system("wok");
                                                                                Delete_Information();
                                                                                Quit();
                                                                                break;
                                       
                                                                        case Search:                                         //查询信息
                                                                                system("wok");
                                                                                Search_Information();
                                                                                Quit();
                                                                                break;


                                default:
                                        printf("选择错误,退出!");
                                        Quit();
                                        break;
        }
}


int MenuSelect()
{
        char c;
        do
        {
                system("wok");
                head();
                printf("\t\t\t\t   ═══════════════=════════\n");
                printf("\t\t\t\t  │                信息管理系统                 │\n");
                printf("\t\t\t\t   ════════=═══════════════\n");
                printf("\t\t\t\t   ┌────────────────-─────-┐\n");
                printf("\t\t\t\t   │                                                                                     │\n");
                printf("\t\t\t\t   │                1. 查询员工                         │\n");
                printf("\t\t\t\t   │                                                                                 │\n");
                printf("\t\t\t\t   │                2. 添加员工                         │\n");
                printf("\t\t\t\t   │                                            │\n");
                printf("\t\t\t\t   │                3. 删除员工                 │\n");
                printf("\t\t\t\t   │                                            │\n");
                printf("\t\t\t\t   │                4. 退出程序                 │\n");
                printf("\t\t\t\t   │                                            │\n");
                printf("\t\t\t\t   │                                            │\n");
                printf("\t\t\t\t   └──────────────────────┘\n");
                printf("\t\t\t\t\t\t  请您选择(1-4):");
                c = getchar();
        }
       
        while (c < '1' || c > '4');
        return c - '1';
}


void Quit()
{
        char tc;
        int i;
        printf("\n\t ");
        for (i = 0; i < 50; i++)
        {
                printf("* ");
        }
        printf("\n\n\t\t\t\t要返回登录界面按任意键\t\t退出程序请按Esc键\n");
        tc = getchar();
        if (tc == 27)        //esc键按下
        {
                exit(0);
        }
        //重新进入主菜单
        Menu();
}


void Add_Information()
{

        system("WOK");
        head();
        pNew = (PWOKE)malloc(sizeof(WOKE));
        printf("\t\t\t\t\t\t添加员工信息:\n\n\n\n\t\t\t\t\t\t工号: ");
        scanf("%s", pNew->workno);
        printf("\n\t\t\t\t\t\t姓名: ");
        scanf("%s", pNew->worname);
        printf("\n\t\t\t\t\t\t工资: ");
        scanf("%s", pNew->workwage);
        printf("\n\t\t\t\t\t\t出生日期: ");
        scanf("%s", pNew->wokerbir);
        pNew = NULL;
        iCount++;
}


void Delete_Information()
{
        char ID[10];
        char sc;
        PWOKE pCurrnode = pHead;        //指向头结点
        head();
        printf("\t\t\t\t\t\t删除信息:\n\n\n");
        printf("\t\t\t\t\t\t请输入员工工号:");
        scanf("%s", ID);
       
        //遍历信息
        while (pCurrnode->pNext != NULL)        //遍历输出所有
        {
                if (strcmp(pCurrnode->pNext->workno, ID) == 0)
                {
                        //信息库里面有要删除的信息
                        printf("\n\n\n\t\t\t\t\t要删除的员工信息...\n\n");
                        printf("\n\n\t\t\t\t\t工号\t姓名\t工资\t出生日期\n\n");
                        printf("\t\t\t\t\t %s\t %s\t %s\t %s\t\n",pCurrnode->pNext->workno,
                                pCurrnode->pNext->worname,pCurrnode->pNext->workwage,pCurrnode->pNext->wokerbir);
                        printf("\n\n\n\t\t\t\t\t是否删除该信息(y/Enter):");
                        sc = getchar();
                        if (sc == 'y' || sc == 'Y' || sc == 13)       
                        {
                                PWOKE pTemp = pCurrnode->pNext;       
                                pCurrnode->pNext = pTemp->pNext;       
                                free(pTemp);
                                iCount--;
                                printf("\n\n\n\t\t\t\t\t删除成功...\n\n");
                                return;
                        }
                        else{
                                printf("\n\n\n\t\t\t\t\t删除失败...\n\n");
                                return;
                        }
                }
                pCurrnode = pCurrnode->pNext;       
        }
        printf("\n\n\n\n\t\t\t\t\t   没有找到要删除的信息......\n\n");
}


void Search_Information()
{
        char ID[10];
        PWOKE pCurrnode;
        head();
        printf("\t\t\t\t\t\t查询信息:\n\n\n");
        printf("\t\t\t\t\t\t请输入员工工号:");
        scanf("%s", ID);
        pCurrnode = pHead->pNext;       
        while (pCurrnode != NULL)               
        {
                if (strcmp(pCurrnode->workno, ID) == 0)
                {
                        printf("\n\n\n\t\t\t\t\t要查询的学生信息...\n\n");
                        printf("\n\n\t\t\t\t\t工号\t姓名\t工资\t出生日期\n\n");
                        printf("\t\t\t\t\t %s\t %s\t %s\t %s\t\n", pCurrnode->workno,
                                pCurrnode->worname, pCurrnode->workwage,pCurrnode->wokerbir);
                        return;
                }
                pCurrnode = pCurrnode->pNext;       
        }
        pCurrnode = NULL;
        printf("\n\n\n\n\t\t\t\t\t   没有找到要查询的学生信息......\n\n");
}


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-22 13:28:09 | 显示全部楼层    本楼为最佳答案   
少了head()函数的代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-22 15:45:48 From FishC Mobile | 显示全部楼层
superbe 发表于 2019-12-22 13:28
少了head()函数的代码。

添加不了数据,能帮我再看看吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-22 22:11:00 | 显示全部楼层
本帖最后由 superbe 于 2019-12-22 22:48 编辑

是在windows下还是linux下运行的呢。这是我在windows+visual studio中测试的代码,可以正常运行。如果在linux下需要修改。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <conio.h>

  5. typedef struct wokertype
  6. {
  7.     char wokerbir[15];      /*出生日期*/
  8.     char workno[15];        /*工号*/
  9.     char worname[20];       /*姓名*/
  10.     char workwage[15];      /*工资*/
  11.     struct wokertype *pNext;
  12. }WOKE, *PWOKE;

  13. PWOKE pHead = NULL;
  14. PWOKE pNew = NULL;
  15. size_t iCount = 0;

  16. //void head();
  17. void Menu();
  18. void Quit();
  19. void Add_Information();
  20. void Delete_Information();
  21. void Search_Information();
  22. void free_memory();  //释放malloc分配的内存

  23. int main()
  24. {
  25.     Menu();
  26.     free_memory();
  27.     return 0;
  28. }

  29. int MenuSelect();

  30. typedef enum Menu
  31. {
  32.     Search, Add, Delete, Exit
  33. }MENU;

  34. void Menu()
  35. {
  36.     switch (MenuSelect())   //菜单选择
  37.     {
  38.     case Exit:              //退出程序
  39.         //system("wok");
  40.         //head();
  41.         //Quit();
  42.         printf("\n\t\t 程序结束.\n");
  43.         return;
  44.     case Add:               //添加信息
  45.         //system("wok");
  46.         Add_Information();
  47.         Quit();             //退出或返回主菜单
  48.         break;
  49.     case Delete:            //删除信息
  50.         //system("wok");
  51.         Delete_Information();
  52.         Quit();
  53.         break;
  54.     case Search:            //查询信息
  55.         //system("wok");
  56.         Search_Information();
  57.         Quit();
  58.         break;
  59.     default:
  60.         ;
  61.     }
  62. }

  63. int MenuSelect()
  64. {
  65.     char c;
  66.     //system("wok");
  67.     //head();
  68.     printf("\t\t ═══════════════=════════ \n");
  69.     printf("\t\t│               信息管理系统                  │\n");
  70.     printf("\t\t ════════=═══════════════ \n");
  71.     printf("\t\t┌────────────────-─────-┐\n");
  72.     printf("\t\t│                                            │\n");
  73.     printf("\t\t│                1. 查询员工                 │\n");
  74.     printf("\t\t│                                            │\n");
  75.     printf("\t\t│                2. 添加员工                 │\n");
  76.     printf("\t\t│                                            │\n");
  77.     printf("\t\t│                3. 删除员工                 │\n");
  78.     printf("\t\t│                                            │\n");
  79.     printf("\t\t│                4. 退出程序                 │\n");
  80.     printf("\t\t│                                            │\n");
  81.     printf("\t\t│                                            │\n");
  82.     printf("\t\t└──────────────────────┘\n");
  83.     printf("\t\t 请您选择(1-4):");
  84.     while ((c = getchar()) < '1' || c > '4'){
  85.         printf("\n\t\t 选择错误,请选择1-4:");
  86.         if (c == '\n') continue;
  87.         while(getchar() != '\n');
  88.     }
  89.     while (getchar() != '\n');
  90.     return c - '1';
  91. }

  92. void Quit()
  93. {
  94.     char tc;
  95.     int i;
  96.     printf("\n\t");
  97.     for (i = 0; i < 66; i++)
  98.     {
  99.         printf("*");
  100.     }
  101.     printf("\n\t\t 要返回登录界面按任意键\t\t退出程序请按Esc键\n\n");
  102.     tc = getch();
  103.     if (tc == 27)        //esc键按下
  104.     {
  105.         printf("\n\t\t 程序结束.\n");
  106.         exit(0);
  107.     }
  108.     //重新进入主菜单
  109.     Menu();
  110. }

  111. void Add_Information()
  112. {
  113.     PWOKE p;
  114.     //system("WOK");
  115.     //head();
  116.     if (pHead == NULL) {
  117.         pHead = (PWOKE)malloc(sizeof(WOKE));
  118.         pHead->pNext = NULL;
  119.     }
  120.     pNew = (PWOKE)malloc(sizeof(WOKE));
  121.     printf("\n\t\t 添加员工信息:\n");
  122.     printf("\n\t\t 工号: ");
  123.     scanf("%s", pNew->workno);
  124.     printf("\n\t\t 姓名: ");
  125.     scanf("%s", pNew->worname);
  126.     printf("\n\t\t 工资: ");
  127.     scanf("%s", pNew->workwage);
  128.     printf("\n\t\t 出生日期: ");
  129.     scanf("%s", pNew->wokerbir);
  130.     pNew->pNext = NULL;
  131.     //pNew = NULL;
  132.     for (p = pHead; p->pNext != NULL; p = p->pNext);
  133.     p->pNext = pNew;
  134.     printf("\n\t\t 添加成功...\n");
  135.     iCount++;
  136.     while (getchar() != '\n');
  137. }

  138. void Delete_Information()
  139. {
  140.     char ID[10];
  141.     char sc;
  142.     int found = 0;
  143.     if (iCount == 0) {
  144.         printf("\n\t\t 员工信息为空!\n");
  145.         return;
  146.     }
  147.     PWOKE pCurrnode = pHead;        //指向头结点
  148.     //head();
  149.     printf("\n\t\t 删除信息:\n");
  150.     printf("\n\t\t 请输入员工工号:");
  151.     scanf("%s", ID);
  152.     while (getchar() != '\n');
  153.     //遍历信息
  154.     while (pCurrnode->pNext != NULL)
  155.     {
  156.         if (strcmp(pCurrnode->pNext->workno, ID) == 0)
  157.         {
  158.             found = 1;
  159.             //信息库里面有要删除的信息
  160.             printf("\n\t\t 要删除的员工信息...\n");
  161.             printf("\n\t\t 工号\t姓名\t工资\t出生日期");
  162.             printf("\n\t\t %s\t %s\t %s\t %s\t\n", pCurrnode->pNext->workno,
  163.                 pCurrnode->pNext->worname, pCurrnode->pNext->workwage, pCurrnode->pNext->wokerbir);
  164.             printf("\n\t\t 是否删除该信息(y/Enter):");
  165.             sc = getchar();
  166.             if(sc != '\n') while (getchar() != '\n');
  167.             if (sc == 'y' || sc == 'Y' || sc == '\n')
  168.             {
  169.                 PWOKE pTemp = pCurrnode->pNext;
  170.                 pCurrnode->pNext = pTemp->pNext;
  171.                 free(pTemp);
  172.                 iCount--;
  173.                 printf("\n\t\t 删除成功...\n");
  174.                 return;
  175.             }
  176.             else {
  177.                 printf("\n\t\t 删除失败...\n");
  178.                 return;
  179.             }
  180.         }
  181.         pCurrnode = pCurrnode->pNext;
  182.     }
  183.     if(!found)
  184.         printf("\n\t\t 没有找到要删除的信息......\n");
  185. }

  186. void Search_Information()
  187. {
  188.     char ID[10];
  189.     PWOKE pCurrnode;
  190.     //head();
  191.     if (iCount == 0) {
  192.         printf("\n\t\t 员工信息为空!\n");
  193.         return;
  194.     }
  195.     printf("\n\t\t 查询信息:\n");
  196.     printf("\n\t\t 请输入员工工号:");
  197.     scanf("%s", ID);
  198.     pCurrnode = pHead->pNext;
  199.     while (pCurrnode != NULL)
  200.     {
  201.         if (strcmp(pCurrnode->workno, ID) == 0)
  202.         {
  203.             printf("\n\t\t 要查询的学生信息...\n");
  204.             printf("\n\t\t 工号\t姓名\t工资\t出生日期");
  205.             printf("\n\t\t %s\t %s\t %s\t %s\t\n", pCurrnode->workno,
  206.                 pCurrnode->worname, pCurrnode->workwage, pCurrnode->wokerbir);
  207.             return;
  208.         }
  209.         pCurrnode = pCurrnode->pNext;
  210.     }
  211.     pCurrnode = NULL;
  212.     printf("\n\t\t 没有找到要查询的学生信息......\n\n");
  213.     while (getchar() != '\n');
  214. }

  215. void free_memory()
  216. {
  217.     PWOKE p, q;
  218.     for (p = pHead; p != NULL; p = q) {
  219.         q = p->pNext;
  220.         free(p);
  221.     }
  222. }
复制代码


贴上代码后菜单就乱了,可以自己调整下。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-23 12:36:35 | 显示全部楼层
superbe 发表于 2019-12-22 22:11
是在windows下还是linux下运行的呢。这是我在windows+visual studio中测试的代码,可以正常运行。如果在lin ...

感谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 00:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表