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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构c语言图书系统.docx

1、数据结构c语言图书系统图书借阅管理是图书馆一个最基本的工作,这里用C语言的知识设计开发一个简单的图书借阅管理系统,系统主要实现图书信息和学生信息的管理,图书查询及图书借阅管理。系统设计要求系统主要实现以下六个功能: 用户登录。系统用户分为管理员和学生。管理员登录时必须输入密码,密码正确才能进入系统;学生登录时无需密码,输入学号即可。 图书信息管理。图书信息包括:书号、书名、作者、图书分类、出版社、出版时间、单价、总量和库存量。图书信息管理包括:输入图书信息从键盘或从文件)、保存图书信息、修改图书信息、增加图书信息、删除图书信息和输出图书信息。 学生信息管理。学生信息包括:学号、姓名、借书卡借阅

2、标记、书号、借阅时间)。学生信息管理包括:输入学生信息从键盘或从文件)、保存学生信息、修改学生信息、增加学生信息、删除学生信息和输出学生信息。 图书查询功能。图书查询分为:按书名查询、按作者查询、按图书分类查询、按出版社查询和按出版时间查询。 借书功能。借书时,先判断学生是否有空闲的借书卡,若没有则应输出提示信息;若有空闲的借书卡,则要求学生输入所借图书的书号,若该书库存量不为0,则将该书借出,同时在借书卡上记录该书的书号和借阅时间,并修改该书的库存量。 还书功能。还书时,先检查学生的借书卡,若借书卡都为空,则不能进行还书操作,若有借书卡不为空,则可以还书,此时要求学生输入所还图书的书号,将对

3、应借书卡上的记录清零,并修改该书的库存量。数据结构设计系统共定义了四个结构体类型,包括日期类型、借书卡类型、图书类型和学生类型,其中在图书类型中要使用日期类型,而在学生类型中要使用日期和借书卡类型,定义如下:typedef struct date /日期类型 short year。 /年 short month。 /月 short day。 /日SDATE。typedef struct library_card /借书卡类型 Short flag。 /是否借阅标记 Char ISBN20。 /所借图书的书号 SDATE bor_time。 /借阅时间SLCARD。typedef struct

