C语言程序设计基础课程设计图书信息管理系统.doc

上传人:sccc 文档编号:4854763 上传时间:2023-05-20 格式:DOC 页数:37 大小:362.04KB
返回 下载 相关 举报
C语言程序设计基础课程设计图书信息管理系统.doc_第1页
第1页 / 共37页
C语言程序设计基础课程设计图书信息管理系统.doc_第2页
第2页 / 共37页
C语言程序设计基础课程设计图书信息管理系统.doc_第3页
第3页 / 共37页
C语言程序设计基础课程设计图书信息管理系统.doc_第4页
第4页 / 共37页
C语言程序设计基础课程设计图书信息管理系统.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《C语言程序设计基础课程设计图书信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言程序设计基础课程设计图书信息管理系统.doc(37页珍藏版)》请在三一办公上搜索。

1、沈 阳 工 程 学 院课 程 设 计设计题目: C程序设计基础课程设计 -图书信息管理系统 沈 阳 工 程 学 院课程设计任务书 课程设计题目: 图书信息管理系统 一、课程设计的原始资料及依据目前,随着计算机技术的飞速发展,人工的图书管理显得十分的落后而且效率低下,尤其在查询方面效率低。为了适应现代化的环境,许多的管理事务都由电脑来管理,从而提高了管理的速率,效率。查阅有关资料,进一步理解程序设计模块化的思想,并利用此思想编写一个简单的图书信息管理系统。通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。二、课程设计主要内容及要求基本要求:(1

2、)试设计一图书信息管理系统,使之能提供以下功能:(2)系统以菜单方式工作v(3)图书信息录入功能(图书信息用文件保存)(4)图书信息浏览功能(5)查询和排序功能:(至少一种查询方式)l 按书名查询l 按作者名查询(6)图书信息的删除与修改v(7)图书信息在程序运行期间用链表表示,程序关闭则保存至文件。创新要求:(1)在基本要求达到后,可进行创新设计,如实现会员资料的查询、会员注销,对撤消图书信息的删除。(2)为借书人办理注册。(3)办理借书手续(非注册会员不能借书)。(4)办理还书手续等等。信息描述:图书信息包括:登录号、书名、图书编号、单价、作者名、分类号、出版单位、出版时间、价格等。借阅人

3、信息包括:借书人姓名、性别、学号等。三、对课程设计说明书撰写内容、格式、字数的要求1课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。2在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。3设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书

4、写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。5课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献四、设计完成后应提交成果的种类、数量、质量等方面的要求1完成“任务书”中指定的功能,运行结果正确。2课程设计说明书。五、时间进度安排顺序阶段日期计 划 完 成 内 容备注1第1天阅读资料2第23天系统分析设计3第48天程序编制、调试及运行4第9天成绩评定5第10天撰写课程设计说明书六、主要参考资料(文献)1谭浩强.C程序设计(第三版).北

5、京: 清华大学出版社.20062陈天洲.C语言高级程序设计. 北京:人民邮电出版社.2002 3杨旭.C语言程序设计案例教程.北京: 人民邮电出版社.20054郭翠英.程序设计案例经典.中国水利电力出版社.20045谭浩强.程序设计基础.北京:清华大学出版社.20046王为青.C语言高级编程及实例剖析.北京:人民邮电出版社.2008.027徐慧.C语言实例解析精粹.北京:人民邮电出版社.2006.04 8周苏、金海溶. 程序设计案例经典.北京: 科学出版社.20009姚大鹏 栾好利 张翼英 等编著.C语言程序设计教程习题与上机实训指导.中国水利水电出版社.200510郑莉 董渊 张瑞丰 编着.

6、 C+语言程序设计(第3版). 北京:清华大学出版社.2006沈阳工程学院课程设计报告 摘要摘 要图书借阅管理系统产生的主要目的是解决一些实际问题,用来方便和准确的管理图书和会员的各项纪录,使得图书信息的管理既方便又完备。它的产生和发展给图书馆管理带来了巨大的便捷。计算机今后将会应用在各个领域,所以,完善的图书借阅管理程序是很有必要的。它在管理的过程中,对一些数据的存储和计算是相当方便,当然它的准确性很高几乎为无误。图书借阅管理程序的操作也是相当方便和快捷的,并且所用的人力也是相当少的。下面就此课题介绍一下图书借阅管理系统的功能:系统的设计我们主要分为八大块:图书添加、图书查询、图书删除、会员

