首页 > 精品范文库 > 11号文库
智能图书管理系统
编辑:醉人清风 识别码:20-738891 11号文库 发布时间: 2023-10-09 03:27:38 来源:网络

第一篇:智能图书管理系统

目录

1.采访管理子系统............................................................................................................3 2.编目管理子系统............................................................................................................4 3.流通管理子系统............................................................................................................6 4.读者管理子系统............................................................................................................9 5.典藏管理子系统..........................................................................................................10 6.读者网络服务子系统(WEBOPAC)..........................................................................12 7.阅览管理子系统..........................................................................................................13 8.连续出版物管理子系统.............................................................................................14 9.系统维护子系统..........................................................................................................15 10.图书外采子系统.......................................................................................................16 11.数据备份和恢复.......................................................................................................17 12.中心集中管理子系统...............................................................................................18 附件1图书馆管理系统功能列表................................................................................18

炎煌智能图书管理系统在对各种类型、各种规模图书馆的业务规则和操作规程进行全面深层次分析的基础上,采用完全开放的功能、规则、参数、方案定义,由用户来选择决定自己的系统,从而形成一个变化无穷的可简可繁的个性化的应用系统。

系统构成

系统包括12个功能子模块: 1.采访管理子系统 2.编目管理子系统 3.流通管理子系统 4.读者管理子系统 5.典藏管理子系统 6.阅览管理子系统 7.连续出版物管理子系统

8.读者网络服务子系统(WEBOPAC)9.系统管理子系统 10.外采管理子系统 11.数据备份和恢复子系统 12.中心集中管理子系统

1.采访管理子系统

功能简述

订购管理包括图书零星订购、征订目录批选购、各种征订数据导入、图书批次总括登记、采访财经管理、各种订单输出、查询输出和统计报表输出。采访子系统和编目子系统使用统一的参数和规则定义。图书订购和批订购

图书订购用于零星订单编辑、订购数据查询修改;支持Z39.50协议检索;可定义数据编辑项目和编辑界面;能根据数据输入字段进行自动查重。批订购对同一批征订目录图书进行批查重和批选购。能动态显示财经情况信息;自动预分配文献地点。书商征订数据批导入和批删除

对多种数据格式(文本、DBF、Excel、Access、Marc数据流)的征订目录源数据进行导入。

总括登记

对每一批到馆图书进行登记,可自动生成批次号,能处理款项支付相关批次,能实时查询相关票据。具有批次统计和输出功能。

采访财经管理

对发票、付款和预付款进行管理,能实时查询关联批次。具有对检索结果进行统计和输出的功能。采访查询和统计

采编查询和批处理具有强大查询输出功能,通过定义查询输出方案可以输出订单、未到图书催到单。在订购统计功能中提供了12个统计项目多达40个组合统计方案,供用户进行全方位的采访统计。

2.编目管理子系统

功能简述

编目管理功能包括:按Marc标准对图书进行书目著录、新书验收和馆藏著录;验收和著录后的图书交送到使用部门;各种要求的查询和各类产品的输出;书目统计和馆藏财产统计。填表式著录、全屏幕著录

填表式编辑是一种操作简单、方便易学的数据编辑方式,但它较难适应字段数量多且变化复杂的Marc格式文献著录。炎煌智能图书管理系统采用自由定义著录项目,并对一些复杂的MARC字段进行整体编辑,很好地解决了与Marc数据的兼容问题,同时满足不同层次用户的需求。

全屏幕Marc字段著录是在Marc编辑模板基础上进行Marc数据的自由编辑,炎煌智能图书管理系统具有实时检查Marc字段、子字段、字段指示符的功能。

除了编辑方式的不同,在其它各项功能上填表式著录与全屏幕Marc著录完全相同,这些功能包括: ØISBN号扫描输入和自动检查 Ø多达10个Marc字段或子字段之间的多种方式的自动转换 Ø自动查重功能

Ø自定义一套或多套检索方案,多个数据源检索(本地主书目数据库、本地中间书目数据库)

Ø支持Z39.50协议的远程书目数据库的下载和上传,支持多个Z39.50数据库的并发连接和操作

Ø可以检索获取远程运行炎煌智能图书管理系统成员馆的书目数据 Ø可以自动截取网页上的MARC数据

Ø在验收方面具有批次号自动提示;各种价格自动同步;动态显示验收情况;多卷书不成套验收;自动生成馆藏等功能

Ø在馆藏著录方面能自动生成种次号、著者四角号码、条形码号; Ø能根据采访时预分配地点或多复本分配规则自动生成文献地点、借阅类型和多卷书的卷次;

Ø能根据分类号自动生成主题词。

编目查询输出和批处理

用户可以根据不同的目的和需求定义检索方案(从58种检索途径中选择)和数据输出方案(从103个输出数据项目中选择),采编工作中几乎所有的数据输出产品都可以在此获得,这些产品中包括书标、目录卡片、个别财产帐、各种书目。系统提供详尽的工作日志查询。编目统计

提供验收统计、书目统计、馆藏财产统计和工作日志统计,用户可以根据自己的需求定义出数百种统计结果方案,可以满足用户非常特别的苛刻的统计要求。交送处理

对编目加工完毕的一批图书数据进行交送处理,交送后可直接入藏或经过使用部门入藏登记后入藏。

参数和规则定义

炎煌智能图书管理系统采用大量的操作简便的参数和规则定义,使用户定制个性化应用系统成为可能。

3.流通管理子系统

功能简述

流通管理包括了文献借、还、续、租、预约、预借、污损处理、丢失处理、催还、借书取消、各种费用管理;还包括流通查询和统计,参数和规则定义。

借还管理

在一个统一的界面下实现借租书、还书、续借、污损、丢书等处理功能,能同时处理借书证和各种银行卡,能自动识别证号、卡号和书号;能对多卷书做灵活的外借处理,使之既遵循一般的流通规则,又能整套外借;对各种违章情况在按章处理的同时,也能灵活处理;能按多种方式对超押金借书自动计算加收或退还临时押金;流通费用结算既可以在借还处进行,也可在专门的收费处进行。

能进行多个图书馆(如中心馆和若干分馆)之间的借还管理。实现了多个成员馆之间的通借通还以及流通中的费用异地结算等等。

预约借书

预约借书处理是对已被其他读者借出的图书进行预约登记,可以直接对一种图书进行预约登记,也可将读者的不在藏的网络预约申请转成正式预约。预借处理是将读者所需的且在架或还回可借的图书保留下来,并通知读者办理借书手续的处理过程。此外,还有取消预约、取消预借、图书还架、网络预约申请处理等功能。

图书丢书复得或赔新处理

对丢失后又找到或赔偿新书进行处理,退还已收的赔款。

取消借书图书

因为某些原因对已做了借书处理但又不能借走的图书做取消借书处理。

图书催还 提供一个图书逾期天数范围,查找出此范围内的逾期读者,并以多种方式向其发出还书通知。

流通查询输出

从读者、图书、工作人员、工作地点、工作时间等多个查询途径来查询借书、租书、还书、预约、预借、违章等流通事务的当前情况或历史情况;提供图书流通排行榜、读者借阅排行榜功能。

流通数据平衡处理

处理成员馆之间在借还图书时网络突然断了,造成的双方数据不平衡性的处理。

流通统计

完善准确的流通统计和分析是图书馆十分重要的工作,炎煌智能图书管理系统在流通统计方面与其它统计一样力求无微不至、尽善尽美,流通统计包括一般流通统计、图书流通统计、读者流通统计、流通财经统计、流通收支统计、流通工作量统计、成员馆图书查询与统计、成员馆流通查询与统计等八大统计类型,用户可以根据自己的需求定义出数百种统计结果方案,可以满足用户非常特别的苛刻的统计要求。系统还具有数据分析功能,如藏书利用率分析、利用人次分析。

成员馆流通查询与统计 查询和统计出各个成员馆的读者在本馆所借的图书情况,以及各个成员馆图书被本馆读者借阅的情况。

网内图书馆图书查询与统计

查询和统计出本馆的图书被各个成员馆读者利用的情况。

成员馆财经查询与统计

可以查询和统计到各个成员馆读者在本馆产生的流通费用,以及本馆读者在各个成员馆产生的费用。

图书流通排行榜、读者借阅排行榜

可统计出一段时间内图书流通排行情况和读者借阅排行情况。

4.读者管理子系统

功能简述

读者管理包括读者证管理、读者证批处理、读者档案查询输出、读者档案统计、读者档案数据导入、参数和规则定义。读者证管理

包含了全部的读者证管理的功能,能兼容各类银行卡,银行卡既能用作读者证,也可仅用作支付,能处理会员制方式的有偿服务。读者证批处理

为具有相同属性的读者群提供了批增加和批更新修改的功能。读者档案查询输出

根据用户自定义的读者检索方案和读者查询输出方案,检索并输出所需的读者资料。读者档案统计

根据用户自定义的读者统计方案,进行读者信息的统计。读者档案数据导入

将多种格式的读者资料数据按定义导入到本系统中来。参数和规则定义

系统提供了大量的参数和规则定义,供用户定制自己的系统。

成员馆定义

定义可以跟本馆成为联邦制成员馆的服务器的参数及馆代码等等。

网内其他图书馆读者类型定义

定义网内各个成员馆的各个不同的读者类型可以在本馆借还图书的规则,这些成员馆读者无论在哪个成员馆借本馆的图书,都必须遵循这个流通规则。

5.典藏管理子系统

功能简述

典藏管理是对图书馆的馆藏文献财产进行管理,包括新书入藏登记、馆藏调整、出藏后重新入藏、图书出藏、图书清点、流失恢复、馆藏历史查询、馆藏财产统计等功能。新书入藏登记

当选择经入藏登记入藏时,图书需经过入藏登记后才能投入使用,可采用单册和批处理两种方法进行入藏登记。出藏后重新入藏

因各种原因而出藏的图书需要重新入藏才能使用。

图书回馆处理

图书被读者借出后,到各个不同的成员馆就近还了,当图书被所在馆运回后,需要做的入藏处理,这样读者才能查询到图书当前所在馆。图书简单清点和财产详细清点

简单清点仅对图书的总的数量进行核查清点,详细清点则对每一册图书进行清点,并输出详细的图书清点清单。图书流失处理后恢复

对属于清点流失但又失而复得的图书进行恢复处理。图书馆藏历史查询

查询一本图书它自进馆以后所有的馆藏变化情况。馆藏财产统计

对各个时期、各个文献地点、各种借阅类型、各种馆藏状态、各个类目的图书进行统计。6.读者网络服务子系统(WEBOPAC)功能简述

网络服务子系统是基于www.teniu.ccMARC数据导入 数据库及文本数据导入 采编参数和规则 图书采编工作规则 图书采编参数定义 填表式著录项目定义 全屏编辑著录模板定义 条码号分区定义 文献地点定义 借阅类型定义 关系单位定义 征订目录代码定义 Z39服务器定义 采编查询和统计方案定义 采编检索方案定义 采编查询输出方案定义 采编统计方案定义 总括登记输出方案定义 外来数据格式定义 外来文本文件数据格式定义 外来数据库文件格式定义 采编标准代码定义 MARC属性定义 分类表属性定义 出版社属性定义 国家代码定义 语种代码定义 货币代码定义 读者管理子系统 读者管理 读者证管理 证事务 办理新证 验证处理 更换处理 改证类型 挂失处理 挂失恢复 暂停处理 暂停恢复 顺延处理 顺延恢复 注销处理 注销恢复 删除处理 待续处理

有偿借书预付款处理 特殊读者服务 权限更改 减免款处理 读者参数和规则 读者批处理 读者证批增加 读者证批修改 待办读者证批处理 读者数据导入 流通管理子系统 流通管理 借还书管理 普通借书 预借借书 预约借书 续借图书 还书处理 还书转预借 污损处理 丢失处理 打印借书清单 流通费用结算

逾期费,有偿借阅零收款结算 污损费结算 丢失费结算 临时押金结算 证工本费结算 基本押金结算 有偿借阅预收款 定期服务费结算 还书上架

取消未交临时押金的借书 丢书复得或赔新处理 错还图书处理 图书催还

网内图书馆图书流通信息平衡处理 读者流通收费管理 预约预借管理 预借登记 预约登记 取消预借 取消预约 拒绝申请 流通查询 一般流通查询输出 读者档案查询输出 网内图书馆流通查询与统计 图书流通排行榜 读者借阅排行榜 流通财经查询

