反复报错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);
}
total函数没写函数体,只有函数声明
报错LNK2019和LNK1120,标题打错了
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m