学生信息管理
发表在C语言图书答疑 2012-10-25
是否精华
版块置顶:
你好 关于c语言项目案例分析那本书上191页的学生信息管理系统里面
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-30s%-30s%-30s%-30s\n"
#define DATA stu[i].num,stu[i].name,stu[i].bookname1,stu[i].bookname2,stu[i].bookname3,stu[i].bookname4

struct student
{
   int num;
   char name[15];
   char bookname1[30];
   char bookname2[30];
   char bookname3[30];
   char bookname4[30];
};
struct student stu[50];
void search();
void menu();
void findbname();
void findbnum();
void findbwriter();

void menu()
{
   system("cls");
   printf("\n\n\n");
   printf("\t\t*********欢迎进入图书馆系统*********\n");
   printf("\t\t\t\t\t\t0.学生登录                  \n");
   printf("\t\t\t\t\t图书查询:1.图书名查询        \n");
   printf("\t\t\t\t\t          2.索书号查询        \n");
   printf("\t\t\t\t\t          3.作者查询          \n");
   printf("请选择序号(0-3):");
}
void main()
{  
   int n;
   menu();
   scanf("%d",&n);
   while(n)
   {switch(n)
   {case 0:search();break;
    case 1:findbname();break;
case 2:findbnum();break;
case 3:findbwriter();break;
default:break;
   }
   getch();
   menu();
   scanf("%d",&n);
   }
}

void search()
{
   FILE *fp;
   char *stu;
   int snum,i,m=0;
   char ch[2];
   if((fp=fopen("student.txt","rb"))==NULL)
   {
   printf("文件无法打开\n");
   return;
   }
   while(!feof(fp))
   if(fread(&stu[m],LEN,1,fp)==1)
   m++;
   fclose(fp);
   if(m==0)
   {
   printf("no record!\n");
   return;
   }
   printf("请输入学号:");
   scanf("%d,&snum");
   for(i=0;i<m;i++)
[font color=#FF0000]   if(snum==stu[i].num)[/font]
   {
   printf("number   name  bookname1     bookname2     bookname3      bookname4\t\n");
   printf(FORMAT,DATA);
   break;
   }
}
if(i==m)
printf("学号不存在!\n");
}
我调试上面的程序出现错误 error C2228: left of '.num' must have class/struct/union type
这是为什么呀
分享到:
精彩评论 2
C语言
学分:0 LV1
TA的每日心情
无聊
2021-11-12 22:00:04
2012-10-26
沙发
删除 char *stu;
stu 原本是全局变量,学生结构体数组
兰欣儿
学分:0 LV1
TA的每日心情
开心
2020-12-11 11:08:01
2012-10-29
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
删除 char *stu;
stu 原本是全局变量,学生结构体数组
[/FIELDSET]

回复:
  谢谢你 后来改过之后又出现了新的错误  编译的时候没有显示有错误 执行的时候就跳出来一个错  不知道怎么改  求指导

#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-30s%-30s%-30s%-30s\n"
#define DATA stu[i].num,stu[i].name,stu[i].bookname1,stu[i].bookname2,stu[i].bookname3,stu[i].bookname4
#define LEN1 sizeof(struct book)
#define FORMAT1 "%-8d%-30s%-30s\n"
#define DATA1 b[i].bnum,b[i].bname,b[i].bwriter

struct student
{
   int num;
   char name[15];
   char bookname1[30];
   char bookname2[30];
   char bookname3[30];
   char bookname4[30];
};
struct book
{
   int bnum;
   char bname[30];
   char bwriter[30];
};
struct student stu[50];
struct book b[];
void search();
void menu();
//void findbname();
void findbnum();
//void findbwriter();

void menu()
{
   system("cls");
   printf("\n\n\n");
   printf("\t\t*********欢迎进入图书馆系统*********\n");
   printf("\t\t\t\t\t\t0.学生登录                  \n");
   printf("\t\t\t\t\t图书查询:1.图书名查询        \n");
   printf("\t\t\t\t\t          2.索书号查询        \n");
   printf("\t\t\t\t\t          3.作者查询          \n");
   printf("请选择序号(0-3):");
}
void main()
{  
   int n;
   menu();
   scanf("%d",&n);
   while(n)
   {switch(n)
   {case 0:search();break;
   // case 1:findbname();break;
case 2:findbnum();break;
// case 3:findbwriter();break;
default:break;
   }
   getch();
   menu();
   scanf("%d",&n);
   }
}

void search()
{
   FILE *fp;

   int snum,i,m=0;
   //char ch[2];
   if((fp=fopen("student.txt","rb"))==NULL)
   {
   printf("文件无法打开\n");
   return;
   }
   while(!feof(fp))
   if(fread(&stu[m],LEN,1,fp)==1)
   m++;
   fclose(fp);
   if(m==0)
   {
   printf("no record!\n");
   return;
   }
   printf("请输入学号:");
   scanf("%d",&snum);
   for(i=0;i<m;i++)
   if(snum==stu[i].num)
   {
   printf("number   name  bookname1     bookname2     bookname3      bookname4\t\n");
   printf(FORMAT,DATA);
   break;
   }

if(i==m)
printf("学号不存在!\n");
}

void findbnum()

 FILE *fp1;
   int bnum,i,n=0;
  // char ch[2];
   if((fp1=fopen("book.txt","rb"))==NULL)
   {
   printf("文件无法打开\n");
   return;
   }
   while(!feof(fp1))
   if(fread(&b[n],LEN1,1,fp1)==1)
   n++;
   fclose(fp1);
   if(n==0)
   {
   printf("no record!\n");
   return;
   }
   printf("请输入索书号:");
   scanf("%d,&bnum");
   for(i=0;i<n;i++)
   if(bnum==b[i].bnum)
   {
   printf("number    bookname         bwriter    \t\n");
   printf(FORMAT1,DATA1);
   break;
   }

if(i==n)
printf("索书号不存在!\n");
}


错误:xueshengchaxun.obj : error LNK2001: unresolved external symbol "struct book * b" (?b@@3PAUbook@@A)
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照