网内图书馆流通财经查询与统计 流通工作日志查询 读者证变更查询 图书馆藏变更查询 馆藏历史查询 读者证变更历史查询 未使用过的图书查询 流通统计 一般流通统计 读者流通统计 图书流通统计 读者档案统计 流通财经统计 流通费用收支统计 图书馆藏财产统计 流通工作量统计

网内图书馆图书查询与统计 流通参数和规则 流通管理参数定义 流通统计方案定义 读者类型定义 更新读者类型 删除读者类型 读者管理规则定义 读者动态属性定义 网内图书馆定义

网内其他图书馆读者类型定义 读者检索方案定义 读者查询输出方案定义 读者统计方案定义 读者财经统计定义 流通收支统计方案定义 典藏管理子系统 图书书库管理 图书入藏 图书新书个别入藏 图书新书批量入藏 图书库位个别调整 图书库位批量调整 图书个别重新入藏 图书批量重新入藏 网内图书馆图书回馆处理 图书出藏 图书剔除出藏 图书遗失出藏 图书损坏出藏 图书赠送出藏 图书交换出藏 图书修补出藏 图书装订出藏 图书送展出藏 图书其它出藏 图书财产记录删除 更换图书条码处理 图书清点 图书简单数量清点 图书详细财产清点 图书财产流失确认 图书流失个别恢复 图书流失批量恢复 连续出版物子系统 连续出版物采访 连续出版物订购 更新连续出版物订购 新建连续出版物订购 修改连续出版物订购 删除连续出版物订购 连续出版物订购确认 连续出版物批续订 连续出版物批订购 连续出版物确认批订购 连续出版物批订购打印输出 连续出版物数据批导入 连续出版物数据批删除 连续出版物订购总括登记 更新连续出版物订购批次 登记连续出版物订购批次 修改连续出版物订购批次 删除连续出版物订购批次 连续出版物装订总括登记 更新连续出版物装订批次 登记连续出版物装订批次 修改连续出版物装订批次 删除连续出版物装订批次 采访财经管理 更新财经票据 登记财经票据 修改财经票据 删除财经票据 连续出版物批续订 连续出版物编目 连续出版物书目著录 更新书目记录 添加新书目记录 添加复制记录 添加外部复制记录 修改书目记录 书目记录审校 删除书目记录 书目关联处理 连续出版物特殊处理 连续出版物更名 连续出版物停刊 连续出版物更改出版周期 连续出版物更改价格 连续出版物记到 连续出版物现刊记到处理 连续出版物现刊简单记到 连续出版物现刊详细记到 连续出版物现刊删除记到 连续出版物现刊插入记到格 连续出版物现刊删除记到格 连续出版物直接记到处理 连续出版物光笔记到处理 连续出版物休刊处理 连续出版物反记到缺刊处理 连续出版物现刊交送处理 连续出版物现刊催刊处理 连续出版物现刊重新排架 连续出版物去除原现刊排架号 连续出版物现刊装订 连续出版物现刊装订处理 连续出版物现刊装订确认 连续出版物现刊装订删除 连续出版物现刊装订验收 装订验收 取消验收 零星验收 添加原现刊条码号 删除原现刊条码号 修改保存

连续出版物删除合订本馆藏 连续出版物过刊交送处理 连续出版物现刊装订单输出 连续出版物查询

连续出版物查询输出和批处理 连续出版物编目批删除 连续出版物编目批删除恢复 连续出版物查询日志 连续出版物订购单输出 连续出版物订购比较输出 连续出版物零星打印书标 连续出版物采编统计 连续出版物采访统计 连续出版物书目统计 连续出版物记到统计 连续出版物总括登记统计 连续出版物馆藏统计 连续出版物现刊馆藏统计 连续出版物过刊馆藏统计 连续出版物采编工作量统计 连续出版物采编参数和规则 连续出版物采编工作规则 连续出版物采编参数定义 填表式著录项目定义 全屏编辑著录模板定义 采编查询和统计方案定义 采编检索方案定义 采编查询输出方案定义 采编统计方案定义 总括登记输出方案定义 批量订购输出方案定义 外来数据库文件格式定义 分类表属性定义

连续出版物现刊装订价格定义 数据交换

CNMARC数据导入 网络服务子系统 网络服务 网络预约 网络续借 网络修改密码 网络借书证挂失 阅览管理子系统 阅览管理 阅览登记 阅览统计

第二篇:图书管理系统

图书管理系统源代码

#include #include class Book{ // 书籍基类 protected: char Title[40];// 书名 long Code;// 条码 int Type;// 0表示书,1表示杂志 public: Book();Book(char *title,long code);void SetCode(long code){ Code = code;} void SetTitle(char* tl){ strcpy(Title,tl);} void SetType(bool type){Type = type;} int GetType(){ return Type;} long GetCode(){ return Code;} virtual void Show();// 显示书的信息 friend ostream& operator<<(ostream& , Book&);// 重载插入运算符 friend istream& operator>>(istream& is, Book&);// 重载提取运算符 Book *Next;// 为创建每个读者所借书链表而定义指针 };class Item :public Book{ //书的款目 // char Title[40];// 书名 char Author[20];// 著者名 char IndexCode[10];// 分类号 // long Code;// 条码 public: Item();Item(char *author,char *title,char *index,int code);Item(Item &);void SetAuthor(char*);void SetIndexCode(char*);virtual void Show();// 显示书的信息 friend ostream& operator<<(ostream& os, Item&);// 重载插入运算符 friend istream& operator>>(istream& is, Item&);// 重载提取运算符 public: };class Magazine:public Book { //杂志类 int Volume;enum LANG {CHINESE=1,ENGLISH} Lang;// 枚举变量,确定语言类别 public: Magazine():Book(){Volume = 0;Lang = CHINESE;Type = 1;} Magazine(char *title,int vol,LANG lang,int code);Magazine(Magazine&);void SetVolume(int vol){Volume = vol;} void SetLang(int lang){Lang =(LANG)lang;} virtual void Show();// 显示杂志的信息 friend ostream& operator<<(ostream& os, Magazine&);// 重载插入运算符 friend istream& operator>>(istream& is, Magazine&);// 重载提取运算符 };class Reader{ // 读者信息类 char Name[20];// 姓名 char Position[20];// 职务 int Age;// 年龄 long Code;// 借书证号 Book* items;// 所借书链表 public: Reader();Reader(char *name,char *posi,int age,int code);// Reader(Reader&);~Reader();long GetCode(){return Code;} void SetName(char*);void SetPosition(char*);void SetAge(int);void SetCode(long);void AddBook(Item);// 添加所借书 void AddBook(Magazine);// 添加所借杂志 void DelBook(Book it);// 还书后减少所借书 void ShowBooks();// 显示所借书 void Show();// 显示读者信息 friend ostream& operator<<(ostream& os, Reader&);// 重载插入运算符 friend istream& operator>>(istream& is, Reader&);// 重载提取运算符 public: int Counter;//计数器,统计所借书数目 };class Manager{ // 管理员类 char Name[20];// 姓名 int Age;// 年龄 int Code;// 工号 friend class Library;// 将图书馆类声明为友元 public: Manager(){} Manager(char*,int,int);long GetCode(){ return Code;} void Show();friend ostream& operator<<(ostream& os, Manager&);// 重载插入运算符 friend istream& operator>>(istream& is, Manager&);// 重载提取运算符 };class Loan { // 借阅信息类 int Type;// 0表示书,1表示杂志 Item item;// 借阅书 Magazine mag;// 借阅杂志 Reader reader;// 借阅者 Manager manager;// 借书操作员 int Code;friend class Library;// 将图书馆类声明为友元 public: Loan(){ } Loan(Loan & l);int GetCode(){ return Code;} void Show();friend ostream& operator<<(ostream& os, Loan&);// 重载插入运算符 friend istream& operator>>(istream& is, Loan&);// 重载提取运算符 };、、、、、、、、、、、、、、、、、、、、、、、#include #include class Reader;template class DblList;template class DblNode{ public: T Info;//数据域 DblNode *llink,*rlink;//前驱(左链)、后继(右链)指针 public: DblNode(T data);//一般结点 DblNode();//头结点 T GetInfo(){return Info;};friend class DblList;friend class Library;};templateclass DblList{ DblNode *head,*current;public: DblList();~DblList();void Insert(const T& data);DblNode* Remove(DblNode* p);void Print();int

Length();//计算链表长度 DblNode *Find(T data);//搜索数据与定值相同的结点 DblNode* Find(int data);//按某个关键字查找 void MakeEmpty();//清空链表 void ShowList();//显示链表各结点 friend istream& operator>>(istream&, DblList&);// 重载输入流运算符 friend ostream& operator<<(ostream& os, DblList& dlist);// 重载输出流运算符 friend class Library;//其它操作 };template DblNode::DblNode(){ llink=rlink=NULL;} template DblNode::DblNode(T data){ info=data;llink=NULL;rlink=NULL;} template DblList::DblList(){//建立表头结点 head=new DblNode();head->rlink=head->llink=head;current=NULL;} template DblList::~DblList(){ MakeEmpty();//清空链表 delete head;} template void DblList::MakeEmpty(){ DblNode *tempP;while(head->rlink!=head){ tempP=head->rlink;head->rlink=tempP->rlink;//把头结点后的第一个节点从链中脱离 tempP->rlink->llink=head;//处理左指针 delete tempP;//删除(释放)脱离下来的结点 } current=NULL;//current指针恢复 } template void DblList::Insert(const T & data){//新节点在链尾 current=new DblNode;current->Info=data;current->rlink=head;//注意次序 current->llink=head->llink;head->llink->rlink=current;head->llink=current;//最后做 } template DblNode* DblList::Remove(DblNode* p){ // 删除结点 current=head->rlink;while(current!=head&¤t!=p)current=current->rlink;if(current==head)current=NULL;else{//结点摘下 p->llink->rlink=p->rlink;p->rlink->llink=p->llink;p->rlink=p->llink=NULL;} return current;} template DblNode* DblList::Find(T data){ // 按结点查找 current=head->rlink;while(current!=head&¤t->Info!=data)current=current->rlink;if(current==head)current=NULL;return current;} template DblNode* DblList::Find(int data){ // 按数据值查找结点 current=head->rlink;int temp =current->Info.GetCode();while(current!=head&&temp!=data){ current=current->rlink;temp = current->Info.GetCode();} if(current==head)current=NULL;return current;} template void DblList::Print(){ // 输出链表 current=head->rlink;while(current!=head){ cout<Info<<'t';current=current->rlink;} cout< int DblList::Length(){ // 取得链表长度 int count=0;current=head->rlink;while(current!=head){ count++;current=current->rlink;} return count;} template void DblList::ShowList(){ // 输出链表各结点 int count=0;current=head->rlink;while(current!=head){ current->GetInfo().Show();current=current->rlink;} return;} template istream& operator>>(istream& is, DblList &dlist){ int len;T tt;// 定义局部变量读入一个结点 is>>len;for(int i= 0;i>tt;dlist.Insert(tt);} return is;} template ostream& operator<<(ostream& os, DblList &dlist){ DblNode *tempP;int len = dlist.Length();os<rlink;while(tempP!=dlist.head){ // 循环输出链表各结点 os<Info;tempP = tempP->rlink;} return os;} #include “class.h” #include “dblist.h” #include class Library{ // 封装图书馆流通业务的类 DblList item;// 在馆图书链表 DblList mag;// 在馆杂志链表 DblList reader;// 读者链表 DblList loan;// 借阅信息链表 DblList manager;// 管理员信息链表 int itemNum;// 记录在馆图书数目 int magNum;// 记录在馆杂志数目 int readerNum;// 记录读者数目 int loanNum;// 记录借阅信息数目 int managerNum;// 记录管理员数目 ofstream itemFileOut;// 文件流对象,保存图书馆书籍数据 ifstream itemFileIn;// 文件流对