7、借书、会员还书、会员注册、会员注销。会员借书,还书是按照会员的姓名来实现的,图书的查询,删除是运用比较函数来实现的。 在此系统中应用了结构体,动态链表,基本的指针运用,基本的循环语句,函数的调用,Switch语句等来实现的。关键词 图书管理系统、图书添加、图书查询、图书删除、会员借书、会员还书、会员注册、会员注销沈阳工程学院课程设计报告 目录目 录摘 要I第1章 绪 论1第2章 系统功能介绍32.1 功能介绍32.2 功能说明3第3章 详细设计53.1 界面设计53.2 图书添加功能设计53.3 图书查找功能设计73.4删除图书功能设计83.5会员借书功能设计83.6会员还书功能设计93.7会

8、员注册功能设计113.8 会员注销功能设计12第4章 系统功能实现154.1 图书管理系统主界面154.2 图书添加功能164.3 图书查找功能174.4 图书删除功能184.5 会员借书功能204.6 会员还书功能224.7 会员注册234.8会员注销23结 论26致 谢30参考文献31 沈阳工程学院课程设计报告 第1章 绪论第1章 绪 论C语言的发展:早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系 统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较 差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以 实现汇编语言的某些功能,人们设想

9、能否找到一种既具有一般高级语言特性 ,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。C语言是在B语言的基础上发展起来的,经过了1960年的ALGOL60,1963年剑桥大学推出的CPL、BCPL,1970年贝尔实验室简化出的B语言,后衍变出的C语言经多次改进,它的突出优点最终引起人们的广泛关注,至此,C语言便很快风靡全世界,成为世界上应用最广泛的语言之一。C语言的特点:1.语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9

10、种控制语句,程序书写自由,它把高级语言的基本结构和语句与低级语言的实用性结合起来。程序比其他许多高级语言简练,源程序短,而且可以象汇编语言一样对位、字节和地址进行操作。2.运算符丰富C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3. 数据结构丰富整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等数据类型。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。4C语法限制不太严格、程序设计自由度大对变量的类型使用比较灵

11、活,某些类型数据可以通用;一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C允许程序编写者有较大的自由度,放宽了语法检查。5C语言允许直接访问物理地址,可以直接对硬件进行操作能实现汇编语言的大部分功能,可直接对硬件进行操作,可用来编写系统软件。6.生成代码质量高,程序执行效率高,可移植性好。一般只比汇编程序生成的目标代码效率低10%20%,与汇编语言相比,C程序基本上不做修改就能用于各种型号的计算机和各种操作系统。由于C语言的这些优点,使其应用面很广,许多大的软件都用C语言编写自20世纪九十年代初以来,我国学习和使用C语言的人越来越多,掌握次语言已成为计算机开发人员的一项基本功。

12、22沈阳工程学院课程设计报告 第2章 系统功能介绍第2章 系统功能介绍 2.1 功能介绍图书馆管理系统操作界面添加图书信息函数删除图书信息函数查询图书信息函数会员注册信息函数借书记录信息函数归还记录信息函数会员注销信息函数图书管理包括以下功能:1. 图书添加功能;2. 图书信息查找功能;3. 图书信息删除功能;4. 会员借书功能;5. 会员还书功能;6. 会员注册功能;7. 会员注销功能; 2.2 功能说明 1图书添加功能是将图书信息存入文件夹中,其中图书信息包括图书名字、图书编号、图书作者、图书价格。2. 图书信息查找功能是将要查找的图书信息通过输入图书名字查找并从文件中提取出来显示。3图书

13、信息删除功能是将无用的图书信息删除4会员借书功能,仅有会员才可以借书,借书之后还会标记该书已借出。5会员还书功能是会员借书之后将书还回并将图书状态改为图书未借出。6会员注册是将会员信息存入文件夹中,会员信息包括会员姓名、会员性别、会员年龄。7会员注销功能是将该会员信息从文件中删除。4沈阳工程学院课程设计报告 第3章 详细设计第3章 详细设计 3.1 界面设计通过printf函数输出“1.添加图书 2.图书查询3.删除图书 4. 会员借书5. 会员还书6. 会员注册7.会员注销8.退出”,再通过scanf函数输入n,最后利用switch(n)函数执行标号为n 的程序。流程图如下图3.1所示 开

