简易的图书管理系统(末尾链接报告自取)

图书信息管理系统设计

一、问题描述

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

二、功能描述

试设计一图书信息管理系统,使之能提供以下功能:

1、系统以菜单方式工作

2、图书信息录入功能(图书信息用文件保存),可不定时地增加图书信息,书号不允许重复;

3、图书信息浏览功能

4、图书信息查询功能

查询方式

(1)按书名查询

(2)按作者名查询

5、图书信息的删除

输入书号,查询该图书,如果存在,则删除该图书信息。

6、图书信息的修改

输入书号,查询该图书,如果存在,则修改该图书信息(不允许修改登录号)。

三.、总体设计

3.1系统总模块设计

根据任务要求,系统总体模块设计如图1所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WzhkA1Mz-1625661789408)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K0VwnBkr-1625661789410)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)]

3.2 各功能模块说明

根据上述的分析,将系统按功能分为以下模块

头文件模块head.h:定义相关结构,定义常量及全局变量,声明所有模块的函数。

主程序模块main.cpp:调用各模块中的函数实现对通讯录的管理。

菜单模块menu.cpp:显示主菜单,子菜单,使菜单界面独立于其他程序代码。

menu();//菜单

checkPass();//载入界面

browse();//浏览图书

write();//录入图书

cha();//查询包括删除(调用函数的函数)

Exit();//退出提示

save();//测试写入图书基本信息

bookshu();//改造成了修改图书信息就不改函数名称了

browsetext();//测试读出写入有基本书(fread读)

initialization();//对结构体初始化

xiangxi();//详细查找

del();//删除

四、详细设计

初始化流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crGRArIG-1625661789412)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif)]

数据保存流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4UFUpMVm-1625661789422)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif)]

4.2数据结构设计

加入了节点方便判断文件,保存数据,以及下一次初始化后能够把删除的书空位删除

struct B{

char id[10];//书籍的编号

char book_name[100];//书名

char name[100];//作者

char xd[10];//分类

char day[100];//出版日

char work[100];//出版单位

double prize;//价格

​ struct B *next;//节点

};

4.3控制结构设计

**1.**主程序模块main.cpp

main模块有主函数main。

主函数 main流程图如图3所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KMAG2gyu-1625661789423)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif)]

**2.**数据输入模块write.cpp

write.cpp包含1个函数:write ()

write函数功能:创建数据。将从键盘输入的数据保存在内存。

算法描述:如图4所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jcp5jLQO-1625661789424)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif)]
录入信息

**3.**信息排序模块browsetext.cpp

browsetext.

函数功能:测试读出写入有基本书(fread读)。

4. 信息显示模块xiangxi.cpp

xiangxi.cpp包含1个函数: Sleep()。

xiangxi.功能:详细查找。

算法描述:如图5所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ET5JQvPA-1625661789425)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif)]

图5 浏览信息流程

5. 查询模块query.cpp

查询模块包含两个函数Sleep()、bookshu()。

(1)bookshu()

功能:显示查找选项菜单,供用户输入查找方式,并根据返回的信息处理显示结果。

算法描述:如图6所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMTK2yXP-1625661789425)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif)]

图6查找方式选择流程

(2)bookshu函数流程

功能:在数组中按图书号查找信息(整数比较)。如果找到输出相应信息;如果没有找到给出“没找到!”的提示信息。

函数返回一个可继续进入查找菜单的值。

算法描述:如图8所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwvBjRKN-1625661789426)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif)]

图8 按书号查询信息流程

6.修改模块bookshu.cpp

修改模块bookshu.cpp包含一个函数xiangxi().

函数功能:在数组中按书号查找信息,如果找到则显示输出相应,然后输入修改信息;如果没有找到给出没找到的提示信息。

算法描述:如图9所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4F885r3Y-1625661789427)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif)]

图9 按书号查询修改信息流程

  1. 删除模块del.cpp

删除模块包含一个函数 del

函数功能:找到是在哪个数组里面,如果找到则是否删除该信息;如果没有找到给出没找到的提示信息。

算法描述:如图10所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ot1LcEtm-1625661789427)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif)]

图10 按书号查询修改信息流程

6.文件模块file.cpp

file.cpp包含两个函数:write()和save()。

\1. 读文件信息函数write()

功能:从文件中读取信息建立数组。

算法描述:如图11所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sISh9SKs-1625661789428)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif)]

图 11 将信息从文件读入到内存

\2. 保存数据到文件函数save()

功能:将信息写入文件。

算法描述:如图12所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRVWkxOR-1625661789429)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkKSfTte-1625661789429)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif)]
图 12 将内存信息写入文件

**
**

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYs6QR2v-1625661789430)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif)]

五、代码实现

head.h头文件预设

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#define N 100//初始