象,读入图书馆书籍数据 ofstream magFileOut;// 文件流对象,保存图书馆杂志数据 ifstream magFileIn;// 文件流对象,读入图书馆杂志数据 ofstream readerFileOut;// 文件流对象,保存图书馆读者数据 ifstream readerFileIn;// 文件流对象,读入图书馆读者数据 ofstream loanFileOut;// 文件流对象,保存图书馆借阅信息数据 ifstream loanFileIn;// 文件流对象,读入图书馆借阅信息 ofstream managerFileOut;// 文件流对象,保存图书馆管理员数据 ifstream managerFileIn;// 文件流对象,读入图书馆管理员数据 public: Library();// 构造函数 ~Library();//析构函数 void Run();// 图书馆类的运行函数 void CreateBibliotheca();// 创建书目 void CreateReader();// 创建读者库 void CreateManager();// 创建管理员信息 int ShowMainMenu();// 显示主菜单函数 void Borrow();// 借书操作 void Return();// 还书操作 void Require();// 查询操作 void SaveInfo();// 保存图书馆信息 void OpenInfo();// 读入图书馆信息 };

第三篇:图书管理系统

目录

第一章 绪论.....................................................................................................................................1 第二章 需求分析..............................................................................................................................2

2.1任务概述............................................................................................................................2

2.1.1 图书管理系统完成的主要目标...........................................................................2 2.1.2用户的特点............................................................................................................3 2.2需求规定............................................................................................................................3

2.2.1对功能的规定........................................................................................................3 2.2.2读者管理功能........................................................................................................4 2.2.3系统管理功能........................................................................................................4

第三章 概要设计.............................................................................................................................4

3.1总体设计............................................................................................................................4

3.1.1系统目标设计........................................................................................................4 3.1.2系统功能分析........................................................................................................5 3.2系统设计思想.....................................................................................................................5 3.3 系统模块功能解析............................................................................................................5 第四章 详细设计.............................................................................................................................6

4.1程序设计说明....................................................................................................................6

4.1.1用户登录模块........................................................................................................6 4.1.2用户添加模块........................................................................................................7 4.1.3书籍查询模块........................................................................................................8 4.1.4图书借阅模块........................................................................................................9 4.1.5图书归还模块......................................................................................................10 4.1.6新书入库模块......................................................................................................11 第五章 编码与测试.......................................................................................................................13 5.1各功能模块的实现...........................................................................................................13 5.2 测试.................................................................................................................................19 5.2.1借阅卡管理测试..................................................................................................19 5.2.2书籍管理测试......................................................................................................19 5.2.3系统管理测试......................................................................................................19 结束语.............................................................................................................................................20 致

谢...........................................................................................................................................21 参考文献.........................................................................................................................................21

图书管理系统

摘要:本文介绍了在VB6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析传统的人工管理图书馆的不足,创建了一套行之有效的计算机管理图书馆的方案。文章详细介绍了图书管理信息系统的系统分析部分,包括可行性分析、组织机构分析、管理职能分析、业务流程分析、数据流程分析、数据字典、处理描述等等;系统设计部分主要介绍了系统功能设计和数据库设计;系统实现部分列出了几个主要的程序框图,并附带了一些主要的窗口和程序。关键字:图书管理系统,VB6.0,sqlserver2000,信息系统

Library Management System Abstract:This article introduces the detailed process of exploring a management information system under the environment of VB6.0, utilizing “Top-Bottom” overall plan and a strategy according to “Bottom-Top” application and exploitation.That is to establish a set of effective scheme for library management by computer, through analyzing disadvantages of traditional library management by human resources.This article emphasizes on three sections.The system analysis section of library management information includes feasible analysis, organizing organs analysis, management function analysis, technological process of business analysis, technological process of data analysis, data dictionary, disposal description and the like.The system design section mainly focuses on system function design and data base design.And the system realization section has provided several major program charts, together with the main windows and programs.Key words: library management system, VB6.0,information system

第一章 绪论

随着人类社会的发展,人类对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就必不可

少了。

图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要求应用程序功能的完备,易用等的特点。基于上述考虑本系统主要利用VB6.0作前端的应用开发工具,利用sqlsever 作为后台的数据库,利用WINDOWS作为系统平台开发的图书管理系统。另外本图书馆管理系统利用软件工程化思想和方法,总体上是采用结构化生命法进行系统分析和设计的,而系统实现等步骤则采用了原型法和面对对象的方法

系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。能够对图书进行注册登记,也就是将图书的基本信息(如:书名、作者、价格等)预先存入数据库中,供以后检索。能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电话等信息。提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。提供统计分析功能。可以展现出图书类型比例、库存与借出比例。提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进行修改。能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。提供较为完善的差错控制与友好的用户界面,尽量避免误操作。图书馆的基本功能就是为读者提供借阅服务,读者通过借阅这一过程,可以把图书带出图书馆,从而使读者能够更方便的浏览图书。借书过程中,图书管理员要对读者的借书资格进行审查,对符合借书条件的读者,允许其借书,对其借书记录进行登记;对没有借书资格的读者,禁止其借书。

在VB6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析传统的人工管理图书馆的不足,创建了一套行之有效的计算机管理图书馆的方案。文章详细介绍了图书管理信息系统的系统分析部分,包括可行性分析、组织机构分析、管理职能分析、业务流程分析、数据流程分析、数据字典、处理描述等等;系统设计部分主要介绍了系统功能设计和数据库设计;系统实现部分列出了几个主要的程序框图,并附带了一些主要的窗口和程序。

第二章 需求分析

2.1任务概述

2.1.1 图书管理系统完成的主要目标

进入系统前需要身份认证、用户名、密码、输入正确方可进入。用户可以根据需要进行书库管理。用户可以进行借书证的办理、查询、挂失等操作。用户可

以添加账户和修改密码。2.1.2用户的特点

最终用户包括读者(具有借阅卡的人)、图书管理员,鉴于此软件应用于大学图书管理,读者基本都是在校大学生即校职工和领导,图书管理员都是接受过高等教育的职工,因此他们都懂得运用基本的计算机知识。大学图书管理系统的使用频度很高,假如一个一万人的大学来讲,每天图书馆的平均日流量为1.5万。因此,该软件的可靠性、可用性、可维护性显得尤为重要。

2.2需求规定

2.2.1对功能的规定

1、图书信息查询/借书信息查询:图书馆主要向读者提供图书借阅的服务。读者为了借阅图书,一般情况下,需要在借书之前查询所要借阅的图书情况,所以图书馆需要为读者提供图书查询功能。例如,读者可能想借阅某方面的书,但不知道图书馆在该方面有哪些图书可供借阅,所以需要对图书馆的图书进行查询;或者,读者知道想借阅的图书信息,但不知道该图书馆是否有该书或不知道图书在图书馆的位置、是否被借出、是否可以借阅等信息,这也需要使用图书查询功能。一般的图书查询中,读者是通过图书登记卡、浏览图书登记卡中的信息得到图书信息的。经过图书查询,读者获得图书馆是否有自己想要的图书,该图书的简单信息以及图书在图书馆的借阅位置等信息。

2、新书入库:为了能正常运行,图书馆要及时更新馆藏图书。对于新书,要购进,供读者借阅;所以要设计到图书的批量入库。对于批量入库,图书管理员要批量登记图书的信息,包括书名ID、ISBN、图书名称、作者、出版社、单价、入库时间、图书总量、现存总量等。

3、借阅图书/归还图书:图书馆的基本功能之一就是为读者提供借阅服务,读者通过借阅这一过程,可以把图书带出图书馆,从而使读者能够更方便的浏览图书。借书过程中,图书管理员要对读者的借书资格进行审查,对符合借书条件的读者,允许其借书,对其借书记录进行登记;对没有借书资格的读者,禁止其借书。具体的步骤如下:读者向图书管理员提交请求和图书借阅卡,图书管理员检查读者提供的借阅卡,如果该借阅证真实准确,读者已经借阅的图书并没有超过允许借书量,而且读者没有逾期未还的图书,则允许读者借书,否则,读者不能从图书馆借书。读者拿到要借阅的图书,同时拿到自己的借阅卡,借书过程完毕。当借阅图书的数量超过5本或者出现未按期归还图书的情况,则不好进行借阅处理。图书馆的另一基本功能就是为读者提供还书服务,读者在一本图书借阅期满之前把该图书还给图书馆,一般的还书步骤如下:读者把所借的图书和自己的借阅卡交给图书管理员。图书管理员对图书进行检查,看有无损坏,如果出现图书的损坏情况,读者应进行相应的赔偿。图书管理员查看是否超过规定借阅期限,如果已经过期,则读者要按规定交纳罚金。图书管理员进行登记,同时把还书信息记入借阅卡。读者拿回自己的借阅卡,还书过程借书。读者逾期未归还图书超过三天,将按照每本每天进行一定的罚款。

4、书籍挂失:对图书由于丢失而不能即时还书的情况,读者要即时到图书管理员进行登记,确保图书信息的更新。进行书籍挂失的步骤一般如下:读者将所丢图书信息告诉图书管理员并将借阅卡交给图书管理员。图书管理员对该图书信息进行登记,并按图书的价格,要求读者进行相应赔偿。图书管理员将信息记入借阅卡。读者拿回自己的借阅卡,挂失功能结束。

2.2.2读者管理功能

1、办理借阅卡:图书馆向读者提供借阅服务,读者必须具有有效凭证方可借阅。因此,读者必须办理借阅卡获取有效凭证。读者在办理借阅卡时,必须输入个人有关注册信息,包括读者姓名、性别、出生日期、家庭住址、身份证号码、电话号码等信息。系统根据读者提供的信息,办理借阅卡并生成个人帐号、读者可自行修改密码。

2、借阅卡信息查询;图书馆在正常运营中要面对大量的读者信息,需要掌握每个读者的信息,即时准确的掌握读者的基本情况,这些是图书馆运营的保证。读者要进行信息查询,可以通过系统将自己的借阅卡账户、密码输入系统,系统通过核对找到读者的信息。如果读者的信息正确,系统将读者的信息包括读者姓名、性别、出生日期、家庭住址、身份证号码、电话号码等信息。如果读者的信息不正确,系统将提示错误,并且系统设定,当错误次数超过5次时,系统将不予查询。

3、借阅卡挂失:对借阅卡的丢失要即时进行挂失处理,以防止其他人盗用自己的有效信息并出现私自借书等行为。借阅卡挂失的一般步骤可分为:读者将挂失情况即时到图书管理员处进行登记,并填写登记单。图书管理员将读者情况进行登记挂失,注销借阅卡的信息,并咨询读者是否重新办理。若读者需重新办理,则重新填写相关信息,系统自动生成心的借阅卡信息记录,读者重新设置帐号即密码,并交纳相应的费用。若读者不需办理,则系统将信息注销。读者获得新的图书借阅卡。

2.2.3系统管理功能

1、注册管理员:为了对图书馆管理系统进行管理,图书馆需要若干名图书管理员进行管理,在图书管理员对系统进行管理之前必须进行注册功能,以确定管理员身份。对管理员进行注册,系统生成相应信息。其中管理员的基本信息包括:成员ID、密码等。系统管理员每次登陆前输入自己的ID与密码,系统对其信息进行核实,如基本信息正确,则系统管理员可进行系统管理功能,若系统检查不正确,则系统管理员不可以进行相应的操作。

2、修改密码:服务图书馆管理员可能由于某些原因,如电脑中毒导致管理员密码的泄露,为避免图书管理信息遭到破坏,系统具有修改密码的功能,确保图书管理功能的安全性。

3、退出功能:系统管理员每次离开必须进行退出功能,确保管理功能不被他人所用,这样更方便图书管理系统出现问题时,找到责任人。

第三章 概要设计

3.1总体设计

3.1.1系统目标设计

系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。能够对图书进行注册登记,也就是将图书的基本信息(如:书名、作者、价格等)

预先存入数据库中,供以后检索。能够对借阅人进行注册登记,包括记录借阅人的姓名、地址、电话等信息。提供方便的查询方法。如:以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。提供统计分析功能。可以展现出图书类型比例、库存与借出比例。提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进行修改。能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。提供较为完善的差错控制与友好的用户界面,尽量避免误操作。3.1.2系统功能分析

根据以上功能,将图书管理系统的数据分为:数据输入部分:主要包括图书基本信息的录入、借阅人基本信息的录入、用户基本信息的录入。数据输出部分:主要是各种统计查询,包括:根据图书信息(如书名、作者、出版社等)查阅图书及其借阅信息、统计输出图书类型比例等。数据处理部分:主要涉及借阅和归还的处理,如一本书借出后,必须在数据

