学生基本信息管理系统LINUX下.docx
《学生基本信息管理系统LINUX下.docx》由会员分享,可在线阅读,更多相关《学生基本信息管理系统LINUX下.docx(7页珍藏版)》请在冰豆网上搜索。
![学生基本信息管理系统LINUX下.docx](https://file1.bdocx.com/fileroot1/2022-11/29/9f27423b-f380-475b-8d86-83e6df8f14d3/9f27423b-f380-475b-8d86-83e6df8f14d31.gif)
学生基本信息管理系统LINUX下
学习并分别使用标准C的文件操作函数和Linux的系统调用创建一个对学生基本信息进行操作(插入、修改和删除)的C程序,学生基本信息以结构体的形式存储在文件
#include
#include
#include
#include
#include
structstu_info{
charstu_num[12];
charname[10];
charsex;/*0为女生,1为男生*/
charmobile_phone[12];
};
structstu_infostudent;
unsignedintnumber;
structstu_infostu[100];
FILE*in;
FILE*out;
intlen;
voidinputstu();
voidupdatestu();
voiddeletestu();
voiddisplaystu();
voidcommanddisp()
{ printf("-------------------------------------------------\n");
printf("|-----------学生基本信息管理--------------------|\n");
printf("|---1.基本信息插入.-----2.基本信息修改----------|\n");
printf("|---3.基本信息删除.-----4.基本信息显示----------|\n");
printf("|---r.初始化(第一次使用时用!
!
慎用)-q.退出---|\n");
printf("|--------------------请输入你的选择:
-----------|\n");
printf("-------------------------------------------------\n");
}
voidmain()
{
commanddisp();
charch;
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("\ninitstudenttable\n");
if((out=fopen("c.doc","w"))==NULL)return;
number=0;
fwrite(&number,sizeof(unsignedint),1,out);
fflush(out);
fclose(out);
break;
default:
break;
}
printf("pleaseenteranykeytocontinue");
getchar();
getchar();
system("clear");
commanddisp();
}
}
voidinputstu()
{
printf("\n-----------------请输入学生信息----------------------\n");
charp='y';
while(p=='y'||p=='Y')
{
memset(&student,0,sizeof(student));
printf("学号:
");
scanf("%s",student.stu_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(structstu_info);
if((out=fopen("c.doc","r+"))==NULL)return;
fread(&number,sizeof(unsignedint),1,out);
number++;
fseek(out,0L,SEEK_SET);
fwrite(&number,sizeof(unsignedint),1,out);
fflush(out);
fseek(out,0L,SEEK_END);
fwrite(&student,len,1,out);
fflush(out);
fclose(out);
printf("是否继续输入Y/N\n");
fflush(stdin);
do{
p=getchar();
}while(p=='\n');
}
}
voidupdatestu()
{
printf("\n-------------------学生信息修改-------------------------\n");
printf("请输入修改学生的学号:
");
memset(&student,0,sizeof(student));
scanf("%s",student.stu_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(structstu_info);
in=fopen("c.doc","r+");
fread(&number,sizeof(unsignedint),1,in);
unsignedintj;
longkk;
for(j=0;j {
fread(&stu[0],len,1,in); if(strcmp(student.stu_num,stu[0].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");
}
voiddeletestu()
{
printf("\n-------------------学生信息删除-------------------------\n");
in=fopen("c.doc","r");
fread(&number,sizeof(unsignedint),1,in);
memset(stu,0,sizeof(stu));
len=sizeof(structstu_info);
fread(stu,len,number,in);
unsignedinti;
charf;
while
(1)
{
printf("请输入删除学生的学号:
");
charstu_num[12];
memset(stu_num,0,sizeof(stu_num));
fflush(stdin);
scanf("%s",stu_num);
for(i=0;i if(strcmp(stu_num,stu[i].stu_num)==0)break;
if(i==number)printf("没有这条记录\n");
else
{
number--;
for(;i {
strcpy(stu[i].stu_num,stu[i+1].stu_num);
strcpy(stu[i].name,stu[i+1].name);
stu[i].sex=stu[i+1].sex;
strcpy(stu[i].mobile_phone,stu[i+1].mobile_phone);
}
}
printf("是否继续删除Y/N\n");
fflush(stdin);
do{
f=getchar();
}while(f=='\n');
if(f!
='y'&&f!
='Y')break;
}
fclose(in);
out=fopen("c.doc","w");
fwrite(&number,sizeof(unsignedint),1,out);
len=len*number;
fwrite(stu,len,1,out);
fflush(out);
fclose(out);
}
voiddisplaystu()
{ printf("\n------------------------------显示学生信息----------------------------------\n");
in=fopen("c.doc","r");
fread(&number,sizeof(unsignedint),1,in);
memset(stu,0,sizeof(stu));
len=sizeof(structstu_info);
fread(stu,len,number,in);
unsignedinti;
printf("----------------------------------------------------------------------------\n");
printf("number \t学号\t姓名\t性别<0是女,1是男> 手机号\n");
for(i=0;i printf("%3d %12s%10s %c %12s\n",i,stu[i].stu_num,stu[i].name,stu[i].sex,stu[i].mobile_phone);
printf("----------------------------------------------------------------------------\n");
fclose(in);
}