为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

lunux下的文件操作编程(最原始的)

2011-07-01 5页 doc 47KB 18阅读

用户头像

is_971516

暂无简介

举报
lunux下的文件操作编程(最原始的)暑期C语言课程设计 创建一个STUDENT文件,包含有信息SNO(6), SNAME(10), AGE, ADDR(15). 要求使用Linux文件系统调用实现: 1.从键盘依次输入5个学生信息(S00001,S00002,S00003,S00004,S00006)保存到student文件中去。要求文件中的记录按SNO升序排序。 2.按下列方式显示 (1)所有学生信息; (2)按SNO查询指定学生信息; (3)更新指定序号(如第1,3个学生)学生信息。(lseek); (4)增加新的学生S00005信息. #include #...
lunux下的文件操作编程(最原始的)
暑期C语言课程 创建一个STUDENT文件,包含有信息SNO(6), SNAME(10), AGE, ADDR(15). 使用Linux文件系统调用实现: 1.从键盘依次输入5个学生信息(S00001,S00002,S00003,S00004,S00006)保存到student文件中去。要求文件中的记录按SNO升序排序。 2.按下列方式显示 (1)所有学生信息; (2)按SNO查询指定学生信息; (3)更新指定序号(如第1,3个学生)学生信息。(lseek); (4)增加新的学生S00005信息. #include #include #include #include #include #include #include #include struct Student //定义学生结构体 { char SNO[6]; char SNAME[10]; int AGE; char ADDR[15]; }; struct Student stu,stu1,stu2; int fd,fd1; int flag=1; void Student_Insert()/*插入学生信息*/ { if((fd=open("0094004_Database.txt",O_RDWR|O_CREAT,S_IRWXU))==-1) { printf("不能打开文件!\n"); exit(0); } while(1) { printf("请输入学号:"); scanf("%s",stu.SNO); getchar(); printf("请输入姓名:"); scanf("%s",stu.SNAME); getchar(); printf("请输入年龄:"); scanf("%d",&stu.AGE); getchar(); printf("请输入地址:"); scanf("%s",stu.ADDR); getchar(); lseek(fd,-sizeof(stu),SEEK_END);//将文件指向最后一个记录 if(read(fd,&stu1,sizeof(stu))==0)//如果最后一个记录是空的,就直接写到文件中去 write(fd,&stu,sizeof(struct Student)); else { while(strcmp(stu1.SNO,stu.SNO)>0)//插入选择排序写入到文件中 { write(fd,&stu1,sizeof(stu)); lseek(fd,(-3)*sizeof(stu),SEEK_CUR); read(fd,&stu1,sizeof(stu)); if(EOF)//如果要写入的记录小于文件中所有的记录,则break break; } write(fd,&stu,sizeof(stu)); } printf("是否继续?(y/n)"); if (getchar()=='n') break; } close(fd); } void Student_Search()/*按学号查询*/ { char numchr[50]; if((fd=open("0094004_Database.txt",O_RDWR|O_CREAT,S_IRWXU))==-1) { printf("不能打开文件!\n"); return; } printf("请输入要查询学生的学号:\n"); gets(numchr); while(read(fd,&stu,sizeof(struct Student))!=0) { if(strcmp(numchr,stu.SNO)==0) { printf("%-20s%-20s%-20s%-20s\n","学号","姓名","年龄","地址"); printf("-------------------------------------------------------------\n"); printf("%-20s%-20s%-20d%-20s\n",stu.SNO,stu.SNAME,stu.AGE,stu.ADDR); flag=0; break; } } if(flag==1) printf("no find !!!\n"); close(fd); } void Student_update() { int i; printf("请输入学生序号:"); scanf("%d",&i); if((fd=open("0094004_Database.txt",O_RDWR|O_CREAT,S_IRWXU))==-1) { printf("不能打开文件!\n"); return; } lseek(fd,(i-1)*sizeof(struct Student),SEEK_CUR);//寻找到要修改的纪录 printf("请输入学号:"); scanf("%s",stu.SNO); getchar(); printf("请输入姓名:"); scanf("%s",stu.SNAME); getchar(); printf("请输入年龄:"); scanf("%d",&stu.AGE); getchar(); printf("请输入地址:"); scanf("%s",stu.ADDR); write(fd,&stu,sizeof(struct Student));//写入到文件中 close(fd); } void Student_Display()/*显示学生信息*/ { int i=0,sum; printf("%-20s%-20s%-20s%-20s\n","学号","姓名","年龄","地址"); printf("-------------------------------------------------------------\n"); if((fd=open("0094004_Database.txt",O_RDWR|O_CREAT,S_IRWXU))==-1) { printf("不能打开文件!\n"); exit(0); } while(read(fd,&stu,sizeof(struct Student))!=0)//循环读文件中的记录 { printf("%-20s%-20s%-20d%-20s\n",stu.SNO,stu.SNAME,stu.AGE,stu.ADDR); i++; //统计学生总数 } sum=i; printf("所统计的总人数为:%d\n",sum); close(fd); } void main()/*主程序*/ { int choice; while(1) { printf("\n------ 学生信息管理系统------\n"); /*主菜单*/ printf("1. 增加学生记录\n"); printf("2. 按学号查询学生记录\n"); printf("3. 更新指定序号\n"); printf("4. 统计并输出所有学生的信息\n"); printf("5. 退出\n"); printf("请选择(1-5):"); scanf("%d",&choice); getchar(); switch(choice) { case 1: Student_Insert(); break; case 2: Student_Search(); break; case 3: Student_update();break; case 4: Student_Display();break; case 5: exit(0); break; } } }
/
本文档为【lunux下的文件操作编程(最原始的)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索