库中将该书标记为已借出,以防出现数据库中有书但图书馆无书的情况;一本书归还后,同样必须在数据库中将其标记为已经归还,以便再次借出。

概念设计阶段主要任务和目标是根据需求分析的结果,包括一般联系实体,画出对应的ER图。对于复杂的系统,通常首先要对它的各功能模进行分析,然后再把它的功能结构图画出来,便是设计和优化。功能分析之后,再根据各个岗位、各个用户对数据和使用权限的不同要求作出局部ER图,然后再把各个局部ER图综合起来形成统一的整体ER图。

3.2系统设计思想

1、图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。图书管理系统使用的是SQL Server2000的数据管理系统和以Visual Basic6.0为开发工具。

2、首先进行系统设计分析,系统设计主要包括系统功能分析、系统模块设计以及运行环境的选择、系统实现过程。

3、然后根据系统功能分析设计出需要的数据库,绘制系统数据流图与总结数据字典、设计数据库结构。

4、最后在实现各个功能模块时,采用先模块后系统集成的方式,即各系统功能模块分别独立设计和调试,在创建系统主窗体时才将各个功能模块通过主窗体菜单系统集成到一起,最后进行系统整体的设计和调试。

3.3 系统模块功能解析

(1)系统设计分析

本图书管理系统主要有以下功能: 图书征订:包括图书征订数据的录入、修改、删除与审校等功能。图书编目:包括图书数目信息的录入、修改、删除功能。图书典藏:包括新书分配、库室调配等功能。

图书流通:包括图书借阅、续借、图书返还,图书书目的查询的功能。系统用户管理:包括系统用户数据的录入、修改与删除等功能。

读者数据管理:包括读者类别管理,读者个人数据的录入、修改和删除功能。(2)系统功能分析

权限功能:权限功能设置的对象为高级管理员、普通管理员、读者。高级管 删除所有信息;普通管理员只能对授权范围内进行相应修改及删除;读者 只能查询借阅记录和图书书目不能修改。

录入功能:为普通管理员提供相应的录入功能,为高级管理员提供对所有信息的录入功能。

查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。维护功能:为普通管理员提供查询及相应的修改,删除功能,为高级管理提 供对所有信息的修改删除功能。

打印功能:可打印图书征订计划。

退出功能:各个功能模块和主窗体都设有关闭命令按钮,可方便地退出各模 块或系统。

第四章 详细设计

4.1程序设计说明

4.1.1用户登录模块

1.程序描述:此程序用于用户登陆的至用户界面,程序通过输入用户的ID,用户密码的正确性来实现对验证用户的真实性。2.功能:实现用户的登录功能

3.性能:用户通过输入用户ID,用户名和密码进行用户登陆,通过认证后,用户

即可进入用户界面。

4.输入项:输入用户ID,用户名,密码5.输出项:用户主页面。流程逻辑如图所示:

输入用户名和密码N数据库是否打开Y连接失败返回N用户名和密码是否正确Y输入次数是否超过5次YN重新输入密码关闭数据库返回登陆成功进入主界面

图4-1用户登录流程逻辑

4.1.2用户添加模块

1.程序描述:此程序用于添加新的用户,用户通过向数据库内输入必要的信息来注册成为新的用户,才通过一系列的验证之后,即注册成为真正的用户。

2.功能:实现对用户的添加功能。

3.性能:查询新用户的用户名是否存在,若存在则停止添加返还数据库;若用户不存在,则进行添加,并进行注册,注册成功后返回。

4.输入项:输入用户的详细信息,包括姓名,出生日期,性别,地址,身份证号码,电话号码等信息。

5.输出项:若添加成功,则输出提示用户注册成功界面;若未成功,则提示输出未成功原因界面。

6.流程逻辑如下图所示:

输入用户信息N判断数据库是否打开提示连接失败返回Y查询数据库中是否有该用户Y提示已经存在该用户关闭数据库并返回N向数据库中添加新用户提示注册成功返回

图4-2用户添加模块流程逻辑

4.1.3书籍查询模块

1.程序描述:此程序用于实现用户对想要借阅的查询功能。用户通过输入相应的图书信息来查询,数据库根据用户提供的信息来搜索,最后给出客户相应的图书信息。

2.功能:实现图书查询功能。

3.性能:对进行想要查询的书籍进行搜索,若存在此书则显示该书的详细信息;若不存在此书,则提示没有此书并返回。

4.输入项:输入图书的详细信息,包括图书名称,书籍ID,图书作者,出版社,单价等信息。

5.输出项:若输入的图书存在即输出图书详细信息界面;若输入的图书不存在则显示图书不存在界面。

6.流程逻辑如下图所示:

输入图书信息判断数据库是否打开Y查询是否有该书YN连接失败返回N关闭数据库返回显示该书的信息关闭数据库返回 图4-3图书查询模块流程

4.1.4图书借阅模块

1.程序描述:此程序用于图书的借阅,用户通过登录自己的借阅ID后,对需要借阅的图书进行借阅操作,如果符合借阅的要求,则可进行借阅。2.功能:实现对图书的书籍借阅功能。

3.性能:首先验证借阅者输入的借阅ID是否存在,若存在进行下一步;若不存在则返回。

4.若借阅ID存在,则检查此借阅ID是否借阅书籍超出4本,若超出则提示超出借阅数目,返回;若没有超出,则进行下一操作。

5.对想要借阅的图书ID进行搜索,若此书不存在,则提示此书不存在;若此书存在则进行下一步操作。

将借阅者借阅的数量増一,将数据库中此书数量减一,同时提醒借阅成功,然后返回。

6.输入项:输入借阅证的ID,图书ID 7.输出项:若借阅证ID正确且图书ID正确且符合借阅要求,则输出提示借阅成功界面;若存在借阅ID或图书ID或不符合借阅要求等问题,则输出提示没有借阅成功原因的界面。8.流程逻辑如下图

输入书籍ID和借阅IDN数据库是否打开YN借阅卡ID是否存在YY判断借阅ID是否借书超出4本提示超出最大借书数量关闭数据库返回提示不存在该借阅者关闭数据库返回数据库连接失败返回NN数据库中是否存在书籍IDY将借阅者的借书数量加1提示不存在该书籍关闭数据库返回将书籍的数量减1提示借书成功关闭数据库返回 图4-4图书借阅模块

4.1.5图书归还模块

1.程序描述:此程序用于图书的归还,用户在登录自己的ID之后,用户可以对需要归还的图书进行操作,如果符合归还要求,则可以将图书归还。2.功能:实现对图书的书籍归还功能。

3.性能:首先验证借阅者输入的借阅ID是否存在,若存在进行下一步;若不存在则返回。

对想要归还的图书ID进行搜索,若此书不存在,则提示此书不存在;若此书存在则进行下一步操作。将借阅者借阅的数量减一,将数据库中此书数量加一,同时提醒借阅归还,然后返回。

4.输入项:输入借阅证ID和图书ID 5.输出项:若借阅证ID和图书ID正确,则输出提示图书归还成功界面;若借阅证ID或图书ID不正确,则输出提示没有成功原因的界面。

6.流程逻辑如下图:

输入书籍ID和借阅IDN数据库是否打开YN借阅卡ID是否存在YN提示不存在该书籍关闭数据库返回提示不存在该借阅者关闭数据库返回数据库连接失败返回数据库中是否存在书籍IDY将借阅者的借书数量减1将书籍的数量加1提示还书成功关闭数据库返回 图4-5图书归还模块

4.1.6新书入库模块

1.程序描述:此程序用户对新进图书的入口登记处理。用户可以将新书的详细信息进行输入,保存在数据库中后,新书即登记成功。

2.功能;实现新进图书入库功能。

3.性能:对数据库查询是否已存在此书,若存在则将此书数量加一,提示添加成功;若没有此书,则将此书的基本信息存入数据库,并提示添加书籍成功。

4.输入项:输入新书的书籍ID,书名,作者,出版社,单价等信息。

5.输出项:若添加成功,则输出提示新书添加成功界面;若没有添加成功,输出提示未成功原因界面。

6.流程逻辑如下图

输入书籍信息N数据库是否打开关闭数据库返回Y是否已经存在Y该书将该书的数量加1提示添加书籍成功关闭数据库N将该书信息存入数据库是否是第一条N记录提示添加书籍成功关闭数据库返回Y提示添加第一本书籍关闭数据库返回图4-6新书入库模块

返回

第五章 编码与测试

5.1各功能模块的实现

(1)用户登录窗体

图5-1 用户登录窗体

用户登录代码:

Const MaxLogTimes As Integer = 3 Private Sub cmdcancel_Click()

If MsgBox(“是否真的退出系统登录?”, vbYesNo, “登录验证”)= vbYes Then

Unload Me

End If End Sub Private Sub cmdok_Click()

Static intLogTimes As Integer

intLogTimes = intLogTimes + 1

If intLogTimes > MaxLogTimes Then

MsgBox “超过登录次数!”, vbCritical, “登录验证”

Else

With Library_Manage.rsSysUsers

.Open

If.RecordCount > 0 Then

.MoveFirst

.Find “编号=” & Trim(txtLog(0))& “"

If.EOF Then

MsgBox Trim(txtLog(0))& ”不是系统用户,请检查输入!“, vbCritical, ”登录验证“

txtLog(0).SetFocus

txtLog(0).SelStart = 0

txtLog(0).SelLength = Len(txtLog(0))

ElseIf.Fields(”口令“)<> Trim(txtLog(1))Then

MsgBox ”口令错误,请检查输入口令!“, vbCritical, ”登录验证“

txtLog(1).SetFocus: txtLog(1)= ”“

Else

CurrentUserNum =.Fields(编号)

CurrentUserPassword =.Fields(”口令“)

CurrentUserStatus =.Fields(”权限“)

MsgBox ”欢迎使用常州信息学院管理系统!“, vbInformation, ”登陆成功!“

Unload Me

End If

End If

.Close

End With

End If End Sub Private Sub Form_Load()

SysLogon.BackColor = RGB(192, 210, 270)End Sub(2)用户管理窗体界面

图5-2 用户管理窗体

用户管理窗体代码 '保存

Private Sub cmdSave_Click()

Dim objcopy As New Recordset

If Trim(txtNum)= ”“ Then

MsgBox ”不能为空!“, vbCritical, ”系统用户管理“

txtNum.SetFocus

txtNum.SelStart = 0

txtNum.SelLength = Len(txtNum)

ElseIf Len(Trim(txtPwd))<> 6 Then

MsgBox ”用户口令须为6位字符串!“, vbCritical, ”系统用户管理“

txtPwd.SetFocus

txtPwd.SelStart = 0

txtPwd.SelLength = Len(txtPwd)ElseIf Not txtAuth Like ”[0,1]“ Then

MsgBox ”用户权限必须为0或1“, vbCritical, ”系统用户管理“

txtAuth = ”“

txtAuth.SetFocus Else

Set objcopy = Library_Manage.rsSysUsers.Clone '对错?

With objcopy

If.RecordCount > 0 Then

.MoveFirst

.Find ”编号“ & Trim(txtNum)& ”“

If Not.EOF And.AbsolutePosition <> Library_Manage.rsSysUsers.AbsolutePosition Then

MsgBox ”编号:“ & Trim(txtNum)& ”已被使用,请选择其他编号!“, vbCritical, ”系统用户管理“

txtNum.SetFocus

txtNum.SelStart = 0

txtNum.SelLength = Len(txtNum)

Exit Sub

Else

'保存记录

Library_Manage.rsSysUsers.Update

MsgBox ”数据保存成功!“, vbInformation, ”系统用户管理“

cmdAdd.Enabled = True

cmdDel.Enabled = True

isAdding = False: picNavigation.Enabled = True

End If

End With End If End Sub Private Sub Form_Load()

cmdMove(0).Value = True End Sub(3)读者数据管理窗体界面

图5-3 读者数据管理窗体

读者数据管理窗体代码

Library_Manage.Library_Manage_Con.Execute ”TRUNCATE TABLE 读者类别“

With Library_Manage.ReaderType

If.State = adStateClosed Then.Open

.AddNew

.Fields(”编号“)= ”0“

.Fields(”名称“)= ”特殊“

.Fields(”借书量“)= Val(txtSp(1))

.Fields(”借书期“)= Val(txtSp(2))

