|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
void in();
void show();
int menu();
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
struct student stu[50]; /////////// 错误在这里出现 !!!!!!!!!!!!!!!!!!!!!!! /////////////////////////
struct student{
int num;
char name[15];
double elec;
double expe;
double requ;
double sum;
};
int main()
{
system("color f0\n");
int n;
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case 1:{
in();
break;}
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}
/////////////////////////in
void in()
{
int i,m=0; //m是记录的条数
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("文件中没有任何记录!\n");
}
else
{
show(); //显示所有的信息
}
if((fp=fopen("data.txt","w+"))==NULL)
{
printf("文件不存在!\n");
return;
}
printf("输入学生信息:\n");
scanf("%s",ch);
while(strmcp(ch,"Y")==0||strcmp(ch,"y")==0) //注意!!相同返回0,此处是若选择yes
{
printf("输入学号num:\n");
scanf("%d",&stu[m].num);
//此处进行判断
for (i=0;i<m;i++)
{
if(stu[i].num == stu[m].num)
{
printf("学号已经存在!按任意键继续\n");
getch();
fclose(fp);
return;
}
}
printf("name:");
scanf("%s",stu[m].name);
printf("elective:");
scanf("%lf",&stu[m].elec);
printf("experiment:");
scanf("%lf",&stu[m].expe);
printf("required courese:");
scanf("%lf",&stu[m].requ);
stu[m].sum = stu[m].elec+stu[m].expe+stu[m].requ;
if (fwrite(&stu[m],LEN,1,fp)!=1)
{
printf("该文件不能被保存!\n");
getch();
}
else{
printf("%s被保存\n",stu[m].name);
m++;
}
printf("继续?y/n:\n");
scanf("%s",ch);
}
fclose(fp);
printf("OK1\n");
}
///////////////////////////menu
int menu ()
{
system("cls");
printf("\t-------学生信息管理系统------\n");
printf("\t\t\t 1、录入学生信息\n");
printf("\t\t\t 2、查找学生信息\n");
printf("\t\t\t 3、删除学生信息\n");
printf("\t\t\t 4、修改学生信息\n");
printf("\t\t\t 5、插入学生信息\n");
printf("\t\t\t 6、排序\n");
printf("\t\t\t 7、统计学生总数\n");
printf("\t\t\t 8、显示所有学生信息\n");
printf("\t\t\t 0、退出系统\n");
printf("\t\t请选择(0-8):");
return 0;
}
////////////////////////////show
void show()
{
FILE *fp;
int i,m=0;
fp = fopen("data.txt","rb"); //rb二进制读取
while(!feof(fp)) //非零为结尾
{
if(fread(&stu[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
printf("number name elective experiment required sum\t\n");
for(i=0;i<m;i++)
{
printf(FORMAT,DATA);
}
}
前十行里有一个错误;
这是一个学生信息管理系统,只是有录入信息和显示信息的功能,,但是在结构体数组那里出了一点问题大约在第十行,上面标出来了。。。。
什么问题啊,搞不清楚,按照例子来的啊;;;;;;;
先有结构体,才会有结构体数组好吧。!~把先后顺序搞清
struct student{
int num;
char name[15];
double elec;
double expe;
double requ;
double sum;
};
struct student stu[50];
|
|