lalifuli 2021-01-16 19:22 采纳率: 0%
浏览 14

为什么我没输入这些数它怎么会自动出来?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define QWER1 "|学号 |姓名|身份证号|专业|学校|\n"
#define QWER2 "|%d|%8s|%d|%8s|%8s|\n"
#define QWER3 p->num,p->name,p->id,p->major,p->school
typedef struct student
{
	int num;               
	char name[10];        
	int id;
	char major[8];
	char school[8];
}XUEJI;
typedef struct xue
{   XUEJI*PHead;
	int count;
}lali;
void Menu();
void luru(lali*pi);   //录入
void xiansi(lali*pi); //显示 
void shanchu(lali*pi);//删除
void chazhao(lali*pi);//查找
void xiugai(lali*pi); //修改
void Load(lali*pi);         
void Save(lali*pi);          

int main()
{   int m;
    XUEJI*pstu;
    lali pi;
    pstu=(XUEJI*)malloc(N*sizeof(XUEJI));
    pi.PHead=pstu; 
    pi.count=0;
    printf("欢迎使用学籍查询系统\n");
	printf("请输入密码:");
	int i=0;char b[10];
	for(i=0;i<3;i++)
	{gets(b);
	if(strcmp(b,"lali")!=0)
	{if(i==2)
	{printf("密码错误超过三次,退出系统");
	return 0;}
    printf("密码错误,请重新输入");}
	else if(strcmp(b,"lali")==0)
    {printf("密码正确,恭喜进入查询系统");
	system("pause");
    break;}}
do
{ Menu();
 printf("请选择[0~5]   ");
 scanf("%d",&m);
 switch(m)
 {case 0:return 0;break;
  case 1:luru(&pi);break;
  case 2:xiansi(&pi);system("pause");break;
  case 3:shanchu(&pi);break;
  //case 4:chazhao();break; 
  //case 5:xiugai();break;
}
}while(1);
pstu=pi.PHead;
free(pstu);
return 0;
}
void Menu()
{system("cls");
 printf("*****主菜单*****\n");
 printf("* 0.退出系统 *\n");
 printf("* 1.输入学籍 *\n");
 printf("* 2.显示学籍 *\n");
 printf("* 3.删除记录 *\n");
 printf("* 4.查找学籍 *\n");
 printf("* 5.修改学籍 *\n");	
}


void luru(lali*pi)
{int num;
  XUEJI *pstu,*p;
  int a=0,i;
  system("cls"); 
  printf("学生学籍管理系统\n");
  do{
  Load(pi);
  pstu=pi->PHead+pi->count;
   p=pi->PHead;    
  printf("请输入学号(按0返回菜单)"); 
  scanf("%d",&num);
  if(num==0)
  break; 
  for(i=1;i<=pi->count;i++)
  {if(num==p->num)
   {printf("该学号已经存在,请重新输入:");
    a=1;
    break;
	}
    p++;   
  }
  if(a)
    {a=0;
	continue;}
    else if(num!=0)
    pstu->num=num;
    printf("请输入姓名:");
    scanf("%s",pstu->name);
    printf("请输入身份证号:");
    scanf("%d",&pstu->id);
    printf("请输入专业:");
    scanf("%s",pstu->major);
    printf("请输入学校:");
    scanf("%s",pstu->school);
    pi->count++;
    Save(pi);
}while(1); 
}

void xiansi(lali*pi)
{int i;
 XUEJI*p;
 system("cls"); 
 printf("显示学籍\n"); 
Load(pi);
 p=pi->PHead;    
 if(pi->count==0)//为什么count!=0
 {printf("暂无学籍记录");
  return;
 }
 printf("一共有%d条学生记录\n",pi->count);
{for(i=1;i<=pi->count;i++)
	{printf(QWER1);
	 printf(QWER2,QWER3);
	 p++;}
}}


void Load(lali  *pi)
{   
	FILE*fp;
	XUEJI*p;
    
	char fname[15]="s";
	if((fp=fopen(fname,"rb"))==NULL)
	{
		fp=fopen(fname,"wb");
		if(fp==NULL)
		{ printf("建立文件失败!\n");
		  return;
		}
		fclose(fp);
	}
	fp=fopen(fname,"rb");
	pi->count=0;
	p=pi->PHead; 
	while(!feof(fp))
	{if(fread(p,sizeof(XUEJI),1,fp));
      {pi->count=pi->count+1;
      p++;
		}	
	}
	
	fclose(fp);
}


void Save(lali*pi)
{FILE*fp;
int numwriten;
char fname[10]="s";
if((fp=fopen(fname,"wb"))==NULL)
{printf("打开文件失败!\n");
 return;
}
if(pi->count)
{numwriten=fwrite(pi->PHead,pi->count*sizeof(XUEJI),1,fp);} 
fclose(fp);
}


void shanchu(lali*pi)
{   int num,i;XUEJI*p;
   
do{xiansi(pi);
	printf("请输入要删除的学号(按0退回菜单):\t");
	scanf("%d",&num);
	p=pi->PHead;
	if(num==0)
	{break;}
	else if(num!=0) 
	{{for(i=1;i<pi->count;i++)   
	  { if(p->num==num)        
	    {memcpy(p,p+1,(pi->PHead+pi->count-p)*sizeof(XUEJI));
		pi->count--;}
	    p++;}
	  if(i==pi->count)
	  pi->count--;}
     }
	Save(pi);
}while(1);
} 

 

  • 写回答

4条回答 默认 最新

  • Hong_Youth 2021-01-16 19:40
    关注

    这是代码编辑器自带的,便于记录代码的行数。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?