.Fields(”有效期“)= Val(txtSp(3))

.Update

.AddNew

.Fields(”编号“)= ”1“

.Fields(”名称“)= ”馆员“

.Fields(”借书量“)= Val(txtL(1))

.Fields(”借书期“)= Val(txtL(2))

.Fields(”有效期“)= Val(txtL(3))

.Update

.AddNew

.Update

.AddNew

.Fields(”编号“)= ”2“

.Fields(”名称“)= ”教师“

.Fields(”借书量“)= Val(txtT(1))

.Fields(”借书期“)= Val(txtT(2))

.Fields(”有效期“)= Val(txtT(3))

.Update

.AddNew

.Fields(”编号“)= ”3“

.Fields(”名称“)= ”学生“

.Fields(”借书量“)= Val(txtS(1))

.Fields(”借书期“)= Val(txtS(2))

.Fields(”有效期“)= Val(txtS(3))

.Update

End With End Sub Private Sub Form_Load()cmdMove(0).Value = True End Sub Private Sub SSTab1_DblClick()End Sub(4)图书征订管理窗体

图5-4 图书征订管理窗体

图书征订管理代码

txtPubDate.SelLength = Len(txtPubDate)

ElseIf Trim(txtAuthor)= ”“ Then

MsgBox ”作者不能为空!“, vbCritical, ”图书征订管理“

txtAuthor.SetFocus

txtAuthor.SelStart = 0

txtAuthor.SelLength = Len(txtAuthor)

ElseIf Val(txtNum)= ”“ Then

MsgBox ”正的数量无效!“, vbCritical, ”图书征订管理“

txtNum.SetFocus

txtNum.SelStart = 0

txtNum.SelLength = Len(txtNum)

ElseIf Not IsDate(txtDate)= ”“ Then

MsgBox ”作者不能为空!“, vbCritical, ”图书征订管理“

txtDate.SetFocus

txtDate.SelStart = 0

txtDate.SelLength = Len(txtDate)

Else

'保存记录

Library_Manage.rsBooksOrder.Update

MsgBox ”数据保存成功!“, vbInformation, ”图书征订管理“

cmdAdd.Enabled = True: cmdDel.Enabled = True

cmdExam.Enabled = True: cmdRefresh.Enabled = True

isAdding = False: picNavigation.Enabled = True

End If End Sub Dim objcopy As Recordset Private Sub cmbOut_Click()

AddListOut

End Sub Private Sub cmdAddAll_Click(Index As Integer)'选择全部条码

ListItem_Add lstPre(Index), LstIn(Index), Index, True End Sub Private Sub cmdAddOne_Click(Index As Integer)'选择当前条码

ListItem_Add lstPre(Index), LstIn(Index), Index, False End Sub Private Sub cmdExit_Click()

If LstIn(0).ListCount > 0 Then

If MsgBox(”你选定了部分新书准备入库,但没执行保存操作“ & vbCr & ”是否要执行保存操作?“, vbCritical + vbYesNo, ”图书典藏管理“)= vbYes Then

SSTab1.Tab = 0

cmdSave.Value = True

End If

ElseIf LstIn(1).ListCount > 0 Then

If MsgBox(”你选定了部分新书准备入库,但没执行保存操作“ & vbCr & ”是否要执行保存操作?“, vbCritical + vbYesNo, ”图书典藏管理“)= vbYes Then

SSTab1.Tab = 1

cmdSave.Value = True

End If

End If

Unload Me End Sub '刷新新书或调出库室条码列表

Private Sub cmdRefresh_Click(Index As Integer)

Select Case Index

Case 0 '刷新新书列表

With Library_Manage.rsBooksBibli

If.State = adStateClosed Then.Open

.Requery

End With

AddListNew

Case 1 '刷新库室条码列表

With Library_Manage.rsBooksStore

If.State = adStateClosed Then.Open

.Requery

End With

AddListOut

End Select End Sub Public Sub AddListNew()

lstPre(0).Clear

With Library_Manage.rsBooksBibli

If.State = adStateClosed Then.Open

If.RecordCount > 0 Then

.MoveFirst

While Not.EOF

lstPre(0).AddItem.Fields(”条码“)

.MoveNext

Wend

Else

lstPre(0).AddItem ”当前无待分配新书"

End If End With End Sub 5.2 测试

5.2.1 借阅卡管理测试

进度安排测试办理借阅证信息,检查个人账号、读者可自行修改密码。测试查询借阅卡信息的正确性,包括输入的读者信息等。测试借阅卡挂失功能,包括读者信息等。

5.2.2 书籍管理测试

进度安排:测试新书入库信息的正确性。测试借书、还书功能信息正确性。测试书籍挂失信息的正确性。测试图书信息查询的正确性。测试借书信息查询的正确性。

5.2.3 系统管理测试

进度安排测试注册管理员信息的正确性。测试修改密码信息的正确性。

结束语

对于这篇论文我有不少心得体会。这次是对我们掌握所学知识的一次考核。它可以让我们了解自己一学期里的学习情况,有助于在今后的学习中加以改进。通过这次上机实验,我发现了自己对数据库和vb语言掌握的并不牢,有的知识点根本就不懂。这都要怪自己在平时的学习过程中不够用心,不懂的地方也没有及时的去搞懂,课后也没怎么花时间去研究。这次实验我觉得自己不仅学到了很多软件设计方面的知识,也让我巩固了以前所学的知识以及看到了自己以前学习中的不足之处。

在今后的学习过程中,我一定会认真学习专业课程,再也不能像以前那样迷迷糊糊的,课后要多花时间去研究一些有关编程方面的题目,不懂的地方及时把它弄懂。以后自己还要多动手编写一些程序。在这里我要感谢学校能提供这么一个宝贵的机会,我们可以把课堂上所学的理论知识运用到实践中去,把书上的东西变成我们自己的。这个机会既让我们学习巩固了知识,也让我们发现了自己的不足之处。特别要感谢我们的指导老师,正因为有了您的帮助我们才可以完成实验。我也希望今后还会有更多的机会让我们去实践,去充实自己。

致 谢

在本次设计的过程中,老师们给了我们很大的帮助。不仅使我们在规定时间内完成了系统的设计,同时还使我们学到了很多有益的知识和宝贵的经验在此,我谨向他们表示最衷心的感谢。感谢老师的指导,使我们充分利用软件工程,VB,数据库原理开发出自己的项目.在开发的过程中使我体会到了工程化开发方法和瀑布模型利用的重要性,在此还要感谢所有合作参与项目开发的同学们这次毕业设计的成功离不开所有参与的同学们的帮助和支持,是他们让我知道了团队工作的重要.参考文献

1、陶宏才.数据库原理及设计[M].北京:清华大学出版社.2004.2、陆丽娜.软件工程 [M].北京:经济科学出版社.1999

3、郝志恒、刘舫.Visual Basic 6.0 编程篇[M] 北京:电子工业出版社 2004

4、刘世峰.数据库基础与应用[M] 北京: 中央电大出版社 2003

5、吴斌、鲁大林.Visual Basic+SQL Sever数据库应用系统开发[M] 北京:机械工程出版社 2008

6、邱李华.SQL Server 2000 数据库应用教程[M] 北京:人民邮电出版社 2007

7、钟军.Visual Basic数据库高级实例导航[M] 北京:清华大学出版社 2003

8、赵松涛.Visual Basic+SQL Server 2000 系统开发实录[M] 北京: 机械工业出版社 2007

第四篇:图书管理系统

七个文件

1.book.txt存放书籍

2.borrower.txt存放借阅信息

3.chenwen.txt 存放开始信息

4.mima.txt存放密码 5.qianyan.txt前言

6.student.txt存放学生信息

7.yuyue.txt 存放预约信息

#include #include #include void guanliyuan();void youke();typedef struct borrower{ struct borrower *next;struct borrower *front;int book;int stu;

int times;

int sum;}Borr;typedef struct stus{ int numbers;char mark[40];

char name[40];

char xueyuan[40];

int sum;

struct stus *next;

struct stus *front;}Stus;typedef struct books{ struct books *front;int numbers;char name[40];char author[40];char type[40];char publisher[40];int sum;int cun;struct books *next;}Books;void chenwenxie4();void chenwen();void time();void time1();void fangkuang();void printstudent1(Stus *head);Borr* buildborrowerlist();Books* buildbookslist();Stus* buildstudentlist();Books* insertbook(Books *head1,Books *pa);Stus* insertstudent(Stus *head2,Stus *pb);Borr* insertborrower(Borr *head3,Borr *pc);Books* chenwensousou11(Books* head11,int num11);Books* chenwensousou12(Books* head12,char name12[]);Books* chenwensousou13(Books* head13,int num13);Books* chenwensousou15(Books* head22,char name22[]);Stus* chenwensousou21(Stus* head21,int num21);Stus* chenwensousou22(Stus* head22,char name22[]);Stus* chenwensousou23(Stus* head23,int num23);Borr* chenwensousou31(Borr* head31,int num31);Borr* chenwensousou32(Borr* head32,int num32);Borr* chenwensousou33(Borr* head33,int num33);Borr* chenwensousou34(Borr* head34,int num34);Books* deletebook1(Books *head,int num);Stus* deletestudent1(Stus *head,int num);Borr* deleteborrower1(Borr *head,int num);Borr* deleteborrower2(Borr *head,int num);Books* booksorting11(Books *head);Books* booksorting12(Books *head);Stus* studentsorting21(Stus *head);Stus* studentsorting22(Stus *head);Borr* borrowersorting31(Borr *head);Borr* borrowersorting32(Borr *head);Borr* borrowersorting33(Borr *head);Books* chenwensousou14(Books* head12,char type[]);void printbook(Books *head);void printborrower(Borr *head);void chenwendu1(Books *head);void chenwendu2(Stus *head);void chenwendu3(Borr *head);Books* chenwenxie1();Stus* chenwenxie2();Stus* chenwenxie22();Borr* chenwenxie3();Borr* yuyuexie();void yuyuedu(Borr *head);Books bookcreat();Stus studentcreat();Borr borrowercreat();void time2();void qingkong();void qingkong1();void qingkong2();void qingkong3();int yanzheng(Books* head,int num);int yanzheng1(Stus* head,int num);int yanzheng2(Borr* head,int num);int yanzheng3(int num);void bianli(Books *head1,Stus *head2,Borr *head3);void sousuo(Books *head1,Stus *head2,Borr *head3);void paixu(Books *head1,Stus *head2,Borr *head3);void mimadu(char a[]);void sousuo1(Borr *headborrower);char* mimaxie();void qingkong4();void tishi1();void tishi2();int main(){ int n=0,i;char choice=3,ch[40],ch1[3]=“是”,cw;printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉█▉n”);time();

printf(“█┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓█n”);time();

printf(“█┃******************欢迎进入河南工业大学图书管理系统********************* ┃▉n”);time();

printf(“█┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛█n”);time();

printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉██n”);

for(i=0;i<25;i++)

time();system(“cls”);chenwen();chenwenxie4();while(1){

scanf(“%s”,ch);

if(strcmp(ch,ch1)==0)

break;

else{

system(“cls”);

printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉█▉n”);

printf(“█┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓█n”);

printf(“■┃〓〓〓〓〓〓〓对不起,你尚未同意该协议,不能使用该系统〓〓〓〓〓〓〓〓〓┃█n”);

printf(“█┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛█n”);

printf(“█ ▓▓▓▓▓▓▓▓▓▓我已阅读并同意该协议?(是/否)▓▓▓▓▓▓▓▓▓▓▓▓ ▉n”);

printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉█▉n”);

} } getchar();system(“cls”);while(n==0){ printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);printf(“ ┃ ▼▲▼▲▼▲▼▲▼欢迎进入河南工业大学图书管理系统 ▼▲▼▲▼▲▼▲▼

┃n”);printf(“ ┣━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┫n”);printf(“ ┃

★(0)退出

★(1)管理员登录

★(2)学生登录

┃n”);printf(“ ┣━━━━━━━━━━━┻━━━━━━━━━━━━━┻━━━━━━━━━━┫n”);printf(“ ┃

▂▃▄▅▆▇█▉▊▋▌●●● 请输入选择●●●▌▋▊█▉▇▆▅▄▃▂

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice)&&choice>='0'&&choice<='2'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice){

case '0':system(“cls”);

chenwen();

return 0;

case '1':guanliyuan();

break;

case '2':youke();

break;

}

}

