图书管理系统程序设计C实验报告.doc_第1页
图书管理系统程序设计C实验报告.doc_第2页
图书管理系统程序设计C实验报告.doc_第3页
图书管理系统程序设计C实验报告.doc_第4页
图书管理系统程序设计C实验报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国石油大学(华东)软件工程系程序设计(C)实验(总结报告)专业班级: 软件1301 学 号: 1307020125 姓 名: 燕朋宾 2014年1月一、实习题目介绍(包括:题目名称,及题目要求完成的工作任务、要求实现的功能目标等) 1.题目名称 图书管理系统 2.基本功能(1) 查询图书: 输入要查询图书的信息,如书名,位置,索书号等,系统即可自动查询使用者所需要的图书,能查询到则输出完整的图书信息,查询不到则提示使用者该书不存在。(2) 添加图书: 输入要添加图书的数目,即可根据系统的提示逐项添加图书的基本信息,直至添加完毕为止。结束时显示使用者添加的所有图书。(3) 修改图书: 输入要修改的图书信息,找到该图书后即可修改书名,位置,索书号等基本信息。(4) 删除图书: 输入要删除的图书信息,找到该图书后即可自动删除。二、开发工作内容1.主要思路 (1)首先建立一个记录图书信息的档。 (2) 使用界面函数,使使用者更方便。 (3)使用者键入数字实现选择。 (4)使用者输入要查询的图书信息,如图书名,通过逐项比较找到图书,并输出图书的所有信息。 (5)使用者输入要修改的图书信息,通过逐项比较找到图书,再使用fseek,以及fwrite函数实现修改。 (6)使用者输入要删除的图书信息,通过逐项比较找到图书,建立新结构体Struct Book n=“0”,”0”,”0”,”0”,使用新结构体替换要删除的图书结构体,即可实现删除功能。 (7)使用者输入要添加的图书数目,系统自动提示使用者添加内容,直到添加完毕为止。 (8)使用死循环,每次功能完成之后提醒使用者,按0退出,按其他数字继续。2.各模块功能的实现过程 (1)建立记录图书信息的档 代码:void save()FILE*fp;int i;if(fp=fopen(book.dat,wb)=NULL)printf(cannotn);return ; for(i=0;i5) system(cls);jiemian(); printf(*n);printf( 请重新输入n);printf(*n);scanf(%d,&i);if(i=5)break;switch(i)case 1:chaxun();break;case 2:xiugai();break;case 3:add();break;case 4:shanchu();break;case 5:chaxunsuoyou();break;if(i=0)break;printf(nnnnnnn);printf(*按0退出,按其他数字继续*n);scanf(%d,&j);system(cls);(4)输入要查询的图书信息 原理:系统通过比较,如果图书存在则输出图书详细信息,图书不存在则输出图书不存在的信息。 代码: void chaxun() int p;int i,n=0;char b100;FILE*fp; printf( );printf( $=|n); printf( );printf( $-图书查询系统-|n); printf( ); printf( $_|n);printf( ); printf( $1.查询图书名 |n);printf( ); printf( $_|n); printf( );printf( $2.查询图书类型 |n); printf( );printf( $_|n); printf( );printf( $3.查询图书位置 |n);printf( ); printf( $_|n); printf( );printf( $4.查询图书编号 |n); printf( );printf( $_|n); printf( );printf(请输入服务类型(数字)n);printf( ); scanf(%d,&p); system(cls); if(p=1) printf(请输入要查询的图书名:n); scanf(%s,b);if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,)=0)printf(_n);printf(|%-15s|%-20s|%-20s|%-5s|n,,booki.lei,booki.floor,booki.hao);n=1; if(n=0) printf(对不起,你查询的图书不存在n); fclose(fp); if(p=2) printf(请输入要查询的图书类型:n); scanf(%s,b);if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.lei)=0)printf(_n);printf(%-15s%-20s%-20s%-5sn,,booki.lei,booki.floor,booki.hao);n+; fclose(fp); if(n=0) printf(对不起,你查询的图书不存在n);printf(%s类型书的数目为%dn,b,n); if(p=3) printf(请输入要查询的位置:n); scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.floor)=0) printf(_n);printf(|%-15s|%-20s|%-20s|%-5s|n,,booki.lei,booki.floor,booki.hao);printf(_n);n+; if(n=0) printf(对不起,你查询的图书不存在n); printf(%s位置书的数目为%dn,b,n); fclose(fp); if(p=4) printf(请输入要查询的图书编号:n); scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+)fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.hao)=0)printf(%-15s%-20s%-20s%-5sn,,booki.lei,booki.floor,booki.hao);n=1;if(n=0)printf(查无此书n); fclose(fp); (5)修改图书时只需输入要修改的图书信息及新的图书信息即可实现。 实现原理:先逐项对比找到图书,再用fseek函数指向该图书,然后用fwrite函数进行修改。 代码: void xiugai() int i,j,k=0,u;struct Book n; char boo100; FILE*fp;printf(请输入要修改的图书名n); scanf(%s,boo); if(fp=fopen(bok.dat,rb)=NULL) printf(cannot open filen); exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp); if(strcmp(boo,)=0) j=i; k=1; fclose(fp); if(k=1) printf( _n); printf( $-图书修改系统-$n); printf( |_|n); printf( |1.修改图书名 |n); printf( |_|n); printf( |2.修改图书类型 |n); printf( |_|n); printf( |3.修改图书编号 |n); printf( |_|n); printf(请输入修改内容(数字)n); scanf(%d,&u); system(cls); if(u=1) printf(请输入新的书名n); scanf(%s,&); if(fp=fopen(bok.dat,rb+)=NULL) printf(cannotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); strcpy(n.lei,bookj.lei); strcpy(n.floor ,bookj.floor);strcpy(n.hao ,bookj.hao);fwrite(&n,sizeof(struct Book),1,fp);printf(修改前:n);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); printf(修改后:n);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); printf(*修改成功*n); if(u=2) printf(请输入新的类型n); if(fp=fopen(bok.dat,rb+)=NULL) printf(cannotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); scanf(%s,&n.lei); strcpy(,); strcpy(n.floor ,bookj.floor);strcpy(n.hao ,bookj.hao);fwrite(&n,sizeof(struct Book),1,fp);printf(修改前:n);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); printf(修改后:n);printf(%-15s%-20s%-20s%-5sn,,n.lei,bookj.floor,bookj.hao); printf(*修改成功*n); if(u=3) printf(请输入新的编号n); if(fp=fopen(bok.dat,rb+)=NULL) printf(cannotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); scanf(%s,&n.hao); strcpy(n.lei,bookj.lei); strcpy(n.floor ,bookj.floor);strcpy( ,);fwrite(&n,sizeof(struct Book),1,fp); printf(* n);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); printf(*n);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,n.hao); printf( =修改成功=n); if(k=0) printf(查无此书n); fclose(fp);(6)删除图书。 实现原理:使用者输入要删除的图书信息,通过逐项比较找到图书,建立新结构Struct Book n=“0”,”0”,”0”,”0”,使用新结构体替换要删除的图书结构体,即可实现删除功能。 代码:/删除图书功能void shanchu() FILE*fp; int i,u,j,k,m=0; char b100;struct Book n=0,0,0; printf( $=|n); printf( $-图书删除系统-|n); printf( $_|n); printf( $1.删除图书名 |n); printf( $_|n); printf( $2.删除图书类型 |n); printf( $_|n); printf( $3.删除图书位置 |n); printf( $_|n); printf( $4.删除图书编号 |n); printf( $_|n); printf(请输入服务类型(数字)n); scanf(%d,&u); if(u=1) printf(请输入要删除的内容:n);scanf(%s,b); for(k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL) printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp); if(strcmp(b,)=0) printf(%-15s%-20s%-20s%-5sn,,booki.lei,booki.floor,booki.hao); j=i;m=1; printf(%dn,j); fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=2) printf(请输入要删除的内容:n);scanf(%s,b);for(k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.lei)=0)j=i;m=1;printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=3) printf(请输入要删除的内容:n);scanf(%s,b);for(k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.floor)=0)printf(%-15s%-20s%-20s%-5sn,,booki.lei,booki.floor,booki.hao); j=i;m=1;break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp);printf(%-15s%-20s%-20s%-5sn,,bookj.lei,bookj.floor,bookj.hao); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=4) printf(请输入要删除的内容:n);scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.hao)=0)printf(%-15s%-20s%-20s%-5sn,,booki.lei,booki.floor,booki.hao); j=i;m=1;break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp); if(m=0)printf(您要删除的图书不存在:n); (7) 增加图书。 实现原理:使用追加方式打开档,即可在档尾增加图书。通过输入数字控制输入图书的数目。代码: void add() FILE*fp;struct Bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论