基于C语言数据结构图书管理系统

合集下载

基于C语言的图书馆管理系统

基于C语言的图书馆管理系统

职业技术学院编号本科生毕业论文设计题目基于C语言的图书馆管理系统作者姓名指导教师所在学院职业技术学院专业(系)班级(届)完成日期 2016 年 5 月 4 日目录中文摘要、关键字 (Ⅰ)英文摘要、关键字 (Ⅱ)第一章引言 (2)1.1 选题的背景和意义 (2)1.1.1 选题背景 (2)1.1.2 选题意义 (3)1.2 图书管理系统简介 (3)1.3 图书管理系统的需求分析....... (错误!未定义书签。

)第二章设计分析.. (4)2.1 题目分析 .................... (错误!未定义书签。

)2.2 系统分析 .................... (错误!未定义书签。

)第三章管理系统的设计.............. (错误!未定义书签。

)3.1 系统的总体设计 .............. (错误!未定义书签。

)3.2 系统的详细设计 .............. (错误!未定义书签。

)3.2.1 主函数.................. (错误!未定义书签。

)3.2.2 输入模块................ (错误!未定义书签。

)3.2.3 删除模块................ (错误!未定义书签。

)3.2.4 查询模块................ (错误!未定义书签。

)3.2.5 修改模块................ (错误!未定义书签。

)3.2.6 显示模块................ (错误!未定义书签。

)3.2.7 借出模块................ (错误!未定义书签。

)3.2.8 归还模块................ (错误!未定义书签。

)3.2.9 公共函数................ (错误!未定义书签。

)第四章调试与测试.................. (错误!未定义书签。

)第五章系统的实现.................. (错误!未定义书签。

原创c语言图书馆管理系统源代码

原创c语言图书馆管理系统源代码

原创C语言图书馆管理系统源代码介绍图书馆作为一个重要的知识储备和学习场所,必须进行有效的管理和组织。

使用C语言编写的图书馆管理系统可以帮助图书馆实现自动化的借阅、归还和管理功能。

本文将介绍一个原创的C语言图书馆管理系统的源代码。

功能概述这个图书馆管理系统具有以下核心功能: - 图书管理:包括添加图书、删除图书、查询图书等操作。

- 借阅管理:可以进行借阅操作,记录借阅者和借阅时间。

- 归还管理:可以进行归还操作,并更新图书的可借状态。

- 用户管理:管理借阅者的信息,包括添加用户、删除用户、查询用户等操作。

数据结构设计该图书馆管理系统使用了以下几种数据结构: 1. 图书(Book)结构体:包含图书的ID、书名、作者、可借状态等字段。

2. 用户(User)结构体:包含用户的ID、姓名、地址等字段。

3. 借阅记录(BorrowRecord)结构体:包含借阅者ID、图书ID、借阅时间等字段。

系统流程整个系统的流程可以分为以下几个步骤: 1. 用户打开系统,进入主菜单。

2. 用户选择不同的功能选项(如图书管理、借阅管理、用户管理等)。

3. 根据用户选择的功能,进入相应的功能界面。

4. 用户可以根据提示,输入相应的信息进行图书管理、借阅管理或用户管理操作。

5. 用户完成操作后,可以选择返回主菜单或退出系统。

代码实现以下是一个简化版的C语言图书馆管理系统的源代码:```c #include <stdio.h>// 定义结构体 struct Book { int id; char name[50]; char author[50]; int isAvailable; };struct User { int id; char name[50]; char address[100]; };struct BorrowRecord { int userId; int bookId; char borrowDate[20]; };// 函数声明 void addBook(); void deleteBook(); void searchBook(); void borrowBook(); void returnBook(); void addUser(); void deleteUser(); void searchUser();int main() { int choice;do {// 显示主菜单printf(\。

c语言课程设计图书管理系统

c语言课程设计图书管理系统

c语言课程设计图书管理系统一、教学目标本课程的教学目标是使学生掌握C语言基础知识,学会使用C语言进行程序设计,能够运用C语言实现图书管理系统的功能。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识,理解图书管理系统的业务流程和需求。

2.技能目标:学生能够运用C语言编写程序,实现图书管理系统的各个功能模块,如图书信息的添加、删除、修改和查询等。

3.情感态度价值观目标:培养学生对计算机编程的兴趣和热情,增强学生的自主学习能力和团队协作精神,使学生在解决实际问题时能够积极思考、勇于尝试。

二、教学内容本课程的教学内容分为五个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。

2.函数与模块化编程:学习函数的定义、声明和调用,掌握模块化编程的方法和技巧。

3.图书管理系统需求分析:了解图书管理系统的业务流程,明确系统需求。

4.图书管理系统功能实现:使用C语言编写程序,实现图书管理系统的各个功能模块。

5.程序调试与优化:学习使用调试工具,掌握调试和优化程序的方法。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解C语言基本语法和概念,引导学生掌握知识要点。

2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题。

3.实验法:学生动手编写程序,实现图书管理系统的功能,培养实际操作能力。

4.讨论法:分组讨论问题,培养学生的团队协作能力和解决问题的能力。

四、教学资源本课程所需教学资源包括:1.教材:《C程序设计语言》或《C语言入门教程》等。

2.参考书:《C语言编程实例解析》、《C语言常用算法解析》等。

3.多媒体资料:教学PPT、视频教程、编程案例等。

4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。

5.在线资源:编程论坛、博客、教程等。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答情况、团队合作表现等,占总评的30%。

基于vc++的C语言图书馆管理系统课程设计报告

基于vc++的C语言图书馆管理系统课程设计报告

图书管理课程设计学生姓名:学生学号:所在班级:任课教师:图书馆管理系统【设计目的】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等. 试设计一图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)图书信息录入功能(图书信息用文件保存)--输入3)图书信息浏览功能--输出4)查询和排序功能:(至少一种查询方式)--算法5)按书名查询6)按作者名查询7)图书信息的删除与修改(可选项)*/【设计思路】根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。

【总体设计】图1 系统功能模块图【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】#include<stdio.h>#include<stdlib.h>#include<conio.h>int get(){int o;scanf("%d",&o);}struct BOOK{int ID,usr[10],total,store,days[10];char name[31],aurthor[21];}books[100];/*上面是结构体的定义,用于存放书籍及借书的信息。

*/void page_title(char*menu_item){printf("图书管理系统\n-%s-\n",menu_item);}/*通过参数menu_item,可以显示当前的状态。

*/void return_confirm(){printf("\n按任意返回\n");getch();}/*上面是返回前请求确认的函数,以便在返回前观察结果*/int search_book(){int n,i;printf("输入图书序号:");scanf("%d",&i);for(n=0;n<100;n++){if(books[n].ID==i){printf("书名:%s\n",books[n].name);printf("作者:%s\n",books[n].aurthor );printf("存数:%d of ",books[n].store );printf("%d\n",books[n].total);return n;}}printf("\n输入错误或无效图书序号\n");return -1;}/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返回数组下标,如果找不到相应记录则提示错误并返回-1。

基于C语言的图书管理系统

基于C语言的图书管理系统

摘要摘要21世纪是信息的社会,信息作为社会最主要的资源,将成为战略资引起人们广泛的关注。

然而如何获取信息?图书是我们最好的获取信息的方式。

但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,对读者去图书馆借书造成了一定困扰,学校图书馆为了更加快捷的管理学校的图书资源,方便广大读者借阅图书。

节省图书馆管理的经济成本与时间成本,方便图书馆各个部门间的合作以及与图书供应商的联系。

决定开发此借阅系统。

本系统便是尝试用c++架构一个图书管理系统,它是在Windows 7下,以visual C++开发平台。

它分为用户部分和管理员部分,用户应该有查找,注册,归还,查看的功能,管理员应该添加,删除,查找,查看,修改等功能。

建成后的系统是一个静态的,具有图书提供、系统管理等功能的基本的图书管理系统。

关键词C++;visual C++;图书管理系统目录目录摘要 (I)第1章专业综合课程设计概述 (1)1.1专业综合课程设计的目的和意义 (1)1.2专业综合课程设计内容安排 (1)1.3本报告主要内容 (1)第2章技术综述 (2)2.1C++简介 (2)2.2C++技术的优势 (2)2.3C++的基本组成部分 (3)2.4C++程序技术的实现 (3)2.5本章小结 (4)第3章图书系统分析 (5)3.1需求分析 (5)3.2可行性分析 (5)3.3本章小结 (5)第4章图书管理系统设计 (7)4.1总体设计 (7)4.2系统功能结构设计 (7)4.3设计目标 (9)4.4本章小结 (9)第5章图书管理系统实现 (10)5.1详细设计 (10)5.1.1书籍结构体(Book) (10)5.1.2书籍管理结构体(BookManage) (10)5.1.3读者结构体(Reader) (11)专业综合课程设计报告5.1.4读者管理结构体(ReaderManage) (12)5.1.5菜单结构体(Menu) (12)5.1.6主函数(main) (13)5.2编码调试、测试 (13)5.2.1各界面菜单显示 (13)5.2.2登录验证 (16)5.2.3注册新读者用户 (17)5.2.4添加新的图书资料 (17)5.2.5修改已有图书资料 (18)5.4.6删除已有图书资料 (18)5.4.7查找已有图书资料 (19)5.4.8显示所有图书资料 (19)5.3本章小结 (20)专业综合课程设计总结 (21)参考文献 (22)第1章专业综合课程设计概述第1章专业综合课程设计概述1.1专业综合课程设计的目的和意义通过这次课程设计具体了解计算机科学与技术专业相关领域的技术现状和发展动态,了解软件技术的应用和发展,通过在相关软件开发人员指导下进行软件开发基本技能的学习和训练,力求对本专业相关领域形成较为专业、系统、和全面的认识,培养专业兴趣和实践技能。

c语言图书信息管理系统c语言

c语言图书信息管理系统c语言

图书管理系统目录一、问题描述这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。

通过这些信息使之提供以下功能:(1)图书信息创建功能。

其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。

(图书信息用文件保存)。

(2)图书信息查看功能。

用来查看各项图书信息。

(3)图书信息查找功能。

通过已知信息来查找想要的图书。

(4)图书信息的删除。

可以删除特定图书。

(5)图书信息的修改。

可以修改图书的各项信息。

(6)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能二、概要设计1 数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。

struct book{int num;//编号char name[20];//书名char author[20];//作者char publisher[20];//出版社int price;//价格int store;//库存};//图书信息结构体2 模块划分本系统主要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几个基本功能。

void setup(struct book bo[]);//新建图书void search(struct book bo[]);//查找图书void modify(struct book bo[]);//查看图书void del(struct book bo);//删除图书void allbook(struct book bo[]);显示所有图书3 程序流程图否开始菜单新建图书修改信息查询图书删除图书所有图书退出是结束三、详细设计1 主函数int main()//主{struct book bo[100];char c;while(1){system("color 1A");printf("\n");printf("\n\t\t\t >>>欢迎进入图书管理系统<<<\n\n");printf("===================================== ===========================================\ n\n");printf("\t\t\t\t 1 录入新书\n\t\t\t\t 2 查询图书\n");printf("\t\t\t\t 3 修改信息\n\t\t\t\t 4 删除图书\n");printf("\t\t\t\t 5 所有图书\n");printf("\t\t\t\t 0 退出系统\n\n");printf("===================================== ===========================================\ n");printf("请选择:");c=getchar();switch(c){case'1':{setup(bo); getchar();break;}case'2':{search(bo);getchar();break;}case'3':{modify(bo);getchar();break;}case'4':{del(bo);getchar();break;}case'5':{allbook(bo);getchar;break;}case'0':{printf("\n感谢使用本系统");return 0;break;}default:{printf("\n输入有误,请重新输入:" );c=getchar();} }}}2 新建图书void setup(struct book bo[])打开文件或者新建一个文件,键盘输入新建的图书信息,然后把数据全部保存在数组bo数组中,最后存入文件。

c语言课程设计图书管理系统

c语言课程设计图书管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本知识,能够运用C语言设计简单的图书管理系统。

具体目标如下:1.知识目标:•掌握C语言的基本语法和数据结构。

•理解图书管理系统的需求和设计原理。

2.技能目标:•能够使用C语言进行程序设计和调试。

•能够独立设计并实现图书管理系统的功能模块。

3.情感态度价值观目标:•培养学生的编程兴趣和自主学习能力。

•培养学生的团队协作能力和问题解决能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的需求分析和设计。

具体内容如下:1.C语言的基本语法:•变量和数据类型•运算符和表达式•函数和数组2.数据结构:3.图书管理系统的需求分析和设计:•用户界面设计•图书信息管理•借阅信息管理•查询和统计功能三、教学方法本课程采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解C语言的基本语法和数据结构,使学生掌握相关知识。

2.案例分析法:通过分析图书管理系统的需求和设计案例,使学生理解并能够独立设计类似的系统。

3.实验法:通过编写和调试代码,使学生掌握C语言编程的技巧和方法。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。

具体如下:1.教材:选用权威出版的C语言编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的C语言编程参考书籍,供学生深入学习和参考。

3.多媒体资料:制作课件和教学视频,以图文并茂的方式呈现教学内容,增强学生的学习兴趣。

4.实验设备:提供计算机和相关的编程工具,为学生提供实践编程的机会。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问和小组讨论等方式评估学生的学习态度和参与程度。

2.作业:布置适量的编程作业,评估学生的编程能力和对知识的掌握程度。

3.考试:进行期中和期末考试,评估学生的综合运用能力和对知识的全面掌握。

基于C语言的图书管理系统


1图书管理系统和开发环境简介
进 行代码 编写和功能的实现,最后进行测试和 的功能实现出发,测试主要功能的实现 。白盒 功 能的分 析,完成一个应用系统的整体设计工 测 试需要了解程序的逻辑结构 ,对程序 的各种
随 着 社 会 主 义 经 济 的 发 展 , 各 种 信 息 管 程 , 需 要 用 到 c 语 言 中 的 算 法 , 功 能 通 过 函 通 路结构和基本算法都要了解 ,来检测 图书管
展迅速 ,图书馆 的馆藏量也在不断的加大 ,图
根 据系 统分 析功 能 的需求 制定 图书 管理 护 。 随着 信 息 化 时 代 的 到 来 , 运 用 互 联 网 技 术
书管理系统可 以代替 图书管理员大部分 的工作 系统的总体设计 ,采用 自顶向下的层次化 的模 进行对 日常工 作的 管理 是今后 业务 发展 的潮
格按照编程 的标准 要求 自己,在 复杂的函数结 构 上 加 注 释 ,有 利 于 后 期 管 理 人 员 的维 护 。
代 码测 试通 过两 种方 式来 实现 ,黑 盒测
析 ,从 图 书 管 理 系 统 目标 的 建 立 、需 求 分 析 、 试 , 不考 虑 程序 的 语 法 结 构 , 从 图 书 管 理 系 统
来说 ,计算机系统 实现对 图书的管理功能,代 对 于 缺 失 和 淘 汰 的 图书 进 行信 息 的删 除 ; 修 改 确 保 图 书 管 理 系 统 的 正 常 投 入 使 用 。
替人工管理 ,使得 图书管 理变得 规范化和严谨 功能 ,对 图书馆 图书信 息进 行修 改;借阅功能, 5结语 化 ,避 免 了很 多 因 人 工操 作而 带 来 的 不 必 要 的 通过 系统实现 自主借 阅功 能,并且能查阅相关

C语言课程设计——图书馆管理系统

C语言课程设计——图书馆管理系统目录第1章引言 (2)1.1 题目背景 (2)1.2 设计目的 (2)1.3 解决问题 (2)第2章使用工具与特点 (4)2.1 C语言的发展 (4)2.2 C语言的特点 (5)第3章总体设计 (6)3.1编写目的 (6)3.2系统功能 (6)第4章系统分析与设计 (12)4.1添加功能设计 (12)4.2借阅图书功能 (13)第5章系统功能实现 (19)5.1添加功能 (19)5.2借阅功能 (19)结论 (22)致谢 (23)第1章引言1.1 题目背景随着计算机技术的飞速发展,改变了世界,也改变了人类的生活。

作为现代科学技术的飞速发展,改变了世界,也改变了人类的生活。

新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求当今社会,多元文化快速发展,人与人的交流也越来越多,社交也越来越广泛,这时,记住自己认识的人是很重要的,因此我们做了这个程序,为了使我们更有效的记录下自己所认识的人,更方便去和更多的人交流而不会记错。

C语言成了在国内外使用的一种计算机语言。

C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。

现在大多数的高校都把C语言作为第一门计算机语言进行教学,这是可行的,学生也是能够学习好的。

1.2 设计目的这次设计主要是应用了C程序设计中的一些算法,还有一些函数的调用,结构体的应用等,根据他们的基本思想来编写程序。

程序包括的主要内容可以对图书馆管理系统进行输入、修改、删除、借阅、归还、显示等操作,设计一个有关学生借阅图书的管理程序,来方便人们对信息更方便的使用,经过这样一个过程来巩固和完善自己所学的知识,同时来培养一下自己的实践能力。

通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。

图书管理系统c语言

图书管理系统C语言1. 简介图书管理系统是一种用于管理图书馆藏书和借阅记录的软件系统。

它通常包括图书的录入、借阅、归还、查询等功能,能够提高图书馆的工作效率和服务质量。

本文将使用C语言编写一个简单的图书管理系统,实现基本的图书信息录入、修改、查询、借阅、归还等功能。

2. 功能实现2.1 数据结构我们首先需要定义合适的数据结构来存储图书信息和借阅记录。

以下是一个简单的数据结构示例:struct Book {int id; // 图书编号char title[100]; // 图书标题char author[50]; // 图书作者char category[50]; // 图书分类int isBorrowed; // 图书是否已借阅,0表示未借阅,1表示已借阅char borrowerName[100]; // 借阅者姓名// 可根据需求扩展其他字段};struct BorrowRecord {int bookId; // 图书编号char borrowerName[100]; // 借阅者姓名char borrowDate[20]; // 借阅日期char returnDate[20]; // 归还日期// 可根据需求扩展其他字段};2.2 图书信息录入和修改我们可以通过实现相应的函数来实现图书信息的录入和修改。

以下是一个简单的示例:void addBook(struct Book *library, int *count) {// 输入图书信息,将其存入library数组中,同时更新count}void updateBook(struct Book *library, int count, int bookId) { // 根据图书编号bookId,更新library数组中对应图书的信息}2.3 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与技术专业课程设计任务书1 需求分析1本演示程序中,用户从键盘输入图书信息,图书编号,名称,类别,作者,出版社,价格,购买日期。

2演示程序以用户和计算机的对话方式执行,即在运行窗口出现提示信息,有用户从键盘录入,显示结果会在显示之后。

3程序执行的命令包括:查询图书信息,删除图书信息,对所有图书进行排序,统计各种类的图书数目。

显示所有图书信息4 测试数据:2001 离散数学 X 左孝凌上海科学出版社 18.00 2009/6/82002 数据结构 B 严蔚敏清华大学出版社 30.00 2010/4/1 2 程序总体设计(1)数据结构依据输入的数据信息和数据格式,连表结点用结构体实现。

采用链表方式存储,typedef:typedef struct //定义表示日期数据的结构体数据类型{int month;int day;int year;} DATE;typedef struct Booktype //定义表示图书信息的结构体数据类型{char id[10]; /* 图书编号*/char name[40]; /* 图书名称*/char type; /* 图书类型*/char writer[10]; /* 图书作者*/char publisher[20]; /* 图书出版社*/float price; /* 图书价格*/DA TE buydate; /* 图书购买日期*/} Btype;typedef struct Booklist /* 定义表示所有图书信息的链表数据类型*/{Btype *bk;struct Booklist *next;} Blist;(2)模块划分程序函数清单:Void maininterface(); /* 主界面函数*/ void Bookinput(); /* 输入图书信息函数*/ void Bookdisplay(); /* 显示所有图书信息函数*/ void Booksort(); /* 对图书分类排序函数*/ void Booksearch(); /* 查找图书详细信息函数*/ void Bookdelete(); /* 删除图书信息函数*/ void Bookstat(); /* 统计全部图书数目*/(3)程序总体框架菜单代码3 功能块函数与调试录入图书信息函数1 函数名称:voidBookinput();函数功能:从键盘祸从文件读入图书信息。

2 程序清单 { int n=0; Btype bk;FILE *fp;Loop:printf("\n\n\n\t\t\t 图书信息录入\n"); printf("\n\t\t1: 图书编号:"); scanf("%s",bk.id);printf("\n\t\t2: 图书名称:"); scanf("%s",);printf("\n\t\t3: 图书类别(X:学习 B:编程 Y:娱乐 G:工具 Q:其它):"); scanf("%s",&bk.type); printf("\n\t\t4: 图书作者:"); scanf("%s",bk.writer);printf("\n\t\t5: 图书出版社:"); scanf("%s",bk.publisher); printf("\n\t\t6: 图书价格(元):"); scanf("%f",&bk.price);printf("\n\t\t7: 购买日期(mm/dd/yyyy):");scanf("%d/%d/%d",&,&,&;printf("\n\t\t1: 保存并继续输入\n");printf("\n\t\t2: 保存并返回\n");printf("\n\t\t3: 取消并重新输入\n");printf("\n\t\t4: 返回主菜单\n");printf("\t\t请输入选项:");scanf("%d",&n);if(n==1){if((fp=fopen("Book.lib","ab"))==NULL)fp=fopen("Book.lib","wb+");fwrite(&bk,sizeof(Btype),1,fp);goto Loop;}if(n==2){ if((fp=fopen("Book.lib","ab"))==NULL)fp=fopen("Book.lib","wb+");fwrite(&bk,sizeof(Btype),1,fp);fclose(fp);}if(n==3) goto Loop;}3 运行结果查询图书信息函数1.函数原型,功能和形参说明函数原型:void Booksearch();函数功能:查询图书信息;2.程序清单:{Btype bk,ts;FILE *fp;int i;int j=0;if((fp=fopen("Book.lib","rb+"))==NULL){printf("找不到文件Book.lib !\n");exit(0);}rewind(fp);printf("\n请选择按哪个参数查询(1:编号2:名称3:作者4:出版社5:价格):");scanf("%d",&i);if(i==1){printf("请输入您要查询的图书的编号\n");scanf("%s",ts.id);while(!feof(fp)){if (fread(&bk,sizeof(Btype),1,fp))if(strcmp(ts.id,bk.id)==0){printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk .publisher,bk.price,,,;j++;}}fclose(fp);if(j==0) printf("\n找不到您要查询的图书信息!\n");}if(i==2){printf("请输入您要查询的图书的名称\n");scanf("%s",);while(!feof(fp)){if (fread(&bk,sizeof(Btype),1,fp))if(strcmp(,)==0){printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk .publisher,bk.price,,,;j++;}}fclose(fp);if(j==0) printf("\n找不到您要查询的图书信息!\n");}if(i==3){printf("请输入您要查询的图书的作者\n");scanf("%s",ts.writer);while(!feof(fp)){if (fread(&bk,sizeof(Btype),1,fp))if(strcmp(ts.writer,bk.writer)==0){printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk .publisher,bk.price,,,;j++;}}fclose(fp);if(j==0) printf("\n找不到您要查询的图书信息!\n");}if(i==4){printf("请输入您要查询的图书的出版社\n");scanf("%s",ts.publisher);while(!feof(fp)){if (fread(&bk,sizeof(Btype),1,fp))if(strcmp(ts.publisher,bk.publisher)==0){printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk .publisher,bk.price,,,;j++;}}fclose(fp);if(j==0) printf("\n找不到您要查询的图书信息!\n");}if(i==5){printf("请输入您要查询的图书的价格\n");scanf("%f",&ts.price);while(!feof(fp)){if (fread(&bk,sizeof(Btype),1,fp))if(ts.price==bk.price){printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writer,bk .publisher,bk.price,,,;j++;}}fclose(fp);if(j==0) printf("\n找不到您要查询的图书信息!\n");}}3 运行结果:删除图书信息函数1.函数原型,功能和形参说明函数原型:void Bookdelete();函数功能:查询图书信息;2.程序清单:void Bookdelete(){Blist *head, *p, *q;Blist *s,*h;FILE *fp;int n=0;int i=0;if((fp=fopen("Book.lib","rb+"))==NULL){printf("找不到文件Book.lib !\n");exit(0);}head= (Blist *)malloc(sizeof(Blist));head->bk = (Btype *)malloc(sizeof(Btype)); head->bk = NULL;q=p = (Blist *)malloc(sizeof(Blist));q->bk=p->bk = (Btype *)malloc(sizeof(Btype)); rewind(fp);printf("\n");while(!feof(fp)){p= (Blist *)malloc(sizeof(Blist));p->bk = (Btype *)malloc(sizeof(Btype));if (fread(p->bk,sizeof(Btype),1,fp)){n++;if(n==1) head->next=p;else q->next=p;q=p;}}q->next=NULL;fclose(fp);s=head;h = (Blist *)malloc(sizeof(Blist));h->bk = (Btype *)malloc(sizeof(Btype));printf("请输入您要删除的图书的编号!\n");scanf("%s",h->bk->id);for(s=head;s->next;s=s->next){if(strcmp(h->bk->id,s->next->bk->id)==NULL){if(!s->next->next) { s->next=NULL; printf("已删除编号为:%d的图书!\n",s->next->bk->id);i++;break;}else { s->next=s->next->next; printf("已删除编号为:%d的图书!\n",s->next->bk->id);i++;break; }}}if(i!=0){for(s=head->next;s;s=s->next){printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",s->bk->id,s->bk->name,s->bk->ty pe,s->bk->writer,s->bk->publisher,s->bk->price,s->bk->buydate.month,s->bk->buydate.day,s->bk ->buydate.year);}if((fp=fopen("Book.lib","w+"))==NULL)fp=fopen("Book.lib","wb+");/* 将输入的图书信息写入磁盘文件"Book.lib" */for(s=head->next;s;s=s->next)fwrite(s->bk,sizeof(Btype),1,fp);fclose(fp);}if(i==0) printf("找不到该编号的图书信息!\n");}3 运行结果:图书排序函数1.函数原型,功能和形参说明函数原型:void Bookdelete();函数功能:查询图书信息;2.程序清单:int sort(Btype *str1, Btype *str2, int type);void Booksort(){Blist *head, *p, *q;FILE *fp;int type;printf("\n请选择对哪一个参数排序(1:编号2:名称3:作者4:出版社5:价格6:类别):"); printf("\n");scanf("%d",&type);/* 打开文件*/if((fp=fopen("Book.lib","rb+"))==NULL){printf("找不到文件Book.lib !\n");exit(0);}if (!(head = (Blist *)malloc(sizeof(Blist)))){printf("内存不足!\n");exit(0);}head->bk= NULL;head->next = NULL;rewind(fp);printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");while(!feof(fp)){if (!(p = (Blist *)malloc(sizeof(Blist))) || !(p->bk = (Btype *)malloc(sizeof(Btype)))){printf("内存不足!\n");exit(0);}if (fread(p->bk,sizeof(Btype),1,fp)){for (q = head; q->next && sort(q->next->bk, p->bk, type) < 0; q = q->next);p->next = q->next;q->next = p;}}fclose(fp);for (q = head->next; q; q=q->next)printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",q->bk->id,q->bk->name,q->b k->type,q->bk->writer,q->bk->publisher,q->bk->price,q->bk->buydate.month,q->bk->buydate.da y,q->bk->buydate.year);}int strsort(char *str1, char *str2, int len){int i = 0;for (; i < len && str1[i] != '\0' && str2[i] != '\0' && str1[i] == str2[i]; i ++);if (i == len || str1[i] == str2[i])return 0;else if (str1[i] > str2[i])return 1;elsereturn -1;}int sort(Btype *bk1, Btype *bk2, int type){switch (type){case 1:return strsort(bk1->id, bk2->id, 10);case 2:return strsort(bk1->name, bk2->name, 40);case 3:return strsort(bk1->writer, bk2->writer, 10);case 4:return strsort(bk1->publisher, bk2->publisher, 20);case 5:if (bk1->price > bk2->price)return 1;else if (bk1->price < bk2->price)return -1;elsereturn 0;default:if (bk1->type > bk2->type)return 1;else if (bk1->type < bk2->type)return -1;elsereturn 0;}}3 运行结果:图书总数统计函数1.函数原型,功能和形参说明函数原型:void Bookstat();函数功能:图书总数统计函数;2.程序清单:void Bookstat() //图书总数统计函数{Blist *head, *p, *q;FILE *fp;int n;/* 打开文件*/if((fp=fopen("Book.lib","rb+"))==NULL){printf("找不到文件Book.lib !\n");exit(0);}if (!(head = (Blist *)malloc(sizeof(Blist)))){printf("内存不足!\n");exit(0);}head->bk = NULL;head->next = NULL;rewind(fp);printf("\n");while(!feof(fp)){if (!(p = (Blist *)malloc(sizeof(Blist))) || !(p->bk = (Btype *)malloc(sizeof(Btype)))) {printf("内存不足!\n");exit(0);}if (fread(p->bk,sizeof(Btype),1,fp)){for (q = head; q->next && sort(q->next->bk, p->bk, 6) < 0; q = q->next);p->next = q->next;q->next = p;}}fclose(fp);for (q = head->next; q; q=q->next){for (n = 1; q->next && q->bk->type == q->next->bk->type; n ++, q = q->next);printf("\t\t%c 类型的图书共有%d 本\n", q->bk->type, n);}}3 运行结果:全部图书信息显示函数1.函数原型,功能和形参说明函数原型:void Bookdisplay();函数功能:图书总数统计函数;2.程序清单:void Bookdisplay() /{Btype bk;FILE *fp;if((fp=fopen("Book.lib","rb+"))==NULL){ printf("找不到文件Book.lib !\n");exit(0);}rewind(fp);printf("\n%4s %-20s%4s %-8s %-20s%-8s %8s","编号","图书名称","类别","作者","出版社","价格","购买日期");while(!feof(fp)){ if (fread(&bk,sizeof(Btype),1,fp))printf("\n%4s %-18s %-3c %-8s %-18s%8.2f %2d/%d/%d",bk.id,,bk.type,bk.writ er,bk.publisher,bk.price,,,;}fclose(fp);}3 运行结果:主函数1.函数原型,功能和形参说明函数原型:void main();函数功能:用户操作界面;2.程序清单:void main(){ int n=0;do{ maininterface();printf("请选择功能(0-5)\n");scanf("%d",&n);switch (n){ case 1: { Bookinput(); break; }case 2: { Booksearch(); break; }case 3: { Bookdelete(); break; }case 4: { Booksort(); break; }case 5: { Bookdisplay(); break; }case 6: { Bookstat(); break; }case 0: { printf("谢谢使用该系统再见!\n"); break; } }}while(n!=0);}void maininterface(){ printf("\n\n\n\t\t\t个人图书管理系统\n");printf("\n\t\t1: 输入图书信息\n");printf("\n\t\t2: 查询图书信息\n");printf("\n\t\t3: 删除图书信息\n");printf("\n\t\t4: 图书信息排序\n");printf("\n\t\t5: 显示全部图书信息\n");printf("\n\t\t6: 统计全部图书数目\n");printf("\n\t\t0: 退出系统\n");}运行结果:4 参考文献C程序设计(第三版)谭浩强数据结构(严蔚敏)高质量的编程指南数据结构与算法(科学出版社)。

相关文档
最新文档