else{

tishi2();

while(choice!='n'){

scanf(“%c”,&choice);

}

} } printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉█▉n”);time();

printf(“█┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓█n”);time();

printf(“█┃******************谢谢使用河南工业大学图书管理系统********************* ┃▉n”);time();

printf(“█┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛█n”);time();

printf(“████████████▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉██n”);

for(i=0;i<25;i++)

time();system(“cls”);return 0;} void guanliyuan(){

char choice,choice1,choice2,cw;

int f=1;int n=0,j=3,l=0,a=0,g=0;

char *ppp=(char *)malloc(40*sizeof(char));Books *headbook=chenwenxie1(),*pa=NULL,*book;Stus *headstudent=chenwenxie2(),*pb=NULL,*stu;Borr *headborrower=chenwenxie3(),*pc=NULL,*headyuyue=yuyuexie(),*yu;char p[40];p[0]='4',p[1]='3',p[2]='1',p[3]='5',p[4]='c',p[5]='w';

ppp=mimaxie();system(“cls”);printf(“

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);printf(“

┃◆◆◆◆◆◆◆◆◆◆◆◆欢迎管理员登陆◆◆◆◆◆◆◆◆◆◆◆◆┃n”);printf(“

┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);printf(“

┃▁▂▃▄▅▆▇█▉▊▋▌▌请输入密码▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);printf(“

┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);printf(“

┃ ▓▓▓▓▓▓▓▓▓▓★你一共有3次机会★▓▓▓▓▓▓▓▓▓▓▓┃n”);printf(“

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

g=0;

while(n==0){

scanf(“%s”,p+6);

if(strcmp(ppp,p)==0){

getchar();

l=0;

system(“cls”);

while(1){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃ ★(0)返回上级 ★(1)创建列表 ★(2)插入(借还)★(3)删除(借还)★(4)遍历

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(5)排序

★(6)搜索

★(7)修改密码

★(8)保存

★(9)清空文件

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▉▉▉▉▉▉▉▉▉▉▉▉▉●●●请输入选择●●●▉▉▉▉▉▉▉▉▉▉▉▉┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice)&&choice>='0'&&choice<='9'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice){

case '0':

system(“cls”);

break;

case '1':{

system(“cls”);

while(n==0){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(0)返回上级

★(1)创建图书链表 ★(2)创建学生链表 ★(3)创建借阅链表

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▉▉▉▉▉▉▉▉▉▉▉▉▉●●●请输入选择●●●▉▉▉▉▉▉▉▉▉▉▉▉┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='3'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1){

case '0':

system(“cls”);

break;

case '1':headbook=buildbookslist();

g=1;

break;

case '2':headstudent=buildstudentlist();

g=1;

break;

case '3':headborrower=buildborrowerlist();

g=1;

break;

}

}

else{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,您的输入有误▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

while(choice1!='n'){

scanf(“%c”,&choice1);

}

}

if(choice1=='0'){

break;

}

}

}

break;

case '2': {

system(“cls”);

while(n==0){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(0)返回上级

★(1)插入图书信息 ★(2)插入学生信息

★(3)插入借阅信息 ┃n”);

printf(“ ┃________________________________________________________________________┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▉▉▉▉▉▉▉▉▉▉▉▉▉●●●请输入选择●●●▉▉▉▉▉▉▉▉▉▉▉▉┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='3'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1){

case '0':

system(“cls”);

break;

case '1':{

system(“cls”);

if(headbook==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓图书链表为空,请先创建图书链表〓〓〓〓〓〓〓〓〓〓┃n”);

}

else{

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃████████████请输入你要插入的图书信息████████████┃|n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★1.编号

★2.书名

★3.作者

★4.类型

★5.出版社

★(6)库存

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pa=(Books *)malloc(sizeof(Books)))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

}

while(scanf(“%d”,&pa->numbers)&&scanf(“%s”,pa->name)&&scanf(“%s”,pa->author)&&scanf(“%s”,pa->type)&&scanf(“%s”,pa->publisher)&&scanf(“%d”,&pa->cun)){

getchar();

system(“cls”);

headbook=insertbook(headbook,pa);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓恭喜你,插入成功▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

l=1;

break;

}

if(l==0){

tishi2();

getchar();

}

}

l=0;

break;

}

case '2':{

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

██████████学生链表为空,请先创建学生链表██████████ ┃n”);

}

else{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃████████████请输入你要插入的学生信息████████████┃|n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★1.学号★

★2.姓名★

★3.学院★

★4.身份证★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pb=(Stus *)malloc(sizeof(Stus)))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

}

while(scanf(“%d”,&pb->numbers)&&scanf(“%s”,pb->name)&&scanf(“%s”,pb->xueyuan)&&scanf(“%s”,pb->mark)){

getchar();

stu=chenwensousou21(chenwenxie2(),pb->numbers);

if(stu!=NULL){

free(pb);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,该学号已存在▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

l=1;

system(“pause”);

system(“cls”);

break;

}

headstudent=insertstudent(headstudent,pb);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓恭喜你,插入成功▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

l=1;

break;

}

if(l==0){

tishi2();

getchar();

}

}

l=0;

break;

}

case '3':{

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

██████████借阅链表为空,请先创建借阅链表██████████ ┃n”);

}

else{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃████████████请输入你要插入的借阅信息████████████┃|n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★★1.学号★★

★★2.书编★★

★★3.时间★★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃***********请注意:(时间格式 年月日 比如1992年08月13日为920813)**********┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pc=(Borr *)malloc(sizeof(Borr)))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

}

while(scanf(“%d”,&pc->stu)&&scanf(“%d”,&pc->book)&&scanf(“%d”,&pc->times)){

if(yanzheng2(chenwenxie3(),pc->book)==0){

free(pc);

break;

}

stu=chenwensousou21(chenwenxie2(),pc->stu);

if(stu==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,该学号不存在▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

free(pc);

system(“pause”);

system(“cls”);

break;

}

if(chenwensousou11(chenwenxie1(),pc->book)==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,该书编不存在▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

free(pc);

system(“pause”);

system(“cls”);

break;

}

book=chenwensousou11(chenwenxie1(),pc->book);

book->cun--;

getchar();

if(headyuyue!=NULL)

yu=chenwensousou32(headyuyue,pc->book);

if(yu!=NULL&&headyuyue!=NULL){

headyuyue=deleteborrower1(yuyuexie(),pc->book);

if(headyuyue!=NULL)

yuyuedu(headyuyue);

else{

qingkong4();

}

}

headborrower=insertborrower(headborrower,pc);

if(headbook!=NULL)

chenwendu1(headbook);

if(headborrower!=NULL)

chenwendu3(headborrower);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓恭喜你,插入成功▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

l=1;

break;

}

if(l==0){

tishi2();

getchar();

}

}

l=0;

break;

}

}

}

else{

tishi2();

while(choice1!='n'){

scanf(“%c”,&choice1);

}

}

if(choice1=='0'){

break;

}

}

}

break;

case '3':

system(“cls”);

{

while(n==0)

{

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃████████████请输入你要删除的借阅信息████████████┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃ ★(0)返回上级

★(1)删除图书信息

★(2)删除学生信息

★(3)删除借阅信息 ┃n ”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▉▉▉▉▉▉▉▉▉▉▉▉▉●●●请输入选择●●●▉▉▉▉▉▉▉▉▉▉▉▉┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice2)&&choice2>='0'&&choice2<='3')

{

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice2)

{

case '0':

system(“cls”);

break;

case '1':

{

if(headbook==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓图书链表为空,请先创建图书链表〓〓〓〓〓〓〓〓〓〓┃n”);

}

else

{

system(“cls”);

while(n==0)

{

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃━━━━━━━━━━━请输入你要删除的图书信息的━━━━━━━━━━━━┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★0.返回上级

★1.编号

★2.书名

★3.位置

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▉▉▉▉▉▉▉▉▉▉▉▉▉●●●请输入选择●●●▉▉▉▉▉▉▉▉▉▉▉▉┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pa=(Books *)malloc(sizeof(Books)))==NULL)

{

printf(“Not able to allocate memory.n”);

exit(1);

}

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='3')

{

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1)

{

case '0':

system(“cls”);

break;

case '1':

if(headbook==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入编号●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pa->numbers))

{

getchar();

pa=chenwensousou11(headbook,pa->numbers);

}

else

{

getchar();

pa=NULL;

}

break;

case '2':

if(headbook==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入书名●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%s”,pa->name))

{

getchar();

pa=chenwensousou15(headbook,pa->name);

}

else

{

getchar();

pa=NULL;

}

break;

case '3':

if(headbook==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入位置●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pa->sum))

{

getchar();

pa=chenwensousou13(headbook,pa->sum);

}

else

{

getchar();

pa=NULL;

}

break;

}

if(choice1=='0')

{

break;

}

if(pa==NULL)

{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓没有找到你想删除的信息〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

else

{

if(headbook==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃◆◆◆◆◆◆◆◆◆◆◆◆你要删除的信息是这些嘛?◆◆◆◆◆◆◆◆◆◆◆◆┃n”);

printf(“ ┣━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┫n”);

printf(“ ┃

①编号┃

②书名┃

③作者 ┃n”);

printf(“ ┣━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫n”);

printf(“ ┃ %21d ┃ %21s┃ %20s ┃n”,pa->numbers,pa->name,pa->author);

printf(“ ┣━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━┳━━━━━┫n”);

printf(“ ┃

④类型┃

⑤出版社┃

⑥位置┃

⑦库存量┃n”);

printf(“ ┣━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━╋━━━━━┫n”);

printf(“ ┃ %23s┃ %21s┃%10d┃%10d┃n”,pa->type,pa->publisher,pa->sum,pa->cun);

printf(“ ┣━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━┻━━━━━┫n”);

printf(“ ┃

★(0)不删除,返回上级

★(1)删除

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice2)&&choice2=='0'){

system(“cls”);

break;

}

if(choice2!='1'){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓你的输入有误,此信息未删除〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

system(“pause”);

system(“cls”);

break;

}

headbook=deletebook1(headbook,pa->numbers);

if(headbook!=NULL)

chenwendu1(headbook);

if(headborrower!=NULL)

headborrower=deleteborrower1(headborrower,pa->numbers);

if(headborrower!=NULL)

chenwendu3(headborrower);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓恭喜你,删除成功〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

}

else

{

tishi2();

while(choice1!='n')

scanf(“%c”,&choice1);

}

}

}

break;

}

case '2':

{

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

else

{

system(“cls”);

while(n==0)

{

tishi1();

printf(“ ┃━━━━━━━━━━━━请输入你要删的学生信息的━━━━━━━━━━━┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★0.返回上级

★1.学号

★2.名字

★3.位置

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pb=(Stus *)malloc(sizeof(Stus)))==NULL)

{

printf(“Not able to allocate memory.n”);

exit(1);

}

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='3')

{

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1)

{

case '0':

system(“cls”);

break;

case '1':

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入学号●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pb->numbers))

{

getchar();

pb=chenwensousou21(headstudent,pb->numbers);

}

else

{

getchar();

pb=NULL;

}

break;

case '2':

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入名字●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%s”,pb->name))

{

getchar();

pb=chenwensousou22(headstudent,pb->name);

}

else

{

getchar();

pb=NULL;

}

break;

case '3':

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入位置●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pb->sum))

{

getchar();

pb=chenwensousou23(headstudent,pb->sum);

}

else

{

getchar();

pb=NULL;

}

break;

}

if(choice1=='0')

{

break;

}

if(pb==NULL)

{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓对不起,没有找到你想删除的信息▓▓▓▓▓▓▓▓▓▓▓┃n”);

}

else

{

if(headstudent==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃◆◆◆◆◆◆◆◆◆◆◆◆你要删除的信息是这些嘛?◆◆◆◆◆◆◆◆◆◆◆◆┃n”);

printf(“ ┣━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━┫n”);

printf(“ ┃

学号

姓名

学院

位置 ┃n”);

printf(“ ┣━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━━╋━━━━━┫n”);

printf(“ ┃%18d┃ %17s┃ %19s┃ %8d ┃n”,pb->numbers,pb->name,pb->xueyuan,pb->sum);

printf(“ ┣━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━━┻━━━━━┫n”);

printf(“ ┃

★(0)不删除,返回上级

★(1)删除

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice2)&&choice2=='0'){

system(“cls”);

break;

}

