C语言图书管理系统实验报告_第1页
C语言图书管理系统实验报告_第2页
C语言图书管理系统实验报告_第3页
C语言图书管理系统实验报告_第4页
C语言图书管理系统实验报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、课程报告课程 名称:程序设计实践专业班级:信息类1110学生姓名:学号:任课教师:学期:20101-2012学年第二学期课程报告任务书题 目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出 版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充, 比如是否借出、库存量等)。使之能提供以下 基本功能:(1)图书信息录入功能(图书信息用文件保存)一一输入?(2)图书信息浏览功能一一输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式广?按书名查询按作者名查询 按照价钱排序按出版时间排序 等等(4)图书信息的删除与修改扩展功能:可以按照

2、自己的程度进行扩展。 比如(1)简单的权限处理 (2) 报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书 借阅系统。(4)模糊查询 (5)综合查询(6)统计功能 比如统计处某 一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之, 可以根据自己需求进行分析功能。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的 功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模 块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好

3、的编码习惯、完成各个模块并进行 测试,最终完成系统整体测试;(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答 解。成绩评定报告撰写情况(30分)系统完成情况(30 分)答辩情况(40分)总分内容20分规范程 度5分程序测 试5分基本功能20分扩展功能10分自述情况10分答辩情 况30分成绩评定教师:1 需求分析这是 一个 能简单管理 图 书 的 小 型 图 书管理系 统 ,其 中 图 书 信息包 括 :书 名 , 作者名,书编号,分类,出版单位,出版时间,价格等。通过这些信息使之提 供以下功能:( 1)图 书 信 息 创 建 功 能 。其 中 图 书 信 息 包 括 :书 名 ,作

4、 者 名 ,书 编 号 ,分 类 , 出 版单位 , 出 版时 间 , 价格等 。 (图书信息用文件保存) 。( 2)图书信息查看功能。用来查看各项图书信息。( 3)图书信息查找功能。通过已知信息来查找想要的图书。( 4)图书信息的删除。可以删除特定图书。( 5)图书信息的修改。可以修改图书的各项信息。( 6)图书信息的排序功能。按图书信息对录入的图书进行排序。(7 )菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能2 概要设计 数据结构图书管理系统中主要的数据结构包含书名、 图书书号、 作者名、 分类、 出版社、

5、 出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。/ / 自定义枚举类型fi_type ,用来表示图书信息typedef enum _fi_typenews=1, / 图书信息fi_type;/ 图书信息结构体struct fi_infochar name11; /书名char writer21; /作者char shuhao10; /书号char fenlei10; /分类char chuban20; /出版社int chubantime; 出版时间float price; / 价格fi_type type;struct fi_info* next; /结构体的指针域

6、,用于存放链表的下个结点的地址;模块划分本系统主要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几 个基本功能。2将图书信息写成链表,头指针分别为struct fi_info *head=NULL,*head_=NULL ; /空int Book_num; /图书信息的统计数void menu();int ReadinfoFromFile(); /读入数据/函数中明int chuangjian(); / void chazhao(); / void shanchu(); / void xiugai(); / void show(); / void paixu() ; / vo

7、id quit(); /(3)程序结构创建新的图书信息查找图书删除图书修改图书查看图书图书排序退出开始3详细设计1. 主菜单函数的原型:void menu()函数的功能:调用菜单,使用各项功能程序:void menu()printf("nn*v图书信息管理系*n");printf("n");printf("tttn");printf("tttn");printf("tttn");printf("tttn");printf("tttn");printf(&q

8、uot;tttn");printf("tttn");<1;创建图< 2;查找图< 3;删除图< 4;修改图< 5;显示图< 6;按出版<0 ;退出主菜单书信息>书信息>书信息>书信息>书信息>时间排序>printf("n");2. 新建文件函数的原型: int ReadinfoFromFile()函数的功能:建立文件储存数据程序int ReadinfoFromFile() / 读入数据FILE *fp=NULL; / 文件指针struct fi_info *p=NUL

9、L; / 结构体指针int i;if(fp=fopen("sun.txt","r+")=NULL)printf(" 文件不存在! n");fp=fopen("sun.txt","w"); / 为输出打开一个文件printf(" 文件建立成功! n");fscanf(fp,"%d",&Book_num); / 从文件中分别读入图书信息统计数, 以便于下面for 循环的条件控制for(i=0;i<Book_num;i+)p=(struct fi_

10、info*)malloc(sizeof(struct fi_info); /P 为动作指针,申请内存空间fscanf(fp,"%s",p->name);fscanf(fp,"%s",p->writer);fscanf(fp,"%s",p->shuhao);fscanf(fp,"%s",&p->fenlei);fscanf(fp,"%s",p->chuban);fscanf(fp,"%d",&p->chubantime);fs

11、canf(fp,"%.2f",&p->price);fscanf(fp,"%d",&p->type);if(p->type=1)if(head=NULL)head=p;p->next=NULL;elsep->next=head;head=p;elseif(head_=NULL)head_=p;p->next=NULL;elsep->next=head_;head_=p;fclose(fp);return 0;3. 创建图书信息函数的原型: int chuangjian()函数的功能:记录图书的各项

12、信息程序:int chuangjian() / 创建图书信息struct fi_info *p=NULL;p=(struct fi_info*)malloc(sizeof(struct fi_info);printf(" 请输入书名: ");scanf("%s",p->name);printf(" 请输入作者名: ");scanf("%s",p->writer);printf("请输入书号:");scanf("%s",p->shuhao);printf(&q

13、uot;请输入分类:");scanf("%s",&p->fenlei);printf(" 请输入出版社: ");scanf("%s",p->chuban);printf(" 请输入出版时间: ");scanf("%d",&p->chubantime);printf(" 请输入价格: ");scanf("%f",&p->price);p->type=news;Book_num+=1;p->

14、next=head;head=p;return 0;4. 查找图书信息函数的原型: void chazhao()函数的功能:通过书名查找、作者查找、组合查找三种方式查找图书信息。程序:void chazhao() / 查找图书信息struct fi_info *p=NULL;char name10,writer21;int price;int b=1,i;printf(" 按书名查找请按1.n 按作者名查找请按2.n 按组合查询请按 3.n");scanf("%d",&i);if(i=1)printf(" 请输入要查找的书名 :&quo

15、t;);scanf("%s",name);一个链表指针p 的遍历,直到结尾p=NULL字符串的比较函数,若前后相等则等于 0若存在,则 b=0for(p=head;p!=NULL;p=p->next) /if(strcmp(name,p->name)=0) /b=0;/printf(" 找到要查找的图书信息 :n");printf(" 图书名称 %sn",p->name);printf("图书作者%sn",p->writer);printf(" 图书书号 %sn",p-&

16、gt;shuhao);printf("图书分类%sn",p->fenlei);printf("出版社%sn",p->chuban);printf("出版时间%dn",p->chubantime);printf("图书价格%.2fn",p->price);if(head=NULL) printf("< 查无此书 >n");if(b) printf("<查找的图书信息不存在!>n"); 若b=1,则不存在else if(i=2) p

17、rintf(" 请输入要查找的作者名 :");scanf("%s",writer);for(p=head;p!=NULL;p=p->next) / 一个链表指针p 的遍历,直到结尾p=NULLif(strcmp(writer,p->writer)=0) /字符串的比较函数,若前后相等则等于b=0;/若存在,则 b=0printf(" 找到要查找的图书信息 :n");printf(" 图书名称 %sn",p->name);printf("图书作者 %sn",p->write

18、r);printf(" 图书书号 %sn",p->shuhao);printf("图书分类%sn",p->fenlei);printf("出版社%sn",p->chuban);printf("出版时间%dn",p->chubantime);printf("图书价格%.2fn",p->price);if(head=NULL) printf("< 查无此书 >n");if(b) printf("<查找的图书信息不存在!&g

19、t;n"); / 若b=1,则不存在else if(i=3)printf(" 请输入要查找的 书名 价格 n:");scanf("%s %d",name,&price);for(p=head;p!=NULL;p=p->next) / 一个链表指针p 的遍历,直到结尾p=NULLif(strcmp(name,p->name)=0&&price=p->price) / 字符串的比较函数,若前后相等则等于0b=0;/若存在,则 b=0printf(" 找到要查找的图书信息 :n");pri

20、ntf("图书名称%sn",p->name);printf("图书作者%sn",p->writer);printf(" 图书书号 %sn",p->shuhao);printf("图书分类%sn",p->fenlei);printf("出版社%sn",p->chuban);printf("出版时间%dn",p->chubantime);printf("图书价格%.2fn",p->price);if(head=NULL

21、) printf(" 查无此书 n");if(b) printf("<查找的图书信息不存在!>n"); 若b=1,则不存在 else printf("< 没有该项功能,请重新选择 :>n");system("PAUSE"); / 暂停5. 删除图书信息函数的原型: void shanchu()函数的功能:通过书名确定图书,进而删除该书程序:void shanchu() / 删除图书信息定义两个结构体指针struct fi_info *p=NULL; /struct fi_info *q=NU

22、LL;char name10;int b=1;int a;printf(" 请输入要删除的书名 :n");scanf("%s",name);for(p=head,q=head;p!=NULL;p=p->next)if(strcmp(name,p->name)=0)b=0;printf("确定删除? 0(是)or 1(否)n");scanf("%d",&a);if(a=0)if(p=head)head=head->next;elseq->next=p->next;printf(&

23、quot; 删除成功! n");else q=p;if(b) printf("< 提示:查无此书 !.n");system("PAUSE");6. 修改图书信息函数的原型: void xiugai()函数的功能:通过书名确定图书,进而修改该书的各项信息程序:void xiugai() / 修改图书信息struct fi_info *p=NULL;int a,b=1;char name10;printf(" 请输入书名: nn");scanf("%s",name);for(p=head;p!=NULL

24、;p=p->next)if(strcmp(p->name,name)=0)b=0;printf("图书名称%sn",p->name);printf("图书作者%sn",p->writer);printf(" 图书书号 %sn",p->shuhao);printf("图书分类%sn",p->fenlei);printf("出版社%sn",p->chuban);printf("出版时间%dn",p->chubantime);prin

25、tf("图书价格%.2fn",p->price);printf("<是否确定修改?0 (是)or 1(否)>n");scanf("%d",&a);if(a=0)printf("* 请重新输入信息 *n");printf(" 请输入书名: ");scanf("%s",p->name);printf(" 请输入作者名 :");scanf("%s",p->writer);printf("请输入书

26、号:");scanf("%s",p->shuhao);printf("请输入分类:");scanf("%s",&p->fenlei);printf(" 请输入出版社: ");scanf("%s",&p->chuban);printf(" 请输入出版时间: ");scanf("%d",&p->chubantime);printf(" 请输入价格: ");scanf("%f

27、",&p->price);p->type=news;printf("nn < 提醒:信息修改成功 !>nn");if(b=1) printf("< 没有您要修改的信息 !>n");system("PAUSE");7. 显示图书信息函数的原型: void show()函数的功能:显示已存图书的各项信息程序:void show() / 显示图书信息struct fi_info *p=NULL;system("cls");for(p=head;p!=NULL;p=p-

28、>next)printf("图书名称%sn",p->name);printf("图书作者%sn",p->writer);printf("图书书号%sn",p->shuhao);printf("图书分类%sn",p->fenlei);printf("出版社%sn",p->chuban);printf("出版时间%dn",p->chubantime);system("PAUSE");8. 图书排序函数的原型: void

29、 paixu()函数的功能:按出版时间的不同将记录的图书排序程序:void paixu() / 按出版时间排序struct fi_info *a1000,*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n+;for(i=0;i<n;i+)ai=p1;p1=p1->next;for(k=0;k<n-1;k+)index=k;for(i=k+1;i<n;i+)if(aindex->chubantime>ai->chubantime) index=i;temp=a

30、index;aindex=ak;ak=temp;for(i=0;i<n;i+)printf(" 图书书名 %sn",ai->name);printf("图书作者 %sn",ai->writer);printf("图书书号 sn",ai->shuhao);printf("图书分类 sn",ai->fenlei);printf("出版社 sn",ai->chuban);printf("出版时间 dn",ai->chubantime);pr

31、intf("图书价格 %.2fn",ai->price);system("PAUSE");4调试分析此次编写的图书管理系统,相对于以前学到的程序,它要大得多,也要复杂的多。涉及到 多个模块的调用,每个模块都给我带来一些困惑。其中感觉图书查找和排序这两个最为麻烦。 查找模块涉及到指针和链表问题后来在同学的帮助下得以解决,我就模仿按书名查找的方法 另外设计出了两种查找方法。排序中的 for循环刚开始不是太熟练,出了很多错误。程序设 计好后,数据的输出格式不太规范,而且各模块也出现了一些小问题,经过修改最后运行的 结果基本上达到了预期的目的。由于准备的有

32、点仓促,没能把一些细节优化好,而且没能加 入一些其他功能,比如图书借阅模块,那样程序将会比较完美。5测试结果测试的部分数据书名作者书号分类出版社出版时间价格大学物理罗益民al教科类北京邮电大学出版社58时间简史霍金b2科普类湖南科学技术出版社45仰望饶雪漫c3乂了尖海南出版社15登录号任意输入卜面为测试的部分结果截图丹 H:Debu g受三省遑妾统.exe ,主菜单工;创建图书信息>< 2;查找图书信息>< 3;删除图书信息< 4;修改图书信息>< S;显示图书信息>< 6;按出版时间排序< 0;退出>请选择要进行的操作。_6)

33、:H:De bug 雯 W 苜理系统.exe*主菜单5创建图书信息>< 2 ;查找图书信息< 3;删除图书信息< 4;修改图书信息< 5;显于图书信息< 6;按出版时间排序< 0;退出)傅舞能亍耳操作 小:2 赛罢襄盛12 料且合查询请按3.输入要查找的书名:时间简史H:Debug图三管理系统.exe*<5;显ZB图书信息><6;按出版时间排序<0;退出>操.按. 询按请按 螯查询 鹫名查 T'C 好息 技学 定简 类科 的® 金管南 Swb2科湖 查找.0续45继飞 键、要查称者号类间量序 入要京书八4时亳 翁按图图图图出出图请 ' H:Debug图三管遑系统.exe

温馨提示

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

评论

0/150

提交评论