ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:26.20KB ,
资源ID:4850630      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4850630.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(开发一个图书信息管理系统.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

开发一个图书信息管理系统.docx

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

2、书名查询 按作者名查询 按照价钱排序按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(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)需处理的数据每本图书的信息:图书编号,书名,作者,出版社,类别,出版时间,价格,图书的剩余量。图书信息用文本文件的形式保存;2:概要设计 (1)数据结构主要数据结构:链表将每本图书的信息都保存在结构体中,并通过“结构体指针指向下一个结构体”的方式将图书信息连接成链表。每本图书信息保存的结构体如下:struct listint num;char name20;char author20;char publisher20;char kind20;char date; double price; int leaving; struct

5、 list * next;(2)模块划分a.创建链表b.插入c.删除按图书编号删除d修改按图书编号修改.e.统计库存量f.遍历g.文件导入h.文件导出i.查询按图书编号删除j.文件保存k.排序按图书价格排序 (3)程序总体框架开始main函数统计库存量Length函数,创建Creat函数,插入Insert函数,删除Delete函数,修改Revise函数,遍历 Print函数,文件导入fileread函数,文件导出filewrite函数,查询Search函数,文件保存fprint函数,排序Sorting函数结束程序运行(4)函数简介a:创建链表 struct list * Create();功能

6、:创建图书信息函数来读取录取的图书信息,最后向main函数返回所建立链表的头指针。参数:无b:插入图书信息 struct list * Insert(struct list * head,struct list * book);功能:通过将创建函数和从main函数两种途径传过来的图书信息按编号连成一个链表,并将插入新元素的新链表的头指针返回给调用它的函数。最后main函数返回插入新元素后的链表的头指针。参数:struct list * head struct list * bookc:删除图书信息 struct list * Delete(struct list * head,int num)

7、;功能:通过从main函数中得到图书信息链表的头指针,运用两个指针的依次移动分别找到要删除的图书信息元素的前一个元素和后一个元素,之后通过指针指向的变换达到删除元素的目的,最后返回main函数一个删除后图书信息链表的头指针。参数:struct list * head,int numd:修改图书信息 struct list * Revise(struct list * head,int num);功能:通过从main函数中得到图书信息链表的头指针,运用指针的移动将要修改的元素的编号依次与链表中元素的编号进行对比找到要修改信息的元素。最后返回main函数一个修改后的图书信息链表的头指针。e:图书信

8、息遍历函数:void Print(struct list * head);功能:通过从main函数中得到图书信息链表的头指针,通过设立的指针的依次向后移动输出每个图书的信息。参数:struct list * head)f: 图书信息统计函数 int Length(struct list * head);功能:通过对图书信息的遍历统计图书信息链表中共录入了多少图书信息,最后返回main函数一个统计后的后图书信息链表的头指针。参数:struct list * headg: 图书信息输入函数 struct list * fileread();功能:从外部文件中读取保存在其中的图书信息,并将这些信息建

9、立成一个新的图书信息链表,再把这个链表的头指针返回给main函数供其它函数使用参数:无h:图书信息输出函数 void filewrite(struct list * head);功能:将录入的图书信息按照链表中的信息顺序保存到文件中参数:struct list * headi:对图书信息的排序 struct list * Sorting(struct list * head);功能:通过从main函数中得到图书信息链表的头指针,再通过指针一次从链表中取出一个图书信息并把这些信息按选定的方式排序。最后返回main函数一个排序后图书信息链表的头指针。参数:struct list * headj:保

10、存图书信息 void fprint(struct list * head);功能:将图书信息永久的保存到文件中,并且在其它函数比如删除,修改中调用此函数,将处理后的图书信息保存到文件中参数:struct list * head3 详细设计图书信息统计函数int Length(struct list * head)int n=0; struct list * p; p=head; if(p=NULL) printf(没有图书信息n); for(;p!=NULL;p=p-next) n+; return n;图书信息创建函数struct list * Create() int num,leavin