if(choice2!='1'){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“

┃▓▓▓▓▓▓▓▓▓▓▓你的输入有误,此信息未删除▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

system(“pause”);

system(“cls”);

break;

}

headstudent=deletestudent1(headstudent,pb->numbers);

if(headstudent!=NULL)

chenwendu2(headstudent);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓恭喜你,删除成功〓〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

}

else

{

tishi2();

while(choice1!='n')

scanf(“%c”,&choice1);

}

}

}

break;

}

case '3':

{

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

else

{

system(“cls”);

while(n==0)

{

tishi1();

printf(“ ┃━━━━━━━━━━━━请输入你要删的借阅信息的━━━━━━━━━━━┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★0.返回上级

★1.学号

★2.书编

★3.位置

★4.时间

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃*******请注意:(时间格式 年月日 比如1992年08月13日 为 920813)*********┃ n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((pc=(Borr *)malloc(sizeof(Borr)))==NULL)

{

printf(“Not able to allocate memory.n”);

exit(1);

}

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='4')

{

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1)

{

case '0':

system(“cls”);

break;

case '1':

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入学号●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pc->stu))

{

getchar();

pc=chenwensousou31(headborrower,pc->stu);

}

else

{

getchar();

pc=NULL;

}

break;

case '2':

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入编号●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pc->book))

{

getchar();

pc=chenwensousou32(headborrower,pc->book);

}

else

{

getchar();

pc=NULL;

}

break;

case '3':

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入位置●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pc->sum))

{

getchar();

pc=chenwensousou33(headborrower,pc->sum);

}

else

{

getchar();

pc=NULL;

}

break;

case '4':

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

system(“cls”);

tishi1();

printf(“ ┃

输入时间●●●●●●

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃********请注意:(时间格式 年月日 比如1992年08月13日 为 920813)********┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&pc->times))

{

getchar();

pc=chenwensousou34(headborrower,pc->times);

}

else

{

getchar();

pc=NULL;

}

break;

}

if(choice1=='0')

{

break;

}

if(pc==NULL)

{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓对不起,没有找到你想删除的信息▓▓▓▓▓▓▓▓▓▓▓┃n”);

}

else

{

if(headborrower==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ 〓〓〓〓〓〓〓〓〓〓〓〓〓链表为空,请先创建链表〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

break;

}

if(choice1=='2'||choice1=='3'){

system(“cls”);

pb=chenwensousou21(headstudent,pc->stu);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃◆◆◆◆◆◆◆◆◆◆◆◆你要删除的信息是这些嘛?◆◆◆◆◆◆◆◆◆◆◆◆┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

姓名:”);

printf(“

%20s

┃n”,pb->name);

printf(“ ┣━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━┫n”);

printf(“ ┃

学号

书编

时间

位置

┃n”);

printf(“ ┣━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━╋━━━━━━━┫n”);

printf(“ ┃ %16d ┃ %16d ┃ %14d ┃%13d ┃n”,pc->stu,pc->book,pc->times,pc->sum);

printf(“ ┣━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━┻━━━━━━━┫n”);

pa=chenwensousou11(headbook,pc->book);

printf(“ ┃

%20s

┃n”,pa->name);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(0)不删除,返回上级

★(1)删除

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice2)&&choice2=='0'){

getchar();

system(“cls”);

break;

}

if(choice2!='1'){

getchar();

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓你的输入有误,此信息未删除〓〓〓〓〓〓〓〓〓〓〓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

system(“pause”);

system(“cls”);

break;

}

getchar();

book=chenwensousou11(chenwenxie1(),pc->book);

book->cun++;

headborrower=deleteborrower2(headborrower,pc->stu);

if(headborrower!=NULL)

chenwendu3(headborrower);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓恭喜你,删除成功〓〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

else{

pc=pc->next;

while(pc!=NULL){

headbook=chenwenxie1();

book=chenwensousou11(headbook,pc->book);

book->cun++;

system(“cls”);

pb=chenwensousou21(headstudent,pc->stu);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃◆◆◆◆◆◆◆◆◆◆◆◆你要删除的信息是这些嘛?◆◆◆◆◆◆◆◆◆◆◆◆┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

姓名:”);

printf(“

%20s

┃n”,pb->name);

printf(“ ┣━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━┫n”);

printf(“ ┃

学号

书编

时间

位置

┃n”);

printf(“ ┣━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━╋━━━━━━━┫n”);

printf(“ ┃ %16d ┃ %16d ┃ %14d ┃%13d ┃n”,pc->stu,pc->book,pc->times,pc->sum);

printf(“ ┣━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━┻━━━━━━━┫n”);

pa=chenwensousou11(headbook,pc->book);

printf(“ ┃

%20s

┃n”,pa->name);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(0)不删除,返回上级

★(1)删除

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%c”,&choice2)&&choice2=='0'){

getchar();

system(“cls”);

pc=pc->next;

continue;

}

if(choice2!='1'){

getchar();

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓你的输入有误,此信息未删除〓〓〓〓〓〓〓〓〓〓〓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

pc=pc->next;

system(“pause”);

system(“cls”);

continue;

}

getchar();

headborrower=deleteborrower2(headborrower,pc->stu);

if(headborrower!=NULL)

chenwendu3(headborrower);

if(headbook!=NULL)

chenwendu1(headbook);

pc=pc->next;

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓恭喜你,删除成功〓〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

}

}

}

}

else

{

tishi2();

while(choice1!='n')

scanf(“%c”,&choice1);

}

}

}

break;

}

}

if(choice2=='0')

{

break;

}

}

else

{

tishi2();

while(choice2!='n')

scanf(“%c”,&choice2);

}

}

break;

}

case '4':

bianli(headbook,headstudent,headborrower);

break;

case '5':

paixu(headbook,headstudent,headborrower);

break;

case '6':

sousuo(headbook,headstudent,headborrower);

break;

case '7':

system(“cls”);

while(1){

tishi1();

printf(“ ┃

请输入新密码●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

scanf(“%s”,ppp);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

请再次输入密码●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

scanf(“%s”,p);

if(strcmp(ppp,p)==0){

mimadu(p);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓密码修改成功〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

getchar();

break;

}

else{

system(“cls”);

tishi1();

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓两次密码不同,修改失败▓▓▓▓▓▓▓▓▓▓▓▓ ┃n”);

getchar();

while(1){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

★(0)返回上级

★(1)继续修改

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

if(scanf(“%c”,&choice2)&&choice2>='0'&&choice2<='1'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice2){

case '0':

system(“cls”);

break;

case '1':

system(“cls”);

break;

}

}

else{

tishi2();

while(choice2!='n'){

scanf(“%c”,&choice2);

}

}

if(choice2=='0'||choice2=='1'){

break;

}

}

if(choice2=='0'){

break;

}

}

}

break;

case '8':

system(“cls”);

while(1)

