1、学生基本信息管理系统LINUX下学习并分别使用标准C的文件操作函数和Linux的系统调用创建一个对学生基本信息进行操作(插入、修改和删除)的C程序,学生基本信息以结构体的形式存储在文件 #include#include#include#include#includestruct stu_info char stu_num12; char name10; char sex;/*0为女生,1为男生*/ char mobile_phone12;struct stu_info student;unsigned int number;struct stu_info stu100;FILE *in;FIL
2、E *out;int len;void inputstu();void updatestu();void deletestu();void displaystu();void commanddisp() printf(-n); printf(|-学生基本信息管理-|n); printf(|-1.基本信息插入.-2.基本信息修改-|n); printf(|-3.基本信息删除.-4.基本信息显示-|n); printf(|-r.初始化(第一次使用时用!慎用)-q.退出-|n); printf(|-请输入你的选择:-|n); printf(-n);void main() commanddisp();
3、 char ch; while(1) do ch=getchar(); while(ch=n); if(ch=q)return; switch(ch) case 1: inputstu(); break; case 2: updatestu(); break; case 3: deletestu(); break; case 4: displaystu(); break; case r: printf(ninit student tablen); if(out=fopen(c.doc,w)=NULL) return; number=0; fwrite(&number,sizeof(unsign
4、ed int),1,out); fflush(out); fclose(out); break; default: break; printf(please enter any key to continue); getchar(); getchar(); system(clear); commanddisp(); void inputstu() printf(n-请输入学生信息-n); char p=y; while(p=y|p=Y) memset(&student,0,sizeof(student); printf(学号:); scanf(%s,student.stu_num); prin
5、tf(姓名:); scanf(%s,student.name); printf(性别0是女,1是男:); do student.sex=getchar(); while(student.sex=n); printf(手机号:); scanf(%s,student.mobile_phone); len=sizeof(struct stu_info); if(out=fopen(c.doc,r+)=NULL) return; fread(&number,sizeof(unsigned int),1,out); number+; fseek(out,0L,SEEK_SET); fwrite(&num
6、ber,sizeof(unsigned int),1,out); fflush(out); fseek(out,0L,SEEK_END); fwrite(&student,len,1,out); fflush(out); fclose(out); printf(是否继续输入YNn); fflush(stdin); do p=getchar(); while(p=n); void updatestu() printf(n-学生信息修改-n); printf(请输入修改学生的学号:); memset(&student,0,sizeof(student); scanf(%s,student.stu_
7、num); printf(姓名:); scanf(%s,student.name); printf(性别0是女,1是男:); do student.sex=getchar(); while(student.sex=n); printf(手机号:); scanf(%s,student.mobile_phone); len=sizeof(struct stu_info); in=fopen(c.doc,r+); fread(&number,sizeof(unsigned int),1,in); unsigned int j; long kk; for(j=0;jnumber;j+) fread(&
8、stu0,len,1,in); if(strcmp(student.stu_num,stu0.stu_num)=0) kk=len; fseek(in,-kk,SEEK_CUR); fwrite(&student,len,1,in); break; fflush(in); fclose(in); if(j=number)printf(没有这条记录n);void deletestu() printf(n-学生信息删除-n); in=fopen(c.doc,r); fread(&number,sizeof(unsigned int),1,in); memset(stu,0,sizeof(stu);
9、 len=sizeof(struct stu_info); fread(stu,len,number,in); unsigned int i; char f; while(1) printf(请输入删除学生的学号:); char stu_num12; memset(stu_num,0,sizeof(stu_num); fflush(stdin); scanf(%s,stu_num); for(i=0;inumber;i+) if(strcmp(stu_num,stui.stu_num)=0)break; if(i=number) printf(没有这条记录n); else number-; f
10、or(;inumber;i+) strcpy(stui.stu_num,stui+1.stu_num); strcpy(stui.name,stui+1.name); stui.sex=stui+1.sex; strcpy(stui.mobile_phone,stui+1.mobile_phone); printf(是否继续删除YNn); fflush(stdin); do f=getchar(); while(f=n); if(f!=y&f!=Y)break; fclose(in); out = fopen(c.doc,w); fwrite(&number,sizeof(unsigned i
11、nt),1,out); len=len*number; fwrite(stu,len,1,out); fflush(out); fclose(out);void displaystu() printf(n-显示学生信息-n); in=fopen(c.doc,r); fread(&number,sizeof(unsigned int),1,in); memset(stu,0,sizeof(stu); len=sizeof(struct stu_info); fread(stu,len,number,in); unsigned int i; printf(-n); printf(number t学号t 姓名t性别 手机号n); for(i=0;inumber;i+) printf( %3d %12s%10s %c %12sn,i,stui.stu_num,stui.name,stui.sex,stui.mobile_phone); printf(-n); fclose(in);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1