14、始利用printf函数输出8个功能分别为1.添加图书 2.图书查询3.删除图书 4. 会员借书5. 会员还书6. 会员注册7.会员注销8.退出利用scanf函数用键盘输入n结 束利用switch(n)函数执行标号为n 的程序n=8否图3.1 界面管理流程图3.2 图书添加功能设计添加图书功能,先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能,我运用了指针、数组、链表等基本操作完成了这一功能的操作。流程图如下图3.2所示开始定义指向文件的指针定义结构体以读取的方式打开文

15、件文件为空以写的方式打开文件以追加的方式打开文件输入图书信息图书编号书名作者姓名图书价格否是结束图3.2 图书添加功能流程图3.3 图书查找功能设计查询功能:查询者在此功能界面输入所查询的图书名称,系统自动按图书的名字进行查询,可以显示图书是否存在、以及图书的详细的信息;该功能的实现主要应用scanf函数实现查询者对查询图书名称的输入。if语句来判断所查询图书是否存在于源文件库中,若存在,则以查找的图书名称为指针,建立该指针到源文件库中的具体指向,最后应用printf函数输出所查询图书的详细信息;若不存在,则显示“该图书不存在”类似字样。流程图如下图3.3所示YYFp=Null?Strcmp(

16、查询图书,文件中图书)=0?Printf函数输出图书信息,i+结束、是否继续查找NYYNFp=fopen,打开文件scanf函数输入图书名称开始Yfeof(fp)?YN 图3.3图书查找功能流程图3.4删除图书功能设计按书名进行删除。输入书名后,调用函数,在函数体里利用指针与每一个书名比较,如果相等就说明找到要删除的图书,用后一个覆盖前一个信息来删除图书信息,并用指针调整地址就完成图书信息的删除了。流程图如下图3.4所示开始打开文件判断文件为空读入信息输入要删除的图书名判断删除条件关闭文件输出未找到图书信息关闭文件判断为文件最后结点输出无此信息关闭文件是否是是否否删除图书图3.4 删除图书功能

17、流程图3.5会员借书功能设计借阅图书功能首先要输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。此功能的实现我运用了指针、数组、链表等基本操作完成了这项功能。流程图如下图3.5所示用scanf函数输入会员姓名用if语句判断是否是会员YN请注册用scanf函数输入图书名称用if语句判断此图书是否存在YN注册成功后用printf函数输出借书成功用printf函数输出此书已借出结束开始图3.5 会员借书流程图3.6会员还书功能设计归还图书功能:先要求输入图书名,如果还书成功显

18、示还书成功,否则显示还书失败。我运用了指针、数组、链表等基本操作完成了这项功能的操作。流程图如下图3.6所示开始定义指向文件类型的指针*p定义指针类型新结点定义书名和会员名数组用if语句判断文件是否为空用printf函数输出不能打开用printf函数输出键入书名返回主界面YN1用scanf函数输入书名1用if语句判断书名是否匹配用printf函数输出还书失败将图书信息写入文件用printf函数输出还书成功返回主界面结束NY图3.6 会员还书功能流程图3.7会员注册功能设计要求输入该会员的名字、性别、年龄进行注册,成功注册后就可在图书馆里借阅图书。会员注册可方便图书归还的管理,也方便图书管理人员

19、对被借图书信息的管理及图书归要。在注册会员后即可进行借书的操作了,我们的系统是根据是否是会员来判断能否进行借书,并且借书时按图书的名字进行借阅。并且,如果成功借书,系统还会显示成功借书,使此项操作更加简单明了。会员注册功能主要使用了scanf函数、结构体类型等在另一文件中建立个人信息。流程图如下图3.7所示 开 始读入指针类型结构体*pPrintf“请注册会员”用scanf函数键盘输入会员信息姓名、性别、年龄结 束将会员信息写入文件中定义数组struct member Member图3.7会员注册功能流程图3.8 会员注销功能设计会员注销时通过输入会员姓名在文件中查找到该会员信息后将其删除完成

20、的,删除信息用到链表、指针。流程图如下图3.8所示开始If条件句判断fp是否为空将fp指向文件member.txt是输出未找到信息关闭文件否将文件放入链表并将指针head,p,q指向链表的头部读链表当fp不为空时,将p赋值给q,并使p指向链表的头部将q的下一个结点作为当前结点当p的下一个结点为空时循环结束12定义指向文件的指针fp;定义数组struct consultmember Member;定义指向struct consultmember的指针head,p,q1关闭文件输入会员姓名将head赋值给p从头部逐个读取,当输入名字和文件中名字相同时打开文件将链表中的数据写入文件中关闭文件结束2删