{

tishi1();

printf(“ ┃

★(0).返回上级

★(1).保存图书信息

★(2).保存学生信息

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(3).保存借阅信息

★(4).保存所有信息

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

if(scanf(“%c”,&choice1)&&choice1>='0'&&choice1<='4'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice1){

case '0':

system(“cls”);

break;

case '1':

system(“cls”);

if(headbook==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓图书链表为空,请先创建图书链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

break;

}

chenwendu1(headbook);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存图书链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

system(“pause”);

system(“cls”);

break;

case '2':

system(“cls”);

if(headstudent==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓学生链表为空,请先创建学生链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

break;

}

chenwendu2(headstudent);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存学生链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

system(“pause”);

system(“cls”);

break;

case '3':

system(“cls”);

if(headborrower==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓借阅链表为空,请先创建借阅链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

break;

}

chenwendu3(headborrower);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存借阅链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

system(“pause”);

system(“cls”);

break;

case '4':

system(“cls”);

if(headbook==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓图书链表为空,请先创建图书链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

else{

chenwendu1(headbook);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存图书链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

if(headstudent==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓学生链表为空,请先创建学生链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

else{

chenwendu2(headstudent);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存学生链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

if(headborrower==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓借阅链表为空,请先创建借阅链表〓〓〓〓〓〓〓〓〓〓〓 ┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

else{

chenwendu3(headborrower);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓保存借阅链表完成▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

}

system(“pause”);

system(“cls”);

break;

}

}

else{

tishi2();

while(choice1!='n'){

scanf(“%c”,&choice1);

}

}

if(choice1=='0')

break;

}

break;

case '9':

system(“cls”);

qingkong();

break;

}

}

else{

tishi2();

while(choice!='n'){

scanf(“%c”,&choice);

}

}

if(choice=='0'){

break;

}

}

}

else{

tishi2();

j--;

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃ ▓▓▓▓▓▓▓▓▓▓▓▓★你还有%3d次机会★▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃”,j);

printf(“

┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入密码●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

while(choice!='n'){

scanf(“%c”,&choice);

}

if(j==0){

system(“cls”);

getchar();

return;

}

}

if(choice=='0'){

break;

}

} } void youke(){ int n=0,l=0,xue=1;char choice,ppp[40],ch,pp[40],p[40],choice2,cw;Books *headbook=chenwenxie1(),*pa=NULL;Stus *headstudent=chenwenxie2(),*pb=NULL,*p1;Borr *headborrower=chenwenxie3(),*pc=NULL,*yu;Borr *headyuyue=yuyuexie();system(“cls”);if(chenwenxie2()==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓对不起,学生现在不能登录▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

return;} while(xue!=0){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

★★(0).返回上级★★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入学号●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if(scanf(“%d”,&xue)){

getchar();

if(xue==0){

system(“cls”);

return;

}

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

★ ★ ★请输入登录密码(初始密码为身份证号码)

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

scanf(“%s”,ppp);

getchar();

p1=chenwensousou21(chenwenxie2(),xue);

if(p1==NULL){

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,该学号不存在▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

continue;

}

if(p1->numbers==xue&&strcmp(ppp,p1->mark)==0){

break;

}

else{

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓★★密码错误★★▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

continue;

}

}

else{

system(“cls”);

system(“cls”);

scanf(“%c”,&ch);

while(ch!='n'){

scanf(“%c”,&ch);

}

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓★★对不起,学号不能为字符,请输入数字★★▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

} } system(“cls”);

while(n==0){

tishi1();

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃████████████████欢迎学生进入██████████████┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(0)返回上级

★(1)遍历

★(2)搜索

★(3)排序

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★(4)借书预约

★(5)修改密码

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

l++;

if(scanf(“%c”,&choice)&&choice>='0'&&choice<='5'){

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice)

{

case '0':

system(“cls”);

break;

case '1':

bianli(headbook,chenwenxie22(),headborrower);

break;

case '2':

sousuo(headbook,headstudent,headborrower);

break;

case '3':

paixu(headbook,headstudent,headborrower);

break;

case '4':

if(headyuyue==NULL){

yu=(Borr *)malloc(sizeof(Borr));

headyuyue=yu,yu->sum=0,yu->front=NULL,yu->next=NULL;

}

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃*****************************您享有的操作*******************************┃n”);

printf(“ ┃************************************************************************┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃█████████████请输入你要预约的信息█████████████┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★★1.书编★★

★★2.时间★★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃***********请注意:(时间格式 年月日 比如1992年08月13日为920813)**********┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

if((yu=(Borr *)malloc(sizeof(Borr)))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

}

yu=(Borr *)malloc(sizeof(Borr));

yu->stu=xue,yu->sum=headyuyue->sum+1;

while(scanf(“%d”,&yu->book)&&scanf(“%d”,&yu->times)){

if(chenwensousou11(chenwenxie1(),yu->book)==NULL){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓对不起,该书编不存在▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

free(pc);

system(“pause”);

system(“cls”);

break;

}

getchar();

headyuyue=insertborrower(headyuyue,yu);

yuyuedu(headyuyue);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓恭喜你,预约成功▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃n”);

l=1;

break;

}

if(l==0){

tishi2();

getchar();

}

l=0;

break;

case '5':

system(“cls”);

while(1){

tishi1();

printf(“ ┃

请输入新密码●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

scanf(“%s”,pp);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

请再次输入密码●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

scanf(“%s”,p);

if(strcmp(pp,p)==0){

pb=chenwensousou21(headstudent,xue);

strcpy(pb->mark,p);

chenwendu2(headstudent);

system(“cls”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓密码修改成功〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓┃n”);

getchar();

break;

}

else{

system(“cls”);

tishi1();

printf(“ ┃▓▓▓▓▓▓▓▓▓▓▓▓▓两次密码不同,修改失败▓▓▓▓▓▓▓▓▓▓▓▓ ┃n”);

getchar();

while(1){

printf(“ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓n”);

printf(“ ┃

★(0)返回上级

★(1)继续修改

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

请输入选择●●●●●●

┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛nn”);

if(scanf(“%c”,&choice2)&&choice2>='0'&&choice2<='1'){

}

break;

}

}

else{

scanf(“%c”,&cw);

if(cw!='n'){

tishi2();

while(cw!='n'){

scanf(“%c”,&cw);

}

continue;

}

switch(choice2){

case '0':

system(“cls”);

break;

case '1':

system(“cls”);

break;

}

}

else{

tishi2();

while(choice2!='n'){

scanf(“%c”,&choice2);

}

}

if(choice2=='0'||choice2=='1'){

break;

} } if(choice2=='0'){

break;} }

tishi2();

while(choice!='n'){

scanf(“%c”,&choice);

}

}

if(choice=='0'){

break;

} } } Books* buildbookslist(){ Books *head=NULL,*p,*tail,*begin;int n=sizeof(Books),num;if((begin=(Books *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);} head=begin,begin->front=NULL,begin->sum=0;if((p=(Books *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);} begin->next=p,p->front=begin, p->next=NULL;head=begin;p->sum=1;while(1){

system(“cls”);

tishi1();

printf(“ ┃

★0.返回上级

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★1.编号

★2.书名

★3.作者

★4.类型

★5.出版社

★(6)库存

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

while(scanf(“%d”,&num)==0){

getchar();

system(“cls”);

tishi2();

tishi1();

printf(“ ┃

★0.返回上级

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★1.编号

★2.书名

★3.作者

★4.类型

★5.出版社

★(6)库存

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

}

if(num==0){

p->front->next=NULL,tail=p->front;

system(“cls”);

getchar();

free(p);

return head;

}

if(yanzheng(head,num)){

if(scanf(“%s%s%s%s%d”,p->name,p->author,p->type,p->publisher,&p->cun)){

p->numbers=num;

begin->sum++;

getchar();

tail=p;

if((p=(Books *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(0);

}

tail->next=p,p->front=tail,p->next=NULL,p->sum=p->front->sum+1;

}

else{

tishi2();

getchar();

}

} } getchar();return head;} Stus* buildstudentlist(){ Stus *head,*tail,*p,*begin;int num;int n=sizeof(Stus);if((begin=(Stus *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);} head=begin;

if((p=(Stus *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);} begin->sum=0,begin->front=NULL;begin->next=p,tail=p,p->next=NULL,p->front=begin;head=begin;

p->sum=1;while(1){

system(“cls”);

tishi1();

printf(“ ┃

★0.返回上级★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★1.学号★

★2.姓名★

★3.学院★

★4.身份证 ★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

while(scanf(“%d”,&num)==0){

getchar();

system(“cls”);

tishi2();

tishi1();

printf(“ ┃

★0.返回上级★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃

★★1.学号★★

★★2.姓名★★

★★3.学院★★

┃n”);

printf(“ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫n”);

printf(“ ┃▲▼●◆■★▼▲★■◆请依次输入(用空格隔开)▍▌▋▊▉█▇▆▅▄▃▂▁┃n”);

printf(“ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛n”);

}

if(num==0){

p->front->next=NULL,tail=p->front;

free(p);

getchar();

system(“cls”);

return head;

}

if(yanzheng1(head,num)){

if(scanf(“%s%s%s”,p->name,p->xueyuan,p->mark)){

p->numbers=num;

begin->sum++;

getchar();

tail=p;

if((p=(Stus *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

}

tail->next=p,p->front=tail,tail=p,p->next=NULL,p->sum=p->front->sum+1;

}

else{

tishi2();

getchar();

}

} } getchar();return head;} Borr* buildborrowerlist(){ Borr *head,*tail,*p,*begin;Stus *stu;Books *book;int n=sizeof(Borr),num;if((begin=(Borr *)malloc(n))==NULL){

printf(“Not able to allocate memory.n”);

exit(1);

第五篇:图书管理系统

经过大学四年理论课程的学习,以及校内校外的实践,极大的丰富了自身的理论基础,并且也具备了一些处理简单问题的能力,但即将踏上社会的我深知这还远远不够,因此我利用了毕业设计的机会,在老师的指导下去完成一个具有挑战性的,其具体应用及社会服务相结合的项目,深知通过对它的开发,将对我的能力有更高层次的突破。

开发软件的一个目的是针对目前普遍的图书管理系统存在的功能不全,操作复杂,系统要求高等一系列问题,而设想一个具有个性化的图书管理系统。该管理系统与MIS系统相联系,在图书馆内部建成可靠,方便,并且功能齐全的MIS系统。从而在图书馆对新旧书的反应;对书籍借阅的管理能力;对读者和图书馆工作人员的管理能力;对图书馆管理人员软件操作的适应时间和操作感觉这些方面都将大大的提高。当然对该软件的态度是渴望获得显著的社会效益。

开发软件的另一个目的是使其具有强大的实用价值,即它可以满足中小型图书馆的借阅与管理的需要。在一般的学校与科研机构,其下属的很多分支的研究中心,试验中心,各个学院,它们往往都有着自己的规模较大的图书资料室。而这些图书资料室由于本身规模不大因此其对书籍或资料的管理模式一般都比较旧,而且在没有能力也没有必要引进大型的图书馆管理软硬件的基础上,寻求一个针对中小型图书资料室的管理软件是必要的。

这种管理软件对硬件的要求很低,一般有一个比较简单的服务器与PC机组成的网络即可,再加上使用比较廉价、性能不错的软件,这样就可以以较低的成本来实现一个足够使用的功能,而这种模式也正满足了那种中小型资料室,图书馆的要求。但是目前对这种管理软件的开发还处于一种比较原始的阶段。开发者往往都是出于资金和时间的顾虑使用比较陈旧的技术,并且各为己见,并且很少涉及网络。可是当今是一个网络化的社会,像资料室,图书馆这样的信息机构不能与网络联系起来岂不可惜,再加上如今单机版的图书管理软件多如牛毛,去开发一个类似的软件无疑是一种在时间上、精神上和资源上的极大浪费。所以出于多方面的考虑觉得有必要为这种有需要的中小型图书馆,资料室开发一种基于网络的图书资料管理软件。

项目的具体目的:

1.实现图书馆对外借书,还书的简易操作,提高图书馆对最平凡工作的效率。

2.实现图书馆对所藏图书的按类别,书名等多方面的查询,最大的方便读者和图书馆工作人员对所需图书的查询。

3.建立图书馆外借读者数据库,方便工作人员对读者进行有效管理。

4.建立图书馆工作人员数据库,限定每个工作人员对软件操作的权限,最大限度的保护数据库。

5.实现图书馆对新书入库,旧书注销的简单处理,并且建立书籍档案,方便进货。

实现方法:

后台数据库支持:采用PowerBuild 8.0,主要是由于PowerBuild 8.0是美国Sybase公司PowerSoft的新一代数据库应用开发工具,它能够设计传统的高性能、基于客户/服务器体系结构的应用系统,也能够用于开发基于Internet的应用系统。它具有容易使用,便于维护的优点,使使用部门可以节省培训费用,加快磨合周期,同时有利于操作人员的培训,是对数据的安全性要求不是特别高,同时又有比较大的数据量的单位的较好选择。作为PowerBuild 7.0的后续版本,PowerBuild 8.0 扩展了 PowerBuild 7.0 版的性能、可靠性、质量和易用性。PowerBuild 8.0增加了几种新的功能,由此成为数据仓库和电子商务应用程序的优秀数据库平台。

数据的安全性:

由于该系统统计管理单位的各种书目,人员数据及出入库数据,因此需要保证数据的可靠性和安全性。对于软件方面,采用手动或定时对数据库采取备份,使由于数据破坏所产生的损失降到最低,同时便于恢复。总体功能结构:

根据图书馆的基本要求和功能目标,总体框架是建立二个功能系统和二个支持系统。二个功能系统是:1.图书馆管理系统(下称1号系统);2.外部读者查询系统(下称2号系统)。二个支持系统是:1.网络支持系统(WAN和LAN);2.数据库支持系统。

需求分析:

A:图书馆管理系统即1号系统是该系统软件的重要内容之一,该子系统为图书馆的库存书籍的动态调整提供了决策依据,有利于及时对有大量需求的新书进行订货入库。它的主要功能包括:新书入库,旧书注销,借书,还书,馆内图书详细信息,图书查询,读者管理,馆内图书统计,读者信息管理,图书馆工作人员权限管理,名称设计,数据库备份等功能。

下面是2号系统的主要功能的简单描述:

1.图书管理(图—3系统流图):

这是图书馆最重要的模块之一,它将对图书馆中的书籍进行管理操作,所有的原始数据输入都是在这里实现的,有了这里的数据输入,才能开始以后的诸如借书、还书等操作。

。新书入库管理:

该功能允许用户输入图书单,在输入过程中,程序自动生成图书单编号以加以区分两次不同的入库书单,同时程序也检查输入的合法性,并自动记录当日入库的图书。

。当日入库图书查询

该功能允许用户对当日的入库书单针对不同条件进行查询,并且提供二次修改,避免出错。

。旧书注销:

该功能允许用户输入注销单,在输入过程中,程序自动生成注销单编号以加以区分两次不同的注销书单,并且自动记录当日注销的图书。

。当日注销图书查询:

该功能允许用户对当日的注销单针对不同条件进行查询,并且提供还原,避免出错。

2.业务管理:

这是图书馆使用频率最高的模块,因此他在功能上应该直观明确,在操作上应该简单易用。

。图书借阅:

该功能要求用户输入图书编号或者图书条码,并且检查输入合法性,然后程序动态生成该书的详细信息;再输入借书证号,并且检查输入合法性,然后程序动态生成该读者的详细信息;系统记录借书的经手人,最后由借书按钮实现操作。

。图书归还:

与图书借阅类似,追加图书超期罚款功能,自动根据预设值计算出罚款金额。

3.人员档案管理:

这是针对读者和图书馆工作人员而设计的一个人士管理模块,它将完整的记录读者的信息,以及图书馆工作人员的信息,并且他还具有限制图书馆工作人员操作权限的功能,最大限度的保证了数据的安全。读者管理:

记录读者的详细信息,并提供增加、撤除、查询等操作。

。图书馆工作人员管理:

在读者管理子模块的基础上增加权限管理功能,保证数据安全。

4.数据库备份:

这是一个涉及到安全问题的重要模块,它可以保证数据库的安全,防止因外界的突发事件所造成的损失,避免因数据流失而重复输入的困扰。该功能分为自动备份,和手动立即备份两部分,满足用户需要。

5.名称设计:

这是一个很具个性化的功能,实现很简单,但非常吸引人,你可以任意为你的管理系统命名,比如“杭州X中学图书管理系统”。

B:

外部读者查询系统,即2号系统,这是一个面向读者的综合查询系统,采用与管理系统相同的数据库,具有唯一的功能:查询。他可以按照读者的要求,用不同方法对所藏书籍进行查询,并能进行书名的模糊查询,还可以查询读者所借书的到期日,和观看读者本人的详细资料,力争最大的满足读者的需求。性能要求:

对新书入库单,注销单的处理及查询;图书查询;借书还书速度应较快

登录仓库管理系统时应输入密码,以保证系统的安全性。

系统要有较强的兼容性,能在各种PC机上正常运行。在系统运行异常及数据文件损坏时能给出出错提示,保证系统的可靠性。

运行环境:

1.推荐配置:

cpu:Intel Pentium 以上

内存:64M

硬盘:100M空闲空间

2.支持软件:

操作系统:Windows98 , Windows2000 , WindowsMe.本人开发进度计划:

2月-3月底:学习PowerBuilder8.0,SQL Sever2000技术,看文档和有关书籍。

4月-5月初:进行开发工具的选择与配置,准备开发环境,具体代码的编写。

智能图书管理系统
TOP