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

下载本文档

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

文档简介

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

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

5、进行处理。/自定义枚举类型fi_type,用来表示图书信息 typedef enum _fi_type news=1, /图书信息 fi_type;/图书信息结构体 struct fi_info char name11; /书名 char writer21; /作者 char shuhao10; /书号 char fenlei10; /分类 char chuban20; /出版社 int chubantime; /出版时间 float price; /价格 fi_type type; struct fi_info* next; /结构体的指针域,用于存放链表的下个结点的地址; 模块划分本系统主

6、要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几个基本功能。 2struct 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() ; /图书排序

7、void quit(); /退出书名查找作者查找组合查找(3)程序结构主菜单 开始输入创建图书查找书名查找作者查找组合查找删除图书修改图书显示图书 退出3 详细设计1.主菜单函数的原型:void menu()函数的功能:调用菜单,使用各项功能程序:void menu() printf("nn*<图书信息管理系统>*n"); printf("-主菜单- n"); printf("ttt <1;创建图书信息 > n");printf("ttt <2;查找图书信息 > n");prin

8、tf("ttt <3;删除图书信息 > n");printf("ttt <4;修改图书信息 > n");printf("ttt <5;显示图书信息 > n");printf("ttt <6;按出版时间排序> n");printf("ttt <0;退出 > n");printf("- n");2.新建文件函数的原型:int ReadinfoFromFile()函数的功能:建立文件储存数据程序int ReadinfoFr

9、omFile() /读入数据 FILE *fp=NULL; /文件指针 struct fi_info *p=NULL; /结构体指针 int i; if(fp=fopen("sun.txt","r+")=NULL) printf("文件不存在!n"); fp=fopen("sun.txt","w"); /为输出打开一个文件 printf("文件建立成功!n"); fscanf(fp,"%d",&Book_num); /从文件中分别读入图书信息统计数

10、,以便于下面for循环的条件控制for(i=0;i<Book_num;i+)p=(struct fi_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->chub

11、an);fscanf(fp,"%d",&p->chubantime); fscanf(fp,"%.2f",&p->price);fscanf(fp,"%d",&p->type);if(p->type=1) if(head=NULL) head=p; p->next=NULL; else p->next=head; head=p; else if(head_=NULL) head_=p; p->next=NULL; else p->next=head_; head_

12、=p; fclose(fp);return 0;3.创建图书信息函数的原型:int chuangjian()函数的功能:记录图书的各项信息程序: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);prin

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

14、quot;%f",&p->price); p->type=news; Book_num+=1; p->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"

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

16、tf("图书作者 %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) printf("<查无此书>n"

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

18、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(he

19、ad=NULL) printf("<查无此书>n"); if(b) printf("<查找的图书信息不存在!>n"); /若b=1,则不存在 else if(i=3) printf("请输入要查找的 书名 价格n:"); scanf("%s %d",name,&price); for(p=head;p!=NULL;p=p->next) /一个链表指针p的遍历,直到结尾p=NULL if(strcmp(name,p->name)=0&&price=p->

20、;price) /字符串的比较函数,若前后相等则等于0 b=0; /若存在,则b=0 printf("找到要查找的图书信息:n");printf("图书名称 %sn",p->name);printf("图书作者 %sn",p->writer); printf("图书书号 %sn",p->shuhao);printf("图书分类 %sn",p->fenlei);printf("出版社 %sn",p->chuban);printf("出版时

21、间 %dn",p->chubantime);printf("图书价格 %.2fn",p->price); if(head=NULL) printf("查无此书n"); if(b) printf("<查找的图书信息不存在!>n"); /若b=1,则不存在 else printf("<没有该项功能,请重新选择:>n"); system("PAUSE"); /暂停 5.删除图书信息函数的原型:void shanchu()函数的功能:通过书名确定图书,进而删

22、除该书程序:void shanchu() /删除图书信息 struct fi_info *p=NULL; /定义两个结构体指针 struct fi_info *q=NULL; 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(

23、"%d",&a); if(a=0) if(p=head) head=head->next; else q->next=p->next; printf("删除成功!n"); else q=p; if(b) printf("<提示:查无此书!.n"); system("PAUSE"); 6.修改图书信息函数的原型:void xiugai()函数的功能:通过书名确定图书,进而修改该书的各项信息程序:void xiugai() /修改图书信息 struct fi_info *p=NULL;

24、int a,b=1; char name10; printf("请输入书名:nn"); scanf("%s",name); for(p=head;p!=NULL;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&q

25、uot;,p->fenlei); printf("出版社 %sn",p->chuban); printf("出版时间 %dn",p->chubantime); printf("图书价格 %.2fn",p->price); printf("<是否确定修改? 0 (是)or 1(否)>n"); scanf("%d",&a); if(a=0) printf("*请重新输入信息*n"); printf("请输入书名:")

26、; scanf("%s",p->name);printf("请输入作者名:"); scanf("%s",p->writer);printf("请输入书号:"); scanf("%s",p->shuhao);printf("请输入分类:"); scanf("%s",&p->fenlei); printf("请输入出版社:"); scanf("%s",&p->chuban);

27、 printf("请输入出版时间:"); scanf("%d",&p->chubantime);printf("请输入价格:"); scanf("%f",&p->price); p->type=news; printf("nn <提醒:信息修改成功!>nn"); if(b=1) printf("<没有您要修改的信息!>n"); system("PAUSE");7.显示图书信息 函数的原型:void

28、show()函数的功能:显示已存图书的各项信息程序:void show() /显示图书信息 struct fi_info *p=NULL;system("cls"); for(p=head;p!=NULL;p=p->next) printf("图书名称 %sn",p->name);printf("图书作者 %sn",p->writer); printf("图书书号 %sn",p->shuhao);printf("图书分类 %sn",p->fenlei);printf

29、("出版社 %sn",p->chuban);printf("出版时间 %dn",p->chubantime);printf("图书价格 %.2fn",p->price); system("PAUSE");8.图书排序函数的原型:void 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=aindex;aindex=ak;ak=temp;for(i=0;i<n;i+) printf("图书书名 %sn",ai->name); printf(&q

温馨提示

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

评论

0/150

提交评论