21、除结点图3.8 会员注册流程图25沈阳工程学院课程设计报告 第4章 系统功能实现第4章 系统功能实现4.1 图书管理系统主界面 通过输入编号实现编号所指的程序。4.1.1 负责人:孟月4.1.2程序主函数源代码/* Note:Your choice is C IDE */#include #include dos.h#include conio.h#include stdlib.h#include math.h#include string.hint BookAdd();int BookConsult();int BookDel();int BookBorrow();int BookRetur

22、n();int MemberAdd();int MemberDel();int Bookshow();struct consultbook char num20; char name20; float price; char author20; char person20; int yes; struct consultbook *next;struct consultmember char name20; char sex20; int age; struct consultmember *next;int main() int n; int i=1; for(; i;) printf(1:

23、图书添加功能n); printf(2:图书查询功能n); printf(3:删除图书功能n); printf(4:会员借书功能n); printf(5:会员还书功能n); printf(6:会员注册功能n); printf(7:会员注销功能n); printf(8:退出n); printf(请输入所要执行序号n); scanf(%d,&n); switch(n) case 1: BookAdd(); break; case 2: BookConsult(); break; case 3: BookDel(); break; case 4: BookBorrow(); break; case 5

24、: BookReturn(); break; case 6: MemberAdd(); break; case 7: MemberDel(); break; case 8: i=0; return 0;4.2 图书添加功能图书添加功能,通过此功能实现向源文件中添加图书的有关信息,实现对后续功能的实现。4.2.1 负责人:李昊航4.2.2图书添加功能源代码 int BookAdd()/*添加图书*/ FILE *fp; struct consultbook Book; fp=fopen(book.txt,r);/*以读取的方式打开文件*/ if(fopen=NULL) fp=fopen(book

25、.txt,w);/*以写的方式打开文件*/ else fclose(fp); fp=fopen(book.txt,ab);/*以追加方式打开文件*/ printf(请输入图书编号:n); scanf(%s, Book.num); printf(请输入书名:n); scanf(%s,Book.name); printf(请输入作者姓名:n); scanf(%s, Book.author); printf(请输入图书价格:n); scanf(%f,& Book.price); Book.yes=1;/*表示图书未出借*/ Book.next=NULL; if(fwrite(&Book,sizeof

26、(struct consultmember),1,fp)!=1) printf(操作出现错误图书信息未保存n); else printf(图书信息已保存n); fclose(fp);/*关闭文件*/ return 1;4.3 图书查找功能图书查找功能,通过此功能实现对图书价格等信息的查询,方便借书等功能的实现。4.3.1 负责人:张启明4.3.2图书管理功能源代码int BookConsult()/*图书查找*/ FILE *fp; struct consultbook Book; char bookname20;/*定义书名变量*/ int flag=0,i=0; printf(请输入要查找

27、的书名:n); scanf(%s,bookname); fp=fopen(book.txt,r); if(fp=NULL)/*没有找到文件*/ printf(未找到您所需要的书请核实是否有误重新查找); fclose(fp); return -1; else while(!feof(fp)/*feof(fp)为测试文件是否结束的函数*/ fread(&Book,sizeof(struct consultmember),1,fp);/*读取文件*/ if(strcmp(Book.name,bookname)=0)/*两书名字相同*/ printf(图书名为:%sn,Book.name); pri

28、ntf(图书编号为:%sn,Book.num); printf(图书作者为:%sn,Book.author); printf(图书作价格为:%fn,Book.price); printf(图书状态为:%dn,Book.yes); i+;/*i为该书的数目*/ flag=1;/*查找数据标志*/ if(flag=0) printf(未找到您所需要的图书n); return -1; fclose(fp); return 1;4.4 图书删除功能由于C语言文件操作没有提供删除和移动的数据功能,所以删除记录采用了从文件中读出所有记录,删除后,再将记录写回文件的方式。从文件中读出记录,以单链表的形式保存

29、,块读取方式,每读取一条记录,按其在文件中的顺序要做好指针链接关系,即将其链接到当前链表的尾部。然后从单链表中查找要删除的图书,如果找到,则从链表中删除该图书信息,所以删除图书资料的操作实质是单链表的删除操作,最后再将变动过的单链表逐条写到文件中。4.4.1 负责人:王珩4.4.2图书删除功能源代码int BookDel()/*删除图书录*/ FILE *fp; struct consultbook Book; struct consultbook *head; struct consultbook *p,*q; char bookname20; fp=fopen(book.txt,r);/*

30、读方式打开文件*/ if(fp=NULL)/*没有找到文件*/ printf(未找到图书信息n); fclose(fp); return -1; head=p=q=(struct consultbook*)malloc(sizeof(struct consultbook);/*开辟新的储存空间*/ fread(p,sizeof(struct consultbook),1,fp);/*读第一条信息*/ while(!feof(fp)/*feof(fp)为测试文件是否结束的函数*/ q=p; p=(struct consultbook*)malloc(sizeof(struct consultbo

31、ok); fread(p,sizeof(Book),1,fp);/*读记录*/ q-next=p;/*新记录插入到链表的尾*/ p-next=NULL;/*已为最后结点*/ fclose(fp); printf(请输入要删除图书的名:n); scanf(%s,bookname); p=head; while(p!=NULL)/*按书名删除图书*/ if(strcmp(p-name,bookname)=0)/*找到药删除的书名*/ if(p=head)/*要删除的图书是第一个结点*/ head=head-next; else q-next=p-next;/*要删除的图书是第一个结点*/ brea

32、k; q=p; p=p-next;/*指针后移*/ fp=fopen(book.txt,w);/*以写的方式打开文件*/ while(head!=NULL) fwrite(head,sizeof(Book),1,fp);/*写文件*/ head=head-next; fclose(fp); printf(删除成功!n); return 1;4.5 会员借书功能借阅图书功能:先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。我运用了指针、数组、链表等基本操作完成了这项功

33、能的操作。4.5.1负责人:赵磊4.5.2会员借书源代码int BookBorrow()/*借书*/ FILE *fp; struct consultbook Book; struct consultmember Member; char bookname20,membername20; int flag=0,mflag=0; printf(请输入会员名字:n); scanf(%s,membername); if(fp=fopen(member.txt,r)=NULL)/*未找到文件*/ printf(无信息n); return -1; else while(!feof(fp)/*查找会员信息

34、*/ fread(&Member,sizeof(struct consultmember),1,fp); if(strcmp(Member.name,membername)=0) mflag=1;/*会员标志*/ break; fclose(fp); if(mflag=0) printf(您不是会员请先注册n); return -1; printf(请输入图书名:n); scanf(%s,bookname); if(fp=fopen(book.txt,r+)=NULL) printf(没有找到图书信息n); return -1; while(!feof(fp)/*查询图书资料*/ fread(

35、&Book,sizeof(struct consultbook),1,fp); if(strcmp(Book.name,bookname)=0) if(Book.yes=0)/*图书已借出*/ printf(此书已借出n); break; else Book.yes=0;/*做出借书标记*/ strcpy(Book.person,Member.name);/*登记借书会员*/ fseek(fp,sizeof(struct consultbook),1); fwrite(&Book,sizeof(struct consultbook),1,fp); printf(借书成功n); flag=1;

36、break; if(flag!=1) printf(借书失败n); fclose(fp); return 1;4.5.3注意借书采用会员制方式,即要借书首先要查询会员登记文件,不是会员,则提示先注册会员,如果是会员,查阅图书文件,如果找不到,要先判断图书是否已先借出,如果没有借出,则可以借书,修改该图书的借书标志Yes值,表示已借出,将变动后的数据写入文件,否则,如果没有此图书或图书已借出,本次借书失败。注意数据变动后的保存。因为借书只是更新数据的值,所以采用了直接在文件中查找图书的方法,每读一条纪录进行相应的比较,文件指针后以移一条记录,所以如果找到要借的图书,当前的文件指针则指到该记录的后面,所以要将该数据修改后重新写入,利用函数fseek将指针前移一条记录,回到正在修改的记录,然后将其写入。4.6 会员还书功能归还图书功能:先要求输入图书名,如果还书成功显示还书成功,否则显示还书失败。我运用了指针、数组、链表等基本操作完成了这项功能的操作。4.6.1 负责人:赵磊4.6.2会员还书源代码int BookReturn()/*还书*/ FILE *fp; struct consultbook Book; char boo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号