11、g,q; char name20,author20,publisher20,kind20,date20; double price; int size=sizeof(struct list); struct list * head,* p,*tail; head=tail=NULL; printf(请输入图书编号:n); scanf(%d,&num); while(num!=0) printf(书名 作者 出版社 类别 出版时间 价格 剩余量n);scanf(%s%s%s%s%s%lf%d,name,author,publisher,kind,date,&price,&leaving); p=

12、(struct list *)malloc(size); p-num=num; strcpy(p-name,name); strcpy(p-author,author); strcpy(p-publisher,publisher); strcpy(p-kind,kind); p-price=price; strcpy(p-date,date); p-leaving=leaving; p-next=NULL; if(head=NULL) head=p; else tail-next=p; tail=p; printf(请输入图书编号:n); scanf(%d,&num); printf(是否将图

13、书信息保存至文件?(1-是 0-否)n); scanf(%d,&q); if(q=1) fprint(head); printf(图书信息已成功保存至tushu_list.txt中!n); else printf(文件没有保存!n); return head;图书信息插入函数struct list *Insert(struct list * head,struct list * book) struct list *p,* p1,*p2; int q; p2=head; p=book;/*p指向待插入的结点*/ if(head=NULL) head=p;/*新插入的结点成为头结点*/ head

14、-next=NULL; else while(p-nump2-num)&(p2-next!=NULL) p1=p2;/*p1,p2各后移一个结点*/ p2=p2-next; if(p-numnum)/*在p1,p2之间插入新结点*/ if(head=p2) head=p; else p1-next=p; p-next=p2; else p2-next=p; p-next=NULL; printf(是否将插入新信息后的图书信息保存至文件?(1-是 2-否)n); scanf(%d,&q); if(q=1) fprint(head); printf(添加图书信息成功!n); return head

15、;图书信息删除函数struct list * Delete(struct list * head,int num) struct list * p1,*p2; int z; while(head!=NULL&head-num=num) p2=head; head=head-next; free(p2); if(head=NULL) return NULL; p1=head; p2=head-next;/*从表头的下一个结点搜索待删除的结点*/ while(p2!=NULL) if(p2-num=num)/*p2所指结点符合删除要求*/ p1-next=p2-next; free(p2); el

16、se p1=p2;/*p1后移一个结点*/ p2=p1-next;/*p2指向p1的后一个结点*/ printf(是否将删除后的图书信息保存至文件?(1-是 2-否)n); scanf(%d,&z); if(z=1) fprint(head); printf(删除图书信息成功!n); return head;图书信息修改函数struct list * Revise(struct list * head,int num) struct list * p1,*p2; int choice=0,d; if(head=NULL) printf(没有图书信息n); return NULL; p1=hea

17、d; p2=head-next; while(p1!=NULL&p1-num=num) p2=p1; break; while(p2!=NULL) if(p2-num=num) break; else p1=p2; p2=p1-next; printf(修改图书的哪个信息?1-书名 2-作者 3-出版社 4-类别 5-价格 6-出版时间 7-图书剩余量n); scanf(%d,choice); switch(choice) case 1: printf(请输入新的书名n); scanf(%s,p2-name); break; case 2: printf(请输入作者n); scanf(%s,p

18、2-author); break; case 3: printf(请输入出版社n); scanf(%s,p2-publisher); break; case 4: printf(请输入图书类别n); scanf(%s,p2-kind); break; case 5: printf(请输入图书价格n); scanf(%.2lf,&p2-price); break; case 6: printf(请输入出版时间n); scanf(%s,p2-date); break; case 7: printf(请输入图书剩余量n); scanf(%d,&p2-leaving); break; printf(是

19、否将修改后的图书信息保存至文件?(1-是 2-否)n); scanf(%d,&d); if(d=1) fprint(head); printf(修改图书信息成功!n); return head;图书信息遍历函数void Print(struct list * head) struct list *p; if(head=NULL) printf(没有图书信息n); return; printf(图书信息:n); printf(编号 书名 作者 出版社 类别 价格 出版时间 剩余量n); for(p=head;p!=NULL;p=p-next) printf(%2d%10s%10s%10s%10s

20、%6.2lf%10s%2dn,p-num,p-name,p-author,p-publisher,p-kind,p-price,p-date,p-leaving);图书信息查找函数void Search(struct list * head) int a,num,b=0,c=0,price=0; struct list * p; p=head; printf(查询方式:1-图书编号,2-图书价格n); scanf(%d,&a); if(a=1) printf(请输入图书的编号:n); scanf(%d,&num); if(p=NULL) printf(没有图书信息n); while(1) if

