📄 student.c
字号:
#include "stdio.h"
#include "string.h"
#include "malloc.h"
typedef struct
{
char name[24];
char num[16];
char tim[16];
char addr[128];
char tel[16];
char age[8];
char sex[8];
}student;
void search(void);
void input(void);
void del(void);
void rew(void);
void next(void);
void getinf(void);
void output(void);
FILE *fp;
student *p;
int length, len;
int stunum, stupos;
int main(void)
{
char ch; int k=1;
printf("Students' information:\n");
p=(student *)malloc(sizeof(student));
if(!p) {printf("Overflow\n"); return 0;}
length=sizeof(student); len=sizeof(int);
stunum=0; stupos=0;
fp=fopen("student","rb+");
if(!fp)
{
printf("File not exit! Please input the informatoin first!\n");
fp=fopen("student","wb+");
if(!fp) {printf("Cannot open file!\n"); return 0;}
fwrite(&stunum,len,1,fp);
}
else
{
fread(&stunum,len,1,fp); next();
}
while(k)
{
printf("--------------------------------------------------------------\n");
printf("Please select the operation!\n");
printf("(s)earch/(i)nput/(d)elet/(r)ewrite/(n)ext/(q)uit: ");
scanf("%c",&ch); getchar();
switch(ch)
{
case 'S' :
case 's' : search(); break;
case 'I' :
case 'i' : input(); break;
case 'D' :
case 'd' : del(); break;
case 'R' :
case 'r' : rew(); break;
case 'N' :
case 'n' : next(); break;
case 'Q' :
case 'q' : k=0; break;
default : printf("Unknown or bad command!\n");
}
}
rewind(fp);
fwrite(&stunum,len,1,fp);
fclose(fp);
free(p);
return 1;
}
void getinf(void)
{
printf("full name: ");
gets(p->name);
printf("school number: ");
gets(p->num);
printf("regedit time ---XXXX/XX/XX: ");
gets(p->tim);
printf("home address: ");
gets(p->addr);
printf("telephone number ---if no, input 'no': ");
gets(p->tel);
printf("age: ");
gets(p->age);
printf("sex ---female/male: ");
gets(p->sex);
}
void output(void)
{
printf("--------------------------------------------------------------\n");
printf("name: ");
puts(p->name);
printf("number: ");
puts(p->num);
printf("time: ");
puts(p->tim);
printf("address: ");
puts(p->addr);
printf("telephone: ");
puts(p->tel);
printf("age: ");
puts(p->age);
printf("sex: ");
puts(p->sex);
}
void next(void)
{
if(stupos<stunum)
{
fread(p,length,1,fp); output(); stupos++;
}
else printf("Not found information!\n");
}
void input(void)
{
long k=(long)(stunum*length+len);
getinf();
fseek(fp,k,0);
fwrite(p,length,1,fp);
stunum++; stupos=stunum;
}
void rew(void)
{
long k=(long)((stupos-1)*length+len);
printf("Please input the new information:\n");
getinf();
fseek(fp,k,0);
fwrite(p,length,1,fp);
printf("Rewrite OK!\n");
}
void del(void)
{
char ch; long k;
printf("Warring! This student's information will be deleted!\n");
printf("Are you sure? ---y/n: ");
scanf("%c",&ch); getchar();
if(ch=='Y'||ch=='y')
{
k=(long)((stunum-1)*length+len);
fseek(fp,k,0);
fread(p,length,1,fp);
k=(long)((stupos-1)*length+len);
fseek(fp,k,0);
fwrite(p,length,1,fp);
fseek(fp,k,0);
stunum--; stupos--;
printf("This student's information has been deleted!\n");
}
}
void search(void)
{
int m,n=0; long k; char ch; char mode[24];
printf("--------------------------------------------------------------\n");
printf("Please input the search way!\n");
printf("(n)ame/num(b)er/(a)ge/(t)ime: ");
scanf("%c",&ch); getchar();
printf("Please input the information of the studen\n");
gets(mode);
k=(long)len;
fseek(fp,k,0);
for(stupos=0;stupos<stunum;stupos++)
{
fread(p,length,1,fp);
switch(ch)
{
case 'N' :
case 'n' : if(!strcmp(p->name,mode)) {output(); n++; m=stupos;} break;
case 'B' :
case 'b' : if(!strcmp(p->num,mode)) {output(); n++; m=stupos;} break;
case 'A' :
case 'a' : if(!strcmp(p->age,mode)) {output(); n++; m=stupos;} break;
case 'T' :
case 't' : if(!strcmp(p->tim,mode)) {output(); n++; m=stupos;} break;
default : printf("Unknown or bad order!\n");
}
}
if(!n) printf("Not found!\n");
else
{
printf("Have found %d student!\n",n);
stupos=m+1;
k=(long)(stupos*length+len);
fseek(fp,k,0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -