小David 2021-06-15 23:48 采纳率: 100%
浏览 40
已结题

反复报错LNK1120和LNK1120,还是小白的我无法解决……请求大家指导一下我


错误    LNK2019    无法解析的外部符号 "void __cdecl total(void)" (?total@@YAXXZ),函数 _main 中引用了该符号    学生信息管理系统    C:\Users\hau'wei\Desktop\学生信息管理系统\源.obj    1    

错误    LNK2019    无法解析的外部符号 _WinMain@16,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号    学生信息管理系统    C:\Users\hau'wei\Desktop\学生信息管理系统\MSVCRTD.lib(exe_winmain.obj)    1 

 LNK1120    2 个无法解析的外部命令    学生信息管理系统    C:\Users\hau'wei\Desktop\学生信息管理系统\Debug\学生信息管理系统.exe    1   
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1ld%-12.1ls%-12.1s%-12.1d\n%-12.1s\n%-12.1s\n%-12.1d\n%-12.1s\n%-12.1d\n%-12.1s\n\n"
#define DATA stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].born,stu[i].phone,stu[i].college,stu[i].subject,stu[i].home,stu[i].scroes.num,stu[m].scroes.scroes,stu[i].scroes.classes.cname,stu[i].scroes.classes.credit,stu[i].scroes.classes.tname
 
struct classes{
    int cno;                //课程代码
    char cname[30];            //课程名称
    int credit;                //课程学分
    char tname[30];            //任课老师
};
struct scroes{
    int num;                //学号
    int cno;                //课程代码
    int scroes;                //课程成绩
    struct classes classes;
};
struct student {
    int num;                //学号
    char name[30];            //姓名
    int age;                //年龄
    char sex[5];            //性别
    char born[30];            //出生年月
    int phone[30];            //手机号
    char college[30];        //学院
    char subject[30];        //专业
    char home[50];            //家庭住址
    struct scroes scroes;
};

struct student stu[10];
void in();
void del();
void modify();
void search();
void show();
void total();

//菜单
void menu() {
    system("cls");
    printf("\n\n\n\n");
    printf("\t|-------------------学生信息管理系统-------------------|\n");
    printf("\t|                                                         |\n");
    printf("\t|                    1、录入学生信息                         |\n");
    printf("\t|                    2、删除学生信息                      |\n");
    printf("\t|                    3、修改学生信息                      |\n");
    printf("\t|                    4、查询学生信息                      |\n");
    printf("\t|                    5、显示所有学生信息                  |\n");
    printf("\t|                    6、统计学生总数                      |\n");
    printf("\t|                                                         |\n");
    printf("\t|------------------------------------------------------|\n\n");
    printf("                      请选择(0-6):");
}

//主函数
void main() {            //主函数
    system("color f0\n");
    int n;
    menu();
    scanf("%d", &n);
    while (n) {
        switch (n)
        {
        case 1:in(); break;
        case 2:del(); break;
        case 3:modify(); break;
        case 4:search(); break;
        case 5:show(); break;
        case 6:total(); break;
        default:
            break;
        }
        getch();
        menu();
        scanf("%d", &n);
    }
}

//录入学生信息
void in() {
    int i, m = 0;
    char ch[2];
    FILE* fp;
    if((fp = fopen("data.txt", "a+")) == NULL) {
        printf("文件不存在!\n");
        return;
    }
    while (!feof(fp)) {
        if (fread(&stu[m], LEN, 1, fp) == 1) {
            m++;
        }
    }
    fclose(fp);
    if (m == 0) {
        printf("文件中没有记录");
    }
    else
    {
        show();
    }
    if ((fp = fopen("data.txt", "wb")) == NULL) {
        printf("文件不存在!\n");
        return;
    }
    printf("请输入学生信息(y/n):");
    scanf("%s", ch);
    while (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) {
        printf("学号:");            //输入学号
        scanf("%d", &stu[m].num);
        for(i=0; i<m; i++)
            if (stu[i].num == stu[m].num) {
                printf("该学号已经存在,按任意键继续!");
                getch();
                fclose;
                return;
            }
        printf("姓名:");
        scanf("%s", &stu[m].name);
        printf("年龄:");
        scanf("%d", &stu[m].age);
        printf("性别:");
        scanf("%s", &stu[m].sex);
        printf("出生年月:");
        scanf("%s", &stu[m].born);
        printf("手机号:");
        scanf("%d", &stu[m].phone);
        printf("学院:");
        scanf("%s", &stu[m].college);
        printf("专业:");
        scanf("%s", &stu[m].subject);
        printf("家庭住址:");
        scanf("%s", &stu[m].home);
        printf("课程代码:");
        scanf("%d", &stu[m].scroes.num);
        printf("课程成绩:");
        scanf("%d", &stu[m].scroes.scroes);
        printf("课程名称:");
        scanf("%s", &stu[m].scroes.classes.cname);
        printf("课程学分:");
        scanf("%d", &stu[m].scroes.classes.credit);
        printf("任课老师:");
        scanf("%d", &stu[m].scroes.classes.tname);
        if (fwrite(&stu[m], LEN, 1, fp) != 1) {
            printf("不能保存!");
            getch();
        }
        else {
            printf("%s 被保存!\n", stu[m].name);
            m++;
        }
        printf("继续?(y/n):");
        scanf("%s", ch);
    }
    fclose(fp);
    printf("OK!\n");
}