extern void menu();//菜单
extern void checkPass();//载入界面
extern void browse();//浏览图书
extern void write();//录入图书
extern void cha();//查询包括删除(调用函数的函数)
extern void Exit();//退出提示
extern void save();//测试写入图书基本信息
extern void bookshu();//改造成了修改图书信息就不改函数名称了
extern void browsetext();//测试读出写入有基本书(fread读)
extern void initialization();//对结构体初始化
extern int xiangxi();//详细查找
extern void del();//删除

struct B{
char id[10];//书籍的编号
char book_name[100];//书名
char name[100];//作者
char xd[10];//分类
char day[100];//出版日
char work[100];//出版单位
double prize;//价格
struct B *next;//节点
};
extern int n;//单独用块读来初始化n
extern struct B Book[N];

meun()主菜单系统

#include<stdio.h>
void menu(){//图书查询界面
printf(“--------------------------菜单--------------------------\n\n”);
printf(" 输入对应的数字跳跃到相关操作\n");
printf(" 1.图书浏览大全\n");
printf(" 2.录入图书\n");
printf(" 3.图书查询\n");
printf(" 4.退出\n");
printf(“\n--------------------------菜单--------------------------\n”);
}

checkPass()载入系统进行初始化

 
#include"heard.h"
void checkPass()//加载界面
{
    printf( "\n                        @@@@@@@@昆明学院图书馆@@@@@@@@\n" );
    printf( "\n                          **Yun_nan KMXY Library**\n\n" );
    printf( "\n\n\t\t          正在进行ID认证,请稍等" );
    initialization();//初始化数组
    printf( "." );
    Sleep( 400 );
    printf( "." );
    Sleep( 400 );
    printf( "." );
    Sleep( 400 );
    printf( "." );
    initialization();
    printf( "\n\n\t\t                   登" );
    Sleep( 400 );
    printf( "录" );
    Sleep( 400 );
    printf( "成" );
    Sleep( 400 );
    printf( "功\n" );
    Sleep(1600);

}

Browse()浏览图书系统

 
#include"heard.h"//用文件来搞
void browse(){//浏览
    struct B *p,*q;
    p=&Book[0];
    q=p->next;
    printf("-----------------------浏览-----------------------------\n");
    while(q!=NULL){

        printf("%-s.%-30s\t%10s\n",p->id,p->book_name,p->name);
        p=q;
        q=p->next;
    }
    printf("-----------------------浏览-----------------------------\n");
    system("pause");
}

Cha()查询系统

#include"heard.h"
void cha(){
system(“cls”);
int i;
while(1){
system(“cls”);
printf(“\n-----------------------查询系统-----------------------------\n”);
printf(" 1.书号详细内容\n");
printf(" 2.修改图书\n");
printf(" 3.删除图书\n");
printf(" 4.返回上一级\n");
printf(“-----------------------查询系统-----------------------------\n”);
printf(“请输入所需服务:\n”);
scanf(“%d”,&i);
switch(i){
case 1:xiangxi();
continue;
case 2:system(“cls”);
bookshu();//修改
break;
case 3:del();//删除
break;
case 4:break;

 }
 if(i==4)break;

}

}

Del()删除系统

#include"heard.h"
void del(){
int i,j;
i=xiangxi();//找到是在哪个数组里面
if(i==-1)return;
printf(“是否删除:\n1.是 2.否\n”);
scanf(“%d”,&j);
if(j1&&i!=N){//不是删除第一个
Book[i-1].next=&Book[i+1];
n–;
save();
initialization();
}
else if(j
1&&iN){
Book[i-1].next=NULL;
n–;
save();
}
if(j
2)save();
}

Main()主函数包含测试代码

#include “heard.h”
struct B Book[N];
int n=0;
int main(){
checkPass();//载入
system(“CLS”);//清屏
int a;//输入菜单的
while (1) {
while (1) {
system(“CLS”);
printf(“现在拥有的图书数量:%d\n”,n);//查看几本书
menu();
scanf(“%d”, &a);
if (a > 4 || a < 1) {//完整版后需要改这里
printf(“\n请输入的数字对应的!\n”);
system(“pause”);
} else break;
}
switch (a) {
case 1:
browse();//浏览
break;
case 2:write();//录入
break;
case 3:cha();//查询与删除
break;
case 4:Exit();//退出
//以下功能用于调试
/case 5:save();//测试写入端口
break;
case 6:bookshu();//测试书籍返回值是否则正确
break;
case 7:browsetext();//测试读入有几本书
break;
/
default: break;
}
if(a==4)break;
}
return 0;
}

Initialization()数据的初始化操作

#include"heard.h"
void initialization(){//初始化结构体数组
FILE*a;
int i=0;
struct B p;
a=fopen(“book.txt”,“rb”);
p=(struct B
)malloc(sizeof(struct B));
while(fread(p,sizeof(struct B),1,a)==1&&feof(a)!=1){
Book[i]=*p;
Book[i].next=&Book[i+1];
i++;
}
Book[i].next=NULL;
n=i;
free§;
fclose(a);
}

Save()实现事实写入书籍,删除书记后的记录保存