21、(p-num!=num) p=p-next; if(p=NULL) break; if(p-num=num) printf(所查询的图书信息是:n); printf(编号 书名 作者 出版社 类别 价格 出版时间 剩余量n); printf(%2d%10s%10s%10s%10s%6.2lf%10s%2dn,p-num,p-name,p-author,p-publisher,p-kind,p-price,p-date,p-leaving); b+; p=p-next; break; if(b=0) printf(n没有此书n); if(a=2) if(p=NULL) printf(没有图书信息

22、!n); printf(请输入图书的价格:n); scanf(%.2lf,&price); printf(编号 书名 作者 出版社 类别 价格 出版时间 剩余量n); do if(p-price!=price) p=p-next; else printf(%2d%10s%10s%10s%10s%6.2lf%10s%2dn,p-num,p-name,p-author,p-publisher,p-kind,p-price,p-date,p-leaving); c+; p=p-next; while(p!=NULL); if(c=0) printf(没有此书!n); 文件导入图书信息函数struct

23、 list * fileread() struct list * p,* p1,* head1; struct list book; int size=sizeof(struct list); FILE *fp; if(fp=fopen(a.txt,r)=NULL) printf(Cant open the file!n); exit(0); head1=p1=NULL; while(fread(&book,size,1,fp)=1) p=(struct list *)malloc(size); p-num=book.num; strcpy(p-name,book.name); strcpy(

24、p-publisher,book.publisher); strcpy(p-date,book.date); p-price=book.price; p-leaving=book.leaving; p-next=NULL; if(head1=NULL) head1=p; head1-next=NULL; p1=head1; else p1-next=p; p1=p1-next; fclose(fp); return head1;文件导出图书信息函数void filewrite(struct list * head) struct list * p;/*用于指向链表的结点*/ struct li

25、st book; int size=sizeof(struct list); p=head; FILE *fp; if(fp=fopen(a.txt,w)=NULL) printf(Cant open the file!n); exit(0); while(p!=NULL) book.num=p-num; strcpy(book.name,p-name); strcpy(book.author,p-author); strcpy(book.publisher,p-publisher); strcpy(book.kind,p-kind); strcpy(book.date,p-date); bo

26、ok.price=p-price; book.leaving=p-leaving; fwrite(&book,size,1,fp); p=p-next; fclose(fp);图书信息排序函数struct list * Sorting(struct list * head) struct list * b,* p,* p1,* p2,* head2; int size=sizeof(struct list); int n=0,v; p1=head2=NULL; p=head; while(p!=NULL) b=(struct list *)malloc(size); b-num=p-num;

27、strcpy(b-name,p-name); strcpy(b-author,p-author); strcpy(b-publisher,p-publisher); strcpy(b-kind,p-kind); strcpy(b-date,p-date); b-price=p-price; b-leaving=p-leaving; if(head2=NULL) head2=b; head2-next=NULL; p1=head2; p2=p1; else while(b-pricep1-price)&(p1-next!=NULL) p2=p1; p1=p1-next; if(b-priceprice) if(head2=p1) head

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1