//修改学生信息
void modify() {
    FILE* fp;
    struct student t;
    int i = 0, j = 0, m = 0, snum;
    if ((fp = fopen("data.txt", "a+")) == NULL) {
        printf("文件不存在!\n");
        return;
    }
    while(!feof(fp))
        if (fread(&stu[m],LEN,1,fp)==1)
        {
            m++;
        }
    if (m==0)
    {
        printf("文件中没有记录!\n");
        fclose(fp);
        return;
    }
    show();
    printf("请输入修改的学生的学号:");
    scanf("%d", &snum);
    for(i=0; i<m; i++)
        if (snum == stu[i].num) {
            printf("找到了这名学生,可以修改他的信息!\n");
            printf("姓名:");
            scanf("%s", &stu[m].name);
            printf("年龄:");
            scanf("%d", &stu[m].age);
            printf("性别:");
            scanf("%s", &stu[m].sex);
            printf("出生年月:");
            scanf("%s", &stu[m].born);
            printf("手机号:");
            scanf("%d", &stu[m].phone);
            printf("学院:");
            scanf("%s", &stu[m].college);
            printf("专业:");
            scanf("%s", &stu[m].subject);
            printf("家庭住址:");
            scanf("%s", &stu[m].home);
            printf("课程代码:");
            scanf("%d", &stu[m].scroes.num);
            printf("课程成绩:");
            scanf("%d", &stu[m].scroes.scroes);
            printf("课程名称:");
            scanf("%s", &stu[m].scroes.classes.cname);
            printf("课程学分:");
            scanf("%d", &stu[m].scroes.classes.credit);
            printf("任课老师:");
            scanf("%d", &stu[m].scroes.classes.tname);
            printf("修改成功!");
            if ((fp = fopen("data.txt", "wb")) == NULL) {
                printf("不能打开文件\n");
                return;
            }
            for(j=0; j<m; j++)
                if (fwrite(&stu[j], LEN, 1, fp) != 1) {
                    printf("不能保存文件\n");
                    getch();
                }
            fclose(fp);
            break;
        }
    if (i == m) {
        printf("没有找到这名学生!\n");
        }
}

//删除学生信息
void del() {
    FILE* fp;
    int snum, i, j, m = 0;
    char ch[2];
    if ((fp = fopen("data.txt", "a+")) == NULL) {
        printf("文件不存在!\n");
        return;
    }
    while (!feof(fp)) {
        if (fread(&stu[m], LEN, 1, fp) == 1) {
            m++;
        }
    }
    fclose(fp);
    printf("请输入学生学号:");
    scanf("%d", &snum);
    for (i = 0; i < m; i++) 
        if (snum == stu[i].num) {
            printf("找到了这条记录,是否删除?");
            scanf("%s", ch);
            if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0) {
                for (j = i; j < m; j++)
                stu[j] = stu[j + 1];
                m--;
                if ((fp = fopen("data.txt", "wb")) == NULL) {
                    printf("文件不存在\n");
                    return;
                }
                for(j=0; j<m; j++)
                    if (fwrite(&stu[j], LEN, 1, fp) != 1) {
                        printf("不能保存!\n");
                            getch();
                    }
                fclose(fp);
                printf("删除成功!\n");
            }
            else {
                printf("找到了记录,选择不删除");
            }
            break;
        }
        else { 
            printf("没有找到该名学生!\n");
        }
}

//查询学生信息
void search() {
    FILE* fp;
    int snum, i, m = 0;
    if ((fp = fopen("data.txt", "a+")) == NULL) {
        printf("文件不存在!\n");
        return;
    }
    while (!feof(fp)) {
        if (fread(&stu[m], LEN, 1, fp) == 1) {
            m++;
        }
    }
    fclose(fp);
    if (m == 0) {
        printf("文档没有记录!\n");
        return;
    }
    printf("请输入学号:");
    scanf("%d", &snum);
    for(i=0; i<m; i++)
        if (snum == stu[i].num) {
            printf("学号、姓名、年龄、性别、出生年月、手机号、学院、专业、家庭住址、课程成绩、课程名称、课程学分、任课教师");
            printf(FORMAT, DATA);
            break;
        }
    if (i == m)printf("没有找到这名学生");
}

//显示学生信息
void show() {
    FILE* fp;
    int i, m = 0;
    fp = fopen("data.txt", "rb");
    while (!feof(fp)) {
        if (fread(&stu[m], LEN, 1, fp) == 1)
            m++;
    }
    fclose(fp);
    printf("学号、姓名、年龄、性别、出生年月、手机号、学院、专业、家庭住址、课程成绩、课程名称、课程学分、任课教师");
    for(i=0; i<m ;i++)
        printf(FORMAT, DATA);
}

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-16 02:25
    关注

    total函数没写函数体,只有函数声明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月7日

悬赏问题

  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员