




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 报 告课 程 名 称: 程序设计实践 专 业 班 级 : 计算机科学与技术1203班 学 生 姓 名 : 董鹏军 学 号 : 201216010305 任 课 教 师 : 张苗 学 期 : 2012-2013学年第二学期 课程报告任务书题 目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)输入v(2)图书信息浏览功能输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): l 按书名查询 按作者名查询 按照价钱排序 按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。成绩评定报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分成绩评定教师: 261 需求分析根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。2 概要设计 我的图书信息管理系统包括以下几个模块 1-从文件中打开图书信息模块 2-新建书库模块 3-插入图书模块 4-删除图书信息模块5-按编号排序模块6-输出图书信息模块7-保存图书信息到文件模块;8-查询图书信息模块对于图书信息的保存,我采用的是结构,新建的图书用链表将其连接起来,采用文件保存,程序主要包括库函数,用结构定义图书信息,定义函数,main函数,以上定义函数的实现。3 详细设计 (1)头函数名#include#include#include (2)对书籍信息的定义struct Book_Listchar book_number20; /*图书编号*/char book_name40; /*该书书名*/char book_writter30; /*此书的作者*/char book_publiction40; /*该书的出版社*/char book_sort30; /*图书类别*/char book_born20; /*出版时间*/double price; /*这本书的单价*/struct Book_List *next; /*图书单的单向指针*/; (3)对子函数的定义struct Book_List *Creat_Book_List(struct Book_List *head1); /新建图书链表void book_save(struct Book_List *); /保存图书信息到文件struct Book_List *Open_book(); /从文件中读取书目信息struct Book_List *book_Sort(struct Book_List *head1); /对图书链表按编号排序void Printf_out(struct Book_List *); /输出链表中的信息struct Book_List *Insert_Book_list(struct Book_List *); /插入图书信息struct Book_List *Delete_Book_List(struct Book_List * ); /删除图书struct Book_List *T_book_number(struct Book_List *);/按书号删除struct Book_List *T_book_name(struct Book_List *);/按书名删除void book_hunt(struct Book_List *head1);/搜索图书void book_number(struct Book_List *head1);/通过图书编号检索图书信息void book_name(struct Book_List *head1);/通过图书书名检索图书信息void book_writer(struct Book_List *head1);/通过作者检索图书信息void Printf(struct Book_List *); /输出单个书目的信息int Count1=0; (4)各个函数的实现1.新建链表函数的实现struct Book_List *Creat_Book_List(struct Book_List *head1)/新建图书链表struct Book_List *tail , *p;char book_number20; /*图书编号*/char book_name40; /*该书书名*/char writter30; /*此书的作者*/char book_publiction40; /*该书的出版社*/char book_sort30; /*图书类别*/char book_born20; /*出版时间*/double price; int size = sizeof(struct Book_List);int choice = 1;if(head1 != NULL) p = head1; while(p-next != NULL) p = p - next; tail = p; while(choice != 0) system(cls); printf( 【建 立 书 籍 信 息】nn); printf(请输入图书编号:); scanf(%s, book_number ); printf(请输入图书出版社:); scanf(%s, book_publiction); printf(请输入图书名:); scanf(%s, book_name); printf(请输入作者:); scanf(%s,writter); printf(请输入图书类别:); scanf(%s, book_sort); printf(请输入出版时间:); scanf(%s,book_born); printf(请输入图书价格:); scanf(%lf, &price ); p = (struct Book_List *)malloc(size); strcpy(p - book_number , book_number); strcpy(p - book_name , book_name); strcpy(p - book_writter , writter); strcpy(p - book_publiction , book_publiction); strcpy(p - book_sort , book_sort); strcpy(p - book_born , book_born); p - price = price; p - next = NULL; if(head1 = NULL) head1 = p; else tail - next = p; tail = p; printf(是否继续建立图书信息(1/0 ?)n); scanf(%d, &choice);return head1;2.插入图书信息函数的实现struct Book_List *Insert_Book_list(struct Book_List *head ) /插入图书信息struct Book_List *ptr1 , *ptr2 , *p;char book_number20; /*图书编号*/char book_name40; /*该书书名*/char writter30; /*此书的作者*/char book_publiction40; /*该书的出版社*/char book_sort30; /*图书类别*/char book_born20; /*出版时间*/double price; int choice = 1;int size = sizeof(struct Book_List);while(choice = 1)system(cls);printf( 【插 入 如 书 籍 信 息】nn); printf(请输入图书编号:); scanf(%s, book_number ); printf(请输入图书出版社:); scanf(%s, book_publiction); printf(请输入图书名:); scanf(%s, book_name);printf(请输入作者:); scanf(%s,writter); printf(请输入图书类别:); scanf(%s, book_sort);printf(请输入出版时间:); scanf(%s,book_born); printf(请输入图书价格:); scanf(%lf, &price ); p = (struct Book_List *)malloc(size); strcpy(p - book_number , book_number); strcpy(p - book_name , book_name); strcpy(p - book_writter , writter); strcpy(p - book_publiction , book_publiction); strcpy(p - book_sort , book_sort); strcpy(p - book_born , book_born); p - price = price; p - next = NULL; /书库信息为空时 if(head = NULL) head = p; /书库信息不为空 elseptr1 = head; ptr2 = head - next; while(ptr2 != NULL) ptr1 = ptr1 - next; ptr2 = ptr2 - next; ptr1 - next = p; printf(-此图书信息插入成功!-n); printf(是否继续建立图书信息(1/0 ?)n); scanf(%d, &choice); return head;3.删除图书信息函数的实现struct Book_List *Delete_Book_List(struct Book_List *head ) /删除图书int choice , i = 1; /链表为空if(head = NULL)printf(书库信息为空,请先建立书库信息。n);printf(想要新建书库请输入2,退出请输入0:);scanf(%d, &choice);if(choice = 2) head = Creat_Book_List(head); return head;elsereturn NULL; while(i = 1) system(cls);printf( 删 除 图 书 信 息 n);printf( 通过图书编号-请输入1 通过书名-请输入2 退出删除-请输入0 n);printf(请输入操作对应的输入数: );scanf(%d, &choice);switch(choice)case 1:head = T_book_number(head);getchar();break;case 2:head = T_book_name(head);getchar();break;case 0:printf(退出删除操作成功n);i = 0;getchar();break;default:printf(输入错误,退出系统。n);i = 0;getchar();return head;struct Book_List *T_book_number(struct Book_List *head) /通过图书编号删除图书信息struct Book_List *ptr1 , *ptr2 , *p;char book_number20;int flag = 1; printf(请输入需要删除图书编号:);scanf(%s, book_number);for(p = head;p != NULL;p= p - next)if(strcmp(p - book_number , book_number) = 0) flag = 0;break;if(flag = 1)printf(没 有 找 到 编 号 为 %s 的 图 书 信 息!n, book_number); else /要删除结点在表头 if(strcmp(head - book_number , book_number) = 0) do ptr1 = head; head = head - next; free(ptr1);while( strcmp(head - book_number , book_number) = 0); printf(删 除 图 书 信 息 成 功 !n); /要删除节点为非表头结点 else ptr1 = head; ptr2 = head - next; while(ptr2 != NULL) if(strcmp(ptr2 - book_number , book_number) = 0) ptr1 - next = ptr2 - next; free(ptr2); else ptr1 = ptr2; ptr2 = ptr1 - next; printf(删 除 图 书 信 息 成 功 !n); getchar();return head;struct Book_List *T_book_name(struct Book_List *head) /通过图书书名删除图书信息struct Book_List *ptr1 , *ptr2 , *p;char book_name20;int flag = 1; printf(请输入需要删除图书书名:);scanf(%s, book_name);for(p = head;p != NULL;p= p - next)if(strcmp(p - book_name , book_name) = 0) flag = 0;break;if(flag = 1)printf(没 有 找 到 书 名 为 %s 的 图 书 信 息!n, book_name); else /要删除结点在表头 if(strcmp(head - book_name , book_name) = 0) do ptr1 = head; head = head - next; free(ptr1); while( strcmp(head - book_name , book_name) = 0); printf(删 除 图 书 信 息 成 功 !n); /要删除节点为非表头结点 else ptr1 = head; ptr2 = head - next; while(ptr2 != NULL) if(strcmp(ptr2 - book_name , book_name) = 0) ptr1 - next = ptr2 - next; free(ptr2); else ptr1 = ptr2; ptr2 = ptr1 - next; printf(删 除 图 书 信 息 成 功 !n);getchar();return head;4.排序函数的实现struct Book_List *book_Sort(struct Book_List *head1) /排序函数struct Book_List *head; /定义链表的头指针struct Book_List *min;struct Book_List *p_min; /min前的节点struct Book_List *tail; /定义链表的尾指针struct Book_List *p , *ptr;head = NULL;while(head1 != NULL)p = head1;while(p - next != NULL)p = p - next;ptr = p;for(p = head1,min = head1;p - next != NULL;p = p - next)if(strcmp(p - next) - book_number , min - book_number) next;if(head = NULL)head = min;tail = min;elsetail - next = min;tail = min;if(min = head1)head1 = head1 - next;else if(min = ptr)p_min - next = NULL;elsep_min - next = min - next;if(head != NULL)tail - next = NULL;printf(排序成功!n);getchar();return head;5.将图书写入文件和读出文件函数的实现void book_save(struct Book_List *head) /保存图书信息到文件FILE *fp;struct Book_List *p;if(fp = fopen(书库信息.txt , w) = NULL)printf(书 库 信 息 文 件 打 开 出 错 ! n);exit(0);for(p = head;p != NULL;p = p - next) fprintf(fp , %s %s %s %s %s %s %.2fn , p - book_number ,p - book_name ,p - book_writter ,p - book_publiction ,p - book_sort ,p - book_born, p - price );if(fclose(fp)printf(不 能 关 闭 书 库 信 息 文 件!n);exit(0);elseprintf(-图 书 信 息 保 存 成 功 -n);getchar();struct Book_List *Open_book() /从文件中打开图书信息FILE *fp;int size = sizeof(struct Book_List);struct Book_List *head , *p , *tail ;head = tail = NULL; if(fp = fopen(书库信息.txt , r) = NULL)printf(书 库 信 息 文 件 打 开 出 错 ! n);exit(0);printf(tttt-书 库 信 息 文 件 打 开 成 功-!n);while(!feof(fp)p = (struct Book_List *)malloc(size); fscanf(fp , %s%s%s%s%s%s%lf , &p - book_number ,&p - book_name ,&p - book_writter,&p - book_publiction ,&p - book_sort ,&p - book_born, &p - price ); if(feof(fp) break; p - next = NULL;if(head = NULL)head = p;elsetail - next = p;tail = p;if(fclose(fp)printf(不 能 关 闭 书 库 信 息 文 件!n);exit(0);getchar();return head;6.搜索图书信息函数的实现void book_hunt(struct Book_List *head1)/搜索图书信息int choice , i = 1; /链表为空if(head1 = NULL)printf(书库信息为空,请先输入n);return;while(i = 1) system(cls);printf( 【搜 索 图 书】 n);printf( 1-通过图书编号 n);printf( 2-通过书名 n);printf( 3-通过作者 n);printf( 0-退出 n);printf(请输入操作对应的输入数: );scanf(%d, &choice);switch(choice)case 1: book_number(head1);getchar(); break;case 2:book_name(head1);getchar(); break;case 3:book_writer(head1);getchar(); break;case 0:printf(退出操作成功n);i = 0;getchar(); break;default:printf(输入错误,退出系统。n);i = 0;getchar();return;void book_number(struct Book_List *head1) /通过图书编号检索图书信息struct Book_List *p ;char book_number20;int flag = 0; printf(请 输 入 要 查 询 的 图 书 编 号:);scanf(%s, book_number);for(p = head1;p != NULL;p= p - next)if(strcmp(p - book_number , book_number) = 0) flag = 1;break;if(flag = 0)printf(没 有 找 到 编 号 为 %s 的 图 书 信 息!n, book_number);else Printf(p); /输出搜索到的图书信息getchar();void book_name(struct Book_List *head1) /通过图书书名检索图书信息struct Book_List *p;char book_name40;int flag = 0; printf(请 输 入 要 查 询 的 图 书 书 名:);scanf(%s, book_name);for(p = head1;p != NULL;p= p - next)if(strcmp(p - book_name , book_name) = 0) flag = 1;break;if(flag = 0)printf(没 有 找 到 编 号 为 %s 的 图 书 信 息!n, book_name);else Printf(p); /输出搜索到的图书信息getchar();void book_writer(struct Book_List *head1) /通过作者检索图书信息struct Book_List *p;char book_writter30;int fla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代自考试题及答案
- 普洱城投招聘考试题库及答案
- 传热学考试试题及答案
- 哲学考试题库及答案
- 湖北省孝感市孝昌县2026届九年级化学第一学期期中教学质量检测试题含解析
- 2026届南通市启秀中学九年级化学第一学期期中监测模拟试题含解析
- 2026届安徽阜阳市化学九年级第一学期期末达标检测模拟试题含解析
- 2025年物流仓储管理岗位资格认证考试试题及答案解析
- 2026届四川省南充市蓬安县九年级英语第一学期期末质量检测试题含解析
- 2025年文物保护员专业知识评测试题及答案解析
- 义务教育地理课程标准(2011-年版)
- 设计总监升职述职报告
- JJF 2203-2025水质毒性分析仪校准规范
- 施工安全教育内容
- 电信人工智能学习考试题(附答案)
- 肝门部胆管癌诊断和治疗指南(2025版)解读课件
- 急诊危重症患者转运专家共识解读课件
- 《发芽小麦粉气流分级产品及其面筋蛋白品质的研究》
- 2025年危险化学品经营单位主要负责人安全生产全国考试题库(含答案)
- 青岛版五四制科学五年级上册科学学生活动手册参考答案
- 社区街道网格员安全培训
评论
0/150
提交评论