python图书管理系统的论文_python小练习——图书管理系统(增加数据存储)

上一次我们做了一个小的图书馆里系统,用来学习python基础部分的:函数、模块、列表、字典、循环、判断

现在我们在上一次的基础上增加一个功能,将写入系统的书籍存放起来,这样才是一个真正意义上的系统,毕竟没有哪一家公司的系统是不会永久存放数据的。这里的功能也很简单,我们借此练习python处理excel的功能,python具体如何操作excel,可以参看之前的文章 python+excel=openpyxl(一)

还是一样,直接贴代码出来,具体细节已经在代码中使用注释标明

book_main.py:主程序,执行此程序来启动管理系统

"""

图书管理系统主程序:

用于实现启动图书馆里系统,提供欢迎信息以及操作提示信息

1、新增

2、显示所有

3、查询

0、退出

其他输入内容显示输入错误

"""

from library_manager.book_tools import *

while True:

# TODO 显示功能菜单

show_menu()

action = input('请选择希望执行的操作:')

print('您选择的操作是【%s】' % action)

if action in ['1', '2', '3']:

if action == '1':

# 新增

add_book()

elif action == '2':

# 显示全部

show_book()

else:

# 查询书籍

search_book()

elif action == '0':

print('欢迎再次使用图书管理系统,撒由那拉~~~')

break

else:

print('您输入的不正确,请重新选择')

book_tools.py:工具模块,实现系统的具体功能

import openpyxl

# 记录所有书籍信息

book_list = list()

# 创建一个excel的workbook对象,用来存放数据

wb = openpyxl.Workbook()

# 获取sheet表单

ws = wb.active

# 修改表单名称

ws.title = 'library_manager'

# 指定excel名称

excel_name = 'library.xlsx'

def show_menu():

"""显示菜单"""

print("*" * 20)

print('撒浪嘿呦~~~\n欢迎使用图书管理系统 ')

print("""1、新建书籍\n2、显示全部\n3、查询书籍\n\n0、退出系统""")

print("*" * 20)

return

def add_book():

"""新增书籍信息"""

print('=' * 20)

print('新增书籍')

# 1、提示用户输入名片的详细信息

name = input('请输入书籍名称:')

pub_date = input('请输入书籍出版日期:')

comment = input('请输入书籍简介:')

# 2、使用用户输入的信息建立一个书籍字典

book_dict = {"name": name,

"pub_date": pub_date,

"comment": comment

}

# 3、将书籍字典添加到列表中

book_list.append(book_dict)

# 4、确定列表中现有多少本书,需要根据书的数目来确定写入excel表格的行数

num = len(book_list)

print(book_list)

# 将book_dict字典的key写入excel表格作为表字段名

for col in range(1, len(book_dict) + 1):

ws.cell(row=1, column=col, value=list(book_dict.keys())[col - 1])

# 将数据写入到excel中,写入的是book_dict的value数据

for col in range(1, len(book_dict)+1):

ws.cell(row=num+1, column=col, value=list(book_dict.values())[col-1])

print(list(ws.values))

# 保存excel表格

wb.save(excel_name)

# 5、提示数据添加成功

print('添加 %s 成功' % name)

def show_book():

"""显示所有书籍"""

print('=' * 20)

print('显示书籍')

# 判断是否存在书籍

if len(book_list) > 0:

# 打印表头

for name in ['名称', '日期 ', '概述']:

print(name, end='\t\t')

print()

# 打印分割线

print('-' * 40)

for book in book_list:

for value in book.values():

# 获取字典中所有的值,遍历输出

print(value, end='\t\t\t')

print()

else:

print('暂无任何书籍信息,请先完成输入')

def search_book():

"""搜索书籍"""

print('=' * 20)

print('搜索书籍')

# 1、提示用户输入要搜索的姓名

book_name = input('请输入需要搜索的书籍名称:')

# 2、遍历名片列表,查询要搜索的姓名,如果没有找到,给出提示信息

# 先判断list中是否有数据,没有的话就直接打印

if len(book_list) > 0:

# 定义一个变量,确定查询的数目是在列表中的下标位置,用来确定数据所在的行数

row = 0

for book in book_list:

row += 1

if book_name == book['name']:

# 打印表头

for name in ['名称', '日期 ', '概述']:

print(name, end='\t\t')

print()

# 打印分割线

print('-' * 40)

for value in book.values():

# 获取字典中所有的值,遍历输出

print(value, end='\t\t\t')

print()

# TODO 针对找到的名片记录执行删除和修改的操作

application(book)

# 重新将新的书籍数据写入到excel表格中

for col in range(1, len(book.values())+1):

# row+1,是因为表格中的第一行是表头,所以我们需要将写入的数据行数整体下移一位才是正确的数据位置

ws.cell(row=row+1, column=col, value=list(book.values())[col-1])

# 保存excel表格

wb.save(excel_name)

break

else:

print('没有%s的相关信息' % book_name)

else:

print('没有%s的相关信息' % book_name)

def application(book_info):

"""处理查找到的书籍信息

:param book_info: 书籍的信息,数据类型为字典

"""

action = input('请输入对书籍的操作'

'1:修改\t2:删除\t0:返回上一级')

if action == '1':

book_info['name'] = input_book_info(book_info['name'], '修改姓名:')

book_info['pub_date'] = input_book_info(book_info['pub_date'], '修改出版日期:')

book_info['comment'] = input_book_info(book_info['comment'], '修改概述:')

elif action == '2':

book_list.remove(book_info)

print('已删除%s' % book_info['name'])

def input_book_info(book_value, tip_message):

"""完成数据修改内容

:param book_value: 书籍原有的信息,外部传入

:param tip_message: 输入时的提示信息

:return:

"""

# 1、提示用户输入内容

value = input(tip_message)

# 2、针对用户的输入进行判断,如果用户输入了内容,直接返回结果

if len(value) > 0:

return value

else:

return book_value

# 3、如果用户没有输入内容,返回字典中原有的值

具体效果:

数据完成插入,修改之后,会写入到一个excel文件中

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvaWFuZ2FvaW93ZQ==,size_16,color_FFFFFF,t_70

超全面的测试IT技术课程,0元立即加入学习!有需要的朋友戳:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值