Linux下学生信息管理系统.docx

上传人:b****2 文档编号:2939051 上传时间:2023-05-05 格式:DOCX 页数:61 大小:32.06KB
下载 相关 举报
Linux下学生信息管理系统.docx_第1页
第1页 / 共61页
Linux下学生信息管理系统.docx_第2页
第2页 / 共61页
Linux下学生信息管理系统.docx_第3页
第3页 / 共61页
Linux下学生信息管理系统.docx_第4页
第4页 / 共61页
Linux下学生信息管理系统.docx_第5页
第5页 / 共61页
Linux下学生信息管理系统.docx_第6页
第6页 / 共61页
Linux下学生信息管理系统.docx_第7页
第7页 / 共61页
Linux下学生信息管理系统.docx_第8页
第8页 / 共61页
Linux下学生信息管理系统.docx_第9页
第9页 / 共61页
Linux下学生信息管理系统.docx_第10页
第10页 / 共61页
Linux下学生信息管理系统.docx_第11页
第11页 / 共61页
Linux下学生信息管理系统.docx_第12页
第12页 / 共61页
Linux下学生信息管理系统.docx_第13页
第13页 / 共61页
Linux下学生信息管理系统.docx_第14页
第14页 / 共61页
Linux下学生信息管理系统.docx_第15页
第15页 / 共61页
Linux下学生信息管理系统.docx_第16页
第16页 / 共61页
Linux下学生信息管理系统.docx_第17页
第17页 / 共61页
Linux下学生信息管理系统.docx_第18页
第18页 / 共61页
Linux下学生信息管理系统.docx_第19页
第19页 / 共61页
Linux下学生信息管理系统.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Linux下学生信息管理系统.docx

《Linux下学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《Linux下学生信息管理系统.docx(61页珍藏版)》请在冰点文库上搜索。

Linux下学生信息管理系统.docx

Linux下学生信息管理系统

学习并分别使用标准C的文件操作函数和Linux的系统调用创建一个对学生基本信息进行操作(插入、修改和删除)的C程序,学生基本信息以结构体的形式存储在文件

#include〈stdio.h〉

#include〈unistd。

h〉

#include

#include

h>

#include〈time.h>

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〈number;i++)

if(strcmp(stu_num,stu[i].stu_num)==0)break;

if(i==number)printf("没有这条记录\n”);

else

number--;

for(;i〈number;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);

利用父子进程间的管道通信方式,改写实验3步骤6要求的程序.要求启用两个进程,其中父进程接受用户对文件stu.info的操作命令然后通过管道发给子进程,子进程完成对文件的实际操作.

#include

h〉

#include

h>

#include

#include

h>

#include

h>

structstu_info{

charstu_num[12];

charname[10];

charsex;/*0为女生,1为男生*/

charmobile_phone[12];

};

structstu_infostudent;

unsignedintnumber;

structstu_infostu[100];

intpipefiles[2];

voidmain()

printf(”—--—---—--—-—----——----——-—-——-——--———-———————-—\n”);

printf("|-——————-—-学生基本信息管理——-—--————-——--|\n");

printf(”|--1。

基本信息插入.--—-—2。

基本信息修改---——--—|\n”);

printf(”|—-3.基本信息删除。

—--—-4。

基本信息显示—-----—-|\n");

printf(”|—-r。

初始化(第一次使用时用!

慎用)-—-----—|\n");

printf("|———--——--—--—-———-——请输入你的选择:

—--—-|\n:

”);

printf(”-——---———---——--——--—-——---—-—————-—-———-—--—-—-\n”);

pid_tpid;

FILE*in;

FILE*out;

charch;

intlen;

if(pipe(pipefiles)==0)

pid=fork();

if(pid==-1)

fprintf(stderr,”Forkfailure\n");

return;

if(pid==0)////child。

{

read(pipefiles[0],&ch,1);

switch(ch)

{

case'1':

while

(1)

sleep

(1);

len=sizeof(structstu_info);

char*ch1=(char*)malloc(sizeof(char)*len);

read(pipefiles[0],ch1,len);

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);

fclose(out);

if((out=fopen("c。

doc","a"))==NULL)return;

fwrite(ch1,len,1,out);

fclose(out);

charf;

read(pipefiles[0],&f,sizeof(char));

if(f!

=’y'&&f!

='Y’)return;

}

break;

case’2’:

sleep

(1);

len=sizeof(structstu_info);

read(pipefiles[0],&student,len);

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);

unsignedintj;

for(j=0;j〈number;j++)

if(strcmp(student。

stu_num,stu[j]。

stu_num)==0)

{

strcpy(stu[j]。

name,student.name);

stu[j].sex=student。

sex;

strcpy(stu[j].mobile_phone,student。

mobile_phone);

break;

fclose(in);

if(j==number)printf(”没有这条记录\n");

else

{

out=fopen("c。

doc”,"w”);

fwrite(&number,sizeof(unsignedint),1,out);

len=sizeof(structstu_info);

len=len*number;

fwrite(&stu,len,1,out);

fclose(out);

break;

case'3':

while

(1)

sleep

(1);

charstu_num[12];

memset(stu_num,0,sizeof(stu_num));

read(pipefiles[0],stu_num,sizeof(stu_num));

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;

for(i=0;i〈number;i++)

if(strcmp(stu_num,stu[i].stu_num)==0)break;

if(i==number)printf("没有这条记录\n”);

else

{

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);

}

if((out=fopen("c。

doc","r”))==NULL)return;

fread(&number,sizeof(unsignedint),1,out);

fclose(out);

number—-;

out=fopen("c.doc",”w");

fwrite(&number,sizeof(unsignedint),1,out);

len=sizeof(structstu_info);

len=len*number;

fwrite(stu,len,1,out);

fclose(out);

}

charf;

read(pipefiles[0],&f,sizeof(int));

if(f!

=’y’&&f!

=’Y')return;

}

break;

case'4':

sleep

(1);

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”);

for(i=0;i〈number;i++)

printf("-%d—-学号:

%s-姓名:

%s—性别〈0是女,1是男>:

%c-手机号:

%s-\n”,i,stu[i]。

stu_num,stu[i]。

name,stu[i]。

sex,stu[i].mobile_phone);

printf(”———-——-——-—-—-———---——--————-————-------—-—-—----——---——-—-—--—--—--—----——-\n");

fclose(in);

break;

case’r':

if((out=fopen(”c。

doc”,”w”))==NULL)return;

number=0;

fwrite(&number,sizeof(unsignedint),1,out);

break;

default:

break;

}

else////father。

{

do{

ch=getchar();

}while(ch==’\n');

write(pipefiles[1],&ch,1);

switch(ch)

{

case’1':

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);

write(pipefiles[1],&student,len);

sleep

(1);

printf(”是否继续输入Y/N\n”);

fflush(stdin);

do{

p=getchar();

}while(p==’\n’);

write(pipefiles[1],&p,sizeof(char));

}

break;

case’2’:

printf("\n——-----

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2