#include"heard.h"//存档
void save(){
FILE*fp;
struct B *p,*q;
p=&Book[0];
q=p->next;
fp=fopen(“book.txt”,“wb”);
while(q!=NULL){
fwrite(p,sizeof(struct B),1,fp);
p=q;
q=p->next;
}
printf(“保存成功\n”);
fclose(fp);
system(“pause”);
}

Write()实现录入图书系统

#include"heard.h"
void write(){
int i=1;
while(1){
switch(i){//用库函数来解决判断输入的是否符合类型
case 1:printf(“请输入图书ID(数字):\n”);
scanf(“%s”,&Book[n].id);
i++;
break;
case 2:printf(“请输入图书名字:\n”);
scanf(“%s”,&Book[n].book_name);i++;
break;
case 3:printf(“请输入图书作者:\n”);
scanf(“%s”,&Book[n].name);i++;
break;
case 4:
printf(“分类介绍\n”);
printf(" A类:理工科类书\n");
printf(" B类:文科类书\n");
printf(" C类:生活用书\n");
printf(" D类:儿童图书\n");
printf(“分类介绍\n”);
printf(“请输入所属分类:\n”);
scanf(“%s”,&Book[n].xd);i++;
break;
case 5:printf(“请输入图书出版日(格式2020.01.01):\n”);
scanf(“%s”,&Book[n].day);i++;
break;
case 6:printf(“请输入图书出版单位:\n”);
scanf(“%s”,&Book[n].work);i++;
break;
case 7:printf(“请输入图书价格:\n”);
scanf(“%lf”,&Book[n].prize);i++;
Book[n].next=&Book[n+1];
Book[n+1].next=NULL;
break;
}
if(i==8){
save();
n++;
break;
}
}

}

Xiangxi()实现筛选查询条件返回数值来判断是否存在书籍

#include"heard.h"
int xiangxi(){
int j;
char a[10];
struct B *p;
p=&Book[0];
printf(“\n输入所需查询书籍的书号:\n”);
scanf(“%s”,a);
//gets(a);getchar();
for(j=0;(p->next)!=NULL;j++){
if(strcmp(p->id,a)0){
system(“cls”);
printf(“_\n\n");
printf(“%s,%s\n”,Book[j].id,Book[j].book_name);
printf(“作者:%s\n”,Book[j].name);
printf(“分类:%s\n”,Book[j].xd);
printf(“出版日期:%s\n”,Book[j].day);
printf(“出版单位:%s\n”,Book[j].work);
printf(“价格:%.2lf\n”,Book[j].prize);
printf("\n
\n”);
system(“pause”);
return j;
}
p=p->next;
}
if(j
N||p->next==NULL){
printf(“查无此书 自动返回上一级”);
Sleep(800);
return -1;
}

}

Exit()实现退出系统

void Exit(){
printf(“感谢使用”);
Sleep(800);
exit(0);
}

六、系统测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0MiWXkE-1625661789431)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7AdxjxHR-1625661789437)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg)]

载入测试成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BsXdo763-1625661789438)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg)]

图书浏览成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Obusb6He-1625661789439)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BX6mwq82-1625661789439)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image029.jpg)]

图书录入系统成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HFmdh4YM-1625661789441)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NBrHtAdM-1625661789441)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rz2IeMWn-1625661789442)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9D26oM0-1625661789443)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image037.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MDUboH2a-1625661789443)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image039.jpg)]

图书详细 查询系统实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PPKUx5qH-1625661789444)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image041.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h9bpKTFq-1625661789444)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image043.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZRDhFBj-1625661789445)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVNimeLq-1625661789446)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image047.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gYGElfCH-1625661789447)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image049.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HEPisjAy-1625661789449)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image051.jpg)]

图书修改系统实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lYZ3dZ1B-1625661789450)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image053.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uub7O2YC-1625661789452)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image055.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UhtySaO7-1625661789453)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image057.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aHwkubhV-1625661789454)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image059.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o6zppoCz-1625661789462)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image061.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ASAPxbrF-1625661789464)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image063.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TAm2bVYS-1625661789465)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image065.jpg)]

图书删除的实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1oInmxSh-1625661789466)(file:///C:/Users/hj/AppData/Local/Temp/msohtmlclip1/01/clip_image067.jpg)]

保存图书记录成功

链接:点我白嫖
提取码:6666
内置详细图解,欢迎兄弟们修改和提出宝贵的意见
此外,本人使用的是数组的结构而不是链表
当初写的时候才想起怕不是链表会简单,但是越想越气似乎没有数组储存文件保存与读取方便,其次头文件已经详细解释各个外函数的功能
如果你有什么好的意见和建议欢迎到评论区与我交流(大二匆忙会抽空回复)

现在补充一点,由于这边使用的vs2010版本,由于vs2010版本太难找了然后这个项目修改不了完善不了打开怕是有点难,然后思路大家可以通过doc的说明看对应的文档会给予你帮助,那么最后这一年是大四了祝各位多实践多学习,学无止境感谢各位

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾米莉亚小汉堡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值