欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

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

    • 资源ID:15709       资源大小:422.68KB        全文页数:33页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    学习并分别使用标准C的文件操作函数和Linu*的系统调用创立一个对学生根本信息进展操作插入、修改和删除的C程序,学生根本信息以构造体的形式存储在文件*include<stdio.h>*include<unistd.h>*include<string.h>*include<stdlib.h>*include<time.h>struct stu_info char stu_num12;char name10;char se*;/*0为女生,1为男生*/char mobile_phone12;struct stu_info student;unsigned int number;struct stu_info stu100;FILE *in;FILE *out;int len;void inputstu();void updatestu();void deletestu();void displaystu();void manddisp()printf("-n"); printf("|-学生根本信息管理-|n");printf("|-1.根本信息插入.-2.根本信息修改-|n");printf("|-3.根本信息删除.-4.根本信息显示-|n");printf("|-r.初始化第一次使用时用!慎用-q.退出-|n");printf("|-请输入你的选择:-|n");printf("-n");void main()manddisp();char ch;while(1)doch=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(unsigned int),1,out);fflush(out);fclose(out);break;default:break;printf("please enter any key to continue");getchar();getchar();system("clear");manddisp();void inputstu()printf("n-请输入学生信息-n");char p='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是男:");dostudent.se*=getchar();while(student.se*='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(&number,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);dop=getchar();while(p='n');void updatestu()printf("n-学生信息修改-n");printf("请输入修改学生的*:");memset(&student,0,sizeof(student);scanf("%s",student.stu_num);printf(":");scanf("%s",student.name);printf("性别0是女,1是男:");dostudent.se*=getchar();while(student.se*='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;j<number;j+)fread(&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);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;i<number;i+)if(strcmp(stu_num,stui.stu_num)=0)break;if(i=number) printf("没有这条记录n");else number-;for(;i<number;i+)strcpy(stui.stu_num,stui+1.stu_num);strcpy(stui.name,stui+1.name);stui.se*=stui+1.se*;strcpy(stui.mobile_phone,stui+1.mobile_phone);printf("是否继续删除YNn");fflush(stdin);dof=getchar();while(f='n');if(f!='y'&&f!='Y')break;fclose(in);out = fopen("c.doc","w");fwrite(&number,sizeof(unsigned int),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性别<0是女,1是男> 手机号n");for(i=0;i<number;i+)printf(" %3d %12s%10s %c %12sn",i,stui.stu_num,stui.name,stui.se*,stui.mobile_phone);printf("-n");fclose(in); 利用父子进程间的管道通信方式,改写实验3步骤6要求的程序。要求启用两个进程,其中父进程承受用户对文件stu.info的操作命令然后通过管道发给子进程,子进程完成对文件的实际操作。*include<stdio.h>*include<unistd.h>*include<string.h>*include<stdlib.h>*include<time.h>struct stu_info char stu_num12;char name10; char se*;/*0为女生,1为男生*/char mobile_phone12;struct stu_info student;unsigned int number;struct stu_info stu100;int pipefiles2;void main() printf("-n"); printf("|-学生根本信息管理-|n"); printf("|-1.根本信息插入.-2.根本信息修改-|n"); printf("|-3.根本信息删除.-4.根本信息显示-|n"); printf("|-r.初始化第一次使用时用!慎用-|n"); printf("|-请输入你的选择:-|n:"); printf("-n"); pid_t pid;FILE *in;FILE *out;char ch;int len; if(pipe(pipefiles)=0) pid=fork(); if(pid=-1) fprintf(stderr,"Fork failuren");return; if(pid=0)/child.read(pipefiles0,&ch,1);switch(ch)case '1':while(1)sleep(1);len=sizeof(struct stu_info);char *ch1=(char*)malloc(sizeof(char)*len);read(pipefiles0,ch1,len);if(out=fopen("c.doc","r+")=NULL) return;fread(&number,sizeof(unsigned int),1,out);number+;fseek(out,0L,SEEK_SET);fwrite(&number,sizeof(unsigned int),1,out);fclose(out);if(out=fopen("c.doc","a")=NULL) return;fwrite(ch1,len,1,out);fclose(out);char f;read(pipefiles0,&f,sizeof(char);if(f!='y'&&f!='Y') return;break;case '2':sleep(1);len=sizeof(struct stu_info);read(pipefiles0,&student,len);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 j;for(j=0;j<number;j+)if(strcmp(student.stu_num,stuj.stu_num)=0)strcpy(stuj.name,student.name);stuj.se*=student.se*;strcpy(stuj.mobile_phone,student.mobile_phone);break;fclose(in);if(j=number)printf("没有这条记录n");elseout = fopen("c.doc","w");fwrite(&number,sizeof(unsigned int),1,out);len=sizeof(struct stu_info);len=len*number;fwrite(&stu,len,1,out);fclose(out);break;case '3':while(1)sleep(1);char stu_num12;memset(stu_num,0,sizeof(stu_num);read(pipefiles0,stu_num,sizeof(stu_num);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;for(i=0;i<number;i+)if(strcmp(stu_num,stui.stu_num)=0)break;if(i=number) printf("没有这条记录n");else for(;i<number-1;i+)strcpy(stui.stu_num,stui+1.stu_num);strcpy(stui.name,stui+1.name);stui.se*=stui+1.se*;strcpy(stui.mobile_phone,stui+1.mobile_phone);if(out=fopen("c.doc","r")=NULL) return;fread(&number,sizeof(unsigned int),1,out);fclose(out);number-;out = fopen("c.doc","w");fwrite(&number,sizeof(unsigned int),1,out);len=sizeof(struct stu_info);len=len*number;fwrite(stu,len,1,out);fclose(out);char f;read(pipefiles0,&f,sizeof(int);if(f!='y'&&f!='Y') return;break;case '4':sleep(1);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");for(i=0;i<number;i+)printf("-%d-*: %s-: %s-性别<0是女,1是男>: %c-手机号: %s-n",i,stui.stu_num,stui.name,stui.se*,stui.mobile_phone);printf("-n");fclose(in); break;case 'r':if(out=fopen("c.doc","w")=NULL) return;number=0;fwrite(&number,sizeof(unsigned int),1,out);break;default :break;else/father.doch=getchar();while(ch='n');write(pipefiles1,&ch,1);switch(ch)case '1':printf("n-请输入学生信息-n");char p='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是男:");dostudent.se*=getchar();while(student.se*='n');printf("手机号:");scanf("%s",student.mobile_phone);len=sizeof(struct stu_info);write(pipefiles1,&student,len);sleep(1);printf("是否继续输入YNn");fflush(stdin);dop=getchar();while(p='n');write(pipefiles1,&p,sizeof(char); break;case '2':printf("n-学生信息修改-n");printf("请输入修改学生的*:");memset(&student,0,sizeof(student);scanf("%s",student.stu_num);printf(":");scanf("%s",student.name);printf("性别0是女,1是男:");dostudent.se*=getchar();while(student.se*='n');printf("手机号:");scanf("%s",student.mobile_phone);len=sizeof(struct stu_info);write(pipefiles1,&student,len);sleep(2);break;case '3':printf("n-学生信息删除-n");while(1)printf("请输入删除学生的*:");char stu_num12;memset(stu_num,0,sizeof(stu_num);fflush(stdin);scanf("%s",stu_num);write(pipefiles1,stu_num,sizeof(stu_num);sleep(1);printf("是否继续删除YNn");fflush(stdin);char f;dof=getchar();while(f='n');write(pipefiles1,&f,sizeof(int);if(f!='y'&&f!='Y')return;break;case '4':printf("n-显示学生信息-n");sleep(1);break;case 'r':printf("ninit student tablen");sleep(2);break;default:break; 学习并使用线程间的同步方法,重新改写实验3步骤6要求的程序。要求启用两个线程,其中主线程承受用户对文件stu.info的操作命令然后发给子线程,子线程完成对文件的实际操作注意线程间的同步。*include<stdio.h>*include<unistd.h>*include<string.h>*include<stdlib.h>*include<time.h>*include<pthread.h>*include <semaphore.h>struct stu_info char stu_num12;char name10;char se*;/*0为女生,1为男生*/char mobile_phone12;struct stu_info student;unsigned int number;struct stu_info stu100;FILE *in;FILE *out;int len;sem_t bin_sem;sem_t bin_sem1;char ch;void inputstu();void updatestu();void deletestu();void displaystu();void *stuthread(void *);void manddisp()printf("-n"); printf("|-学生根本信息管理-|n");printf("|-1.根本信息插入.-2.根本信息修改-|n");printf("|-3.根本信息删除.-4.根本信息显示-|n");printf("|-r.初始化第一次使用时用!慎用-q.退出-|n");printf("|-请输入你的选择:-|n");printf("-n");void main()manddisp();int res;pthread_t a_thread;void *thread_result;res = sem_init(&bin_sem,0,0);if (res != 0)perror("Semaphore initialition failed");e*it(E*IT_FAILURE);res = sem_init(&bin_sem1,0,0);if (res != 0)perror("Semaphore initialition failed");e*it(E*IT_FAILURE);res = pthread_create(&a_thread,NULL,stuthread,NULL);if(res != 0)perror("Thread creation failed");e*it(E*IT_FAILURE);while(1)doch=getchar();while(ch='n');if(ch='q')sem_post(&bin_sem);break;sem_post(&bin_sem);sem_wait(&bin_sem1);printf("please enter any key to continue");getchar();getchar();system("clear");manddisp();res = pthread_join(a_thread,&thread_result);if(res != 0)perror("Thread join failed");e*it(E*IT_FAILURE);sem_destroy(&bin_sem);sem_destroy(&bin_sem1);e*it(E*IT_SUCCESS);void *stuthread(void *)sem_wait(&bin_sem);while(ch!='q')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) e*it(E*IT_FAILURE);number=0;fwrite(&number,sizeof(unsigned int),1,out);fflush(out);fclose(out);break;default:break;sem_post(&bin_sem1);sem_wait(&bin_sem);pthread_e*it(NULL);void inputstu()printf("n-请输入学生信息-n");char p='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是男:");dostudent.se*=getchar();while(student.se*='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(&number,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);dop=getchar();while(p='n');void updatestu()printf("n-学生信息修改-n");printf("请输入修改学生的*:");memset(&student,0,sizeof(student);scanf("%s",student.stu_num);printf(":");scanf("%s",student.name);printf("性别0是女,1是男:");dostudent.se*=getchar();while(student.se*='n');printf("手机号:");scanf("%s",student.mobile_phone);len=sizeof(struc

    注意事项

    本文(Linux下学生信息管理系统.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开