4、student /学生类型 char num15。 /学号 char name20。 /姓名 SLCARD card5。 /借书卡 main函数的设计:因为图书信息和学生信息都保存在文件中,系统运行的第一个工作是从文件中将图书信息和学生信息读入到内存数组book和数组student中,在读入信息的过程中同时统计出目前图书的数量和学生的人数,并将数据分别存放在整型变量bn和sn中,bn为图书数量,sn为学生人数。如果bn=0或sn=0,系统会输出提示信息,让管理员输入图书信息和学生信息。然后系统会显示主菜单,用户必须登录后才能使用系统提供的各种服务。(2 用户登录管理模块包括2个函数:Manag

5、erLogin(和StudentLogin(,该模块由main函数调用。函数ManagerLogin(用来完成管理员登录工作,首先要求管理员用户输入密码,若密码错误,则直接返回主菜单界面;密码正确时将显示管理员用户的功能菜单,输入数字可执行相应的功能。函数StudentLogin(用来完成学生登录工作,要求学生输入学号,若学号错误则要求学生重新输入学号;输入学号正确则显示学生用户的功能菜单,输入数字可执行相应的功能。(3 图书信息管理模块包括11个函数:InputOnebook(、LoadBooks(、SaveOnebook(、SaveAllbooks(、OriginalBook(、Modif

6、yBook(、AddBook(、DelBook(、OutputOnebook(、OutputAllbooks(和OutputBrief (。只有管理员用户可以调用图书信息管理模块。函数InputOnebook(用来实现从键盘输入一本图书的全部信息。函数LoadBooks(用来实现从文件“book.dat”中输入全部图书的信息,并将这些数据存放到内存数组book中。函数SaveOnebook(用来实现将一本图书的信息保存到文件“book.dat”中。函数SaveAllbooks(用来实现将全部图书的信息保存到文件“book.dat”中。函数OriginalBook(用来实现图书信息的初始化,在程

7、序第1次运行时必须调用该函数,输入若干本图书的信息,并将这些信息保存在文件中。该函数是通过循环多次调用InputOnebook(函数实现多本图书信息的输入,然后调用SaveAllbooks(函数将已输入的所有图书的信息保存在文件“book.dat”中。函数ModifyBook(用来实现对图书信息的修改,用户首先输入书号,书号错误则输出提示信息,要求用户重新输入;书号正确则用户可以选择要修改的数据项对图书信息进行修改函数,将修改后的信息保存到文件中。然后询问用户是否继续修改其他图书的信息,用户选择y,则重复上述的修改过程;用户选择n,则结束函数,返回到管理员菜单界面。函数AddBook(用来实现

8、添加图书信息,通过调用InputOnebook(函数,从键盘输入一本图书的信息,然后将该信息写入文件。然后询问用户是否继续添加其他图书的信息,用户选择y,则重复上述过程;用户选择n,则结束函数,返回到管理员菜单界面。函数DelBook(用来实现删除图书信息,用户首先输入书号,书号错误则输出提示信息,要求用户重新输入;书号正确则会先输出该书号对应图书的信息,然后询问用户是否确定要删除该书的信息,用户选择y才能真正删除该书信息。最后询问用户是否继续删除其他图书的信息,用户选择y,则重复上述过程;用户选择n,则结束函数,返回到管理员菜单界面。函数OutputOnebook(用来实现输出一本图书的全部

9、信息。函数OutputAllbooks(通过多次调用OutputOnebook(函数来实现输出全部图书的信息。函数OutputBrief(用来实现以列表方式输出全部图书的简要信息,简要信息包括:书号、书名、作者和总量。(4 学生信息管理模块包括10个函数:InputOnestud(、LoadStuds(、SaveOnestud(、SaveAllstuds(、OriginalStud(、ModifyStud(、AddStud(、DelStud(、OutputOnestud(和OutputAllstuds(。管理员用户可以使用学生信息管理模块的全部功能,学生用户只能使用该模块中的一个功能,即Out

10、putOnestud(函数用来实现从键盘输入一个学生的信息。函数LoadStuds(用来实现从文件“stud.dat”中输入全部学生的信息,并将这些数据存放到内存数组student中。函数SaveOnestud(用来实现将一各学生的信息保存到文件“stud.dat”中。函数SaveAllstuds(用来实现将全部学生的信息保存到文件“stud.dat”中。函数OriginalStud(用来实现学生信息的初始化,在程序第1次运行时必须调用该函数。该函数是通过循环多次调用InputOnestud(函数实现多个学生信息的输入,然后调用SaveAllstuds(函数将已输入的所有学生的信息保存在文件“

11、stud.dat”中。函数ModifyStud(用来实现学生信息的修改。函数AddStud(用来实现添加学生信息。函数DelStud(用来实现删除学生信息。函数OutputOnestud(用来实现输出一个学生的全部信息。函数OutputAllstuds(用来实现输出全部学生的基本信息 图书信息查询模块包括6个函数:SearchMenu(、SearcBname(、SearchAuthor(、SearchBclass(、SearchPublisher(、SearchPubtime(。管理员和学生都可以使用图书信息查询模块。函数SearchMenu(用来显示图书查询服务菜单,用户输入数字可执行相应的

12、查询服务。函数SearcBname(用来实现按书名进行图书信息的查询。用户可以输入完整的书名进行精确查询,将输入的书名与已有图书的书名逐一进行比较,当该函数的返回值等于0,表示这两个书名完全相同,即找到要查询的图书。另外,用户也可以输入书名中的几个字进行模糊查询,在已有图书的书名中寻找输入的字符串,如果该函数的返回值不为空,则说明该书名中包含这个字符串,那么就应该输出这本图书的信息。通常,模糊查询会列出多个查询结果。函数SearchAuthor(用来实现按作者姓名进行图书信息的查询。用户可以输入完整的姓名进行精确查询如输入“谭浩强”),也可以只输入姓氏进行模糊查询用来实现按图书分类进行图书信息

13、的查询。考虑到用户可能不能输入完全正确的图书分类名称,所以在该函数中只采用模糊查询方式。函数 SearchPublisher(用来实现按出版社名称进行图书信息的查询。用户在输入出版社名称时,一般不会输入“出版社”这三个字用来实现按出版日期进行图书信息的查询。使用该函数必须注意要按系统规定的格式输入日期,若想查询2004年5月份出版的图书,则应输入“2004.5”;若想查询2004年出版的图书,则应输入“2004”。假设输入日期为“2004.5”,进行查询时,先判断输入的年份与出版日期中的年份是否相等,若不相等则结束本次循环,若相等则用变量k记录其下标,然后再判断月份是否相等,月份若不相等则用c

14、ontinue结束本次循环,月份若相等则可输出这本书 图书借阅管理模块包括2个函数:BorrowBook(和ReturnBook(函数。函数BorrowBook(用来实现借书管理。由学生类型定义可知,每个学生有5张借书卡,借书卡的信息包括:借阅标记flag、所借图书的书号ISBN和借阅时间bor_time。借书时,首先查找学生是否有空闲的借书卡。 可以得到系统时间,假设用下面语句输出日期:printf(%d.%d.%d, d.tm_year, d.tm_mon, d.tm_mday。 若借书日期是1998.5.12,则会输出98.4.12,若借书日期为2005.5.12,则会输出105.4.1

15、2,这样的输出结果显然不好,为了正确输出1998.5.12或2005.5.12,必须对成员tm_year和tm_mon进行处理,对于tm_mon的处理比较简单,直接加1即可d.tm_mon+1),对于tm_year按下面方法处理:如果年份整除100等于0即年份2000),则年份=1900+d.tm_year;如果年份整除100等于1=2000), 则年份=2000+d.tm_year%100。step5 保存修改过的图书信息和学生信息;step6 提示用户借书成功。最后询问学生是否继续借书吗?(y/n,若学生输入y,则重复上面的借书过程;若输入n,则返回到学生功能选择菜单界面。函数Return

16、Book(用来实现还书管理。还书时,首先统计该生有几张已使用的借书卡,将数据存放在变量t中,若t为0,说明该生目前根本没有借阅的图书,无法进行还书操作;若t大于0,则可进行还书操作,先输入书号,在学生的借书卡中寻找,若没找到该书号,则提示输入的书号有误,请重新输入!;若找到该书号,则通过以下6个步骤进行还书:step1 学生借书卡的借阅标记flag置0;step2 学生借书卡的书号置空;step3 学生借书卡的借阅时间清0;step4 变量t减1;step5 在数组book中寻找该书号,找到后其库存量加1;step6保存修改过的图书信息和学生信息。最后询问学生是否继续还书吗?(y/n,若学生输

17、入y,则重复上面的还书过程;若输入n,则返回到学生功能选择菜单界面。部分源程序代码#include#include#include#include#include/ 结构体类型的定义typedef struct date /日期类型 short year。 /年 short month。 /月 short day。 /日SDATE。typedef struct library_card /借书卡类型 short flag。 /是否借阅标记 char ISBN20。 /所借图书的书号 SDATE bor_time。 /借阅时间SLCARD。typedef struct stud /学生类型 ch

18、ar num15。 /学号 char name20。 /姓名 SLCARD card5。 /借书卡SSTUD。typedef struct book /图书类型 char ISBN20。 /书号 char bookname40。 /书名 char author20。 /作者 char publisher30。 /出版社 char bookclass20。 /图书分类 short total_num, stock_num。 /总量,库存量 float price。 /单价 SDATE publish_time。 /出版时间SBOOK。#define SDATE_LEN sizeof(SDATE

19、/SDATE_LEN为日期类型占用存储空间的大小#define SLCARD_LEN sizeof(SLCARD /SLCARD_LEN为借书卡类型占用存储空间的大小#define SSTUD_LEN sizeof(SSTUD /SSTUD_LEN为学生类型占用存储空间的大小#define SBOOK_LEN sizeof(SBOOK /SBOOK_LEN为图书类型占用存储空间的大小#define BOOKNUM 1000 /图书总数,可按需要更改其数值#define STUDNUM 100 /学生总数,可按需要更改其数值SSTUD studentSTUDNUM=0。 /学生数组(全局变量SB

20、OOK bookBOOKNUM=0。 /图书数组(全局变量/函数声明void ManagerLogin(int *pbn, int *psn。 /管理员登录函数void StudentLogin(int bn, int sn。 /学生登录函数void InputOnebook(int i。 /输入一本图书信息的函数int LoadBooks(void。 /从文件载入全部图书信息的函数void SaveOnebook(int i。 /保存一本图书信息的函数void SaveAllbooks(int bn。 /保存全部图书信息的函数int OriginalBook(void。 /图书信息初始化的函

21、数void ModifyBook(int bn。 /修改图书信息的函数int AddBook(int bn。 /添加图书信息的函数int DelBook(int bn。 /删除图书信息的函数void OutputOnebook(int i。 /输出一本图书信息的函数void OutputAllbooks(int bn。 /输出全部图书详细信息的函数void OutputBrief(int bn。 /输出全部图书简要信息的函数void InputOnestud(int i。 /输入一个学生信息的函数int LoadStuds(void。 /从文件载入全部学生信息的函数void SaveOnest

22、ud(int i。 /保存一个学生信息的函数void SaveAllstuds(int sn。 /保存全部学生信息的函数int OriginalStud(void。 /学生信息初始化的函数void ModifyStud(int sn。 /修改学生信息的函数int AddStud(int sn。 /添加学生信息的函数int DelStud(int sn。 /删除学生信息的函数void OutputOnestud(int i。 /输出一个学生信息的函数void OutputAllstuds(int sn。 /输出全部学生信息的函数void SearchMenu(int bn。 /图书查询函数voi

23、d SearcBname (int bn。 /按书名查询函数void SearchAuthor(int bn。 /按作者查询函数void SearchBclass(int bn。 /按图书分类查询函数void SearchPublisher(int bn。 /按出版社查询函数void SearchPubtime(int bn。 /按出版时间查询函数void BorrowBook(int bn,int m。 /借书函数void ReturnBook(int bn,int m。 /还书函数void main(void / main函数定义 int select, bn, sn。 bn=LoadBo

24、oks(。 /调用LoadBooks(,返回值为图书数量,将其赋值给bn if(bn=0 printf( 图书信息为空!nn。 sn=LoadStuds(。 /调用LoadStuds(,返回值为学生人数,将其赋值给sn if(sn=0 printf( 学生信息为空!nn。while(1 printf(n。 printf(t-n。 printf(t* *n。 printf(t* 图书借阅管理系统 *n。 printf(t* *n。 printf(t-nn。 printf(t 1. 管理员n。 printf(t 2. 学生n。 printf(t 0. 退出系统nn。 printf(t 请选择用户:。 scanf(%d, & select。 getchar(。 /该函数用于读取回车符,消除对以后数据输入的影响 switch(select case 1: ManagerLogin(&bn,&sn。 break。case 2: StudentLogin(bn,sn。 break。 case 0: printf(n 谢谢使用!再见n。 exit(1。 default: printf(n 按键错误,请重新选择!n。 /end switch /end while/用

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

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