Python项目实战练习:制作小型图书管理系统[Python基础]

python

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于IT丛林 ,作者: IT丛林

 

说明:此程序适合入门基本练习。

 

私信回复“资料”,即可免费领取Python实战案例讲解视频

Python GUI制作视频解析神器,全网视频免费看

https://www.bilibili.com/video/BV1tz4y1o7Yc/

目标

了解面向对象开发过程中类内部功能的分析方法。

了解常用系统功能

系统需求

使用面向对象编程思想完成图书管理系统的开发。具体如下:

系统要求:图书信息存储到文件中

系统功能,添加,删除,修改,保存,查询,显示所有图书信息,退出系统等功能。

程序文件分析设计

角色分析:图书,管理系统

注意事项:

一个角色一个程序文件

项目的主入口,可以定义为main.py

主要功能

基于面向对象:实现图书:

添加功能,

删除功能,

修改功能,

查询功能,

显示所有,

保存到文件中,

加载数据等功能。

程序文件

程序入口:main.py

图书文件:book.py

管理系统文件:systemmgr.py

1.1.4 程序代码

图书文件代码

图书文件:book.py

需求:图书包括:书名,类型,sn号等。

添加__str__魔法方法,方便查看图书对象信息

代码:

class Book(object):

    def __init__(self,name,type,sn):

        self.name=name

        self.type=type

        self.sn=sn

def __str__(self):

return f"{self.name},{self.type},{self.sn}"

管理文件程序代码

需求:

系统功能循环使用,根据用户输入的功能序号执行不同的功能

步骤:

加载数据

显示功能菜单

根据用户输入进行不同操作功能

定义系统功能函数:添加,删除,保存等

定义该管理系统的类:用于初始化,类中存储管理系统的代码。

定义一个一个list_page空图书列表,方便存储。

def __init__(self):
self.list_page=[]

添加一个静态方法用于显示功能菜单

@staticmethod

def show_menu():

print("请选择如下功能")

print("1,添加新书")

print("2,删除新书")

print("3,修改新书")

print("4,查询相关书")

print("5,显示所有书")

print("6,保存书信息")

print("7,加载书信息")

print("9,退出系统")

程序入口函数,启动程序执行的函数 run()

def run(self):

    while True:

        self.show_menu()

        int_num=int(input("请输入功能序号"))

        if int_num==1:#添加

            self.add_book()

        if int_num == 2:#删除

            self.del_book()

        elif int_num==3:#修改

            self.update_book()

        elif int_num==4:#查询

            self.search_book()

        elif int_num==5:#显示

            self.show_book()

        elif int_num==6:#保存

            self.save_book()

        elif int_num == 7:#加载

            self.load_book()

        elif int_num == 9:

            print("退出系统")

break

    else:

print("输入错误!")

程序入口文件程序代码

功能:导入系统管理模块,启动图书管理系统。

main.py

from xm19code.systemgr import Systemmgr

if __name__=="__main__":

rr = Systemmgr()

rr.run()

程序代码清单:

 

具体代码如下图:

class Book(object):

def __init__(self,name,type,sn):

self.name=name

self.type=type

self.sn=sn

def __str__(self):

return f"{self.name},{self.type},{self.sn}"

from xm19code.systemgr import Systemmgr

if __name__=="__main__":

rr = Systemmgr()

rr.run()

#from book  import *

from xm19code.book import *

class Systemmgr(object):

def __init__(self):

self.list_page=[]

#循环

@staticmethod

def show_menu():

print("请选择如下功能")

print("1,添加新书")

print("2,删除新书")

print("3,修改新书")

print("4,查询相关书")

print("5,显示所有书")

print("6,保存书信息")

print("7,加载书信息")

print("9,退出系统")

def run(self):

while True:

self.show_menu()

int_num=int(input("请输入功能序号"))

if int_num==1:#添加

self.add_book()

if int_num == 2:#删除

self.del_book()

elif int_num==3:#修改

self.update_book()

elif int_num==4:#查询

self.search_book()

elif int_num==5:#显示

self.show_book()

elif int_num==6:#保存

self.save_book()

elif int_num == 7:#加载

self.load_book()

elif int_num == 9:

print("退出系统")

break

else:

print("输入错误!")

def add_book(self):

#根据用户输入的字段添加

name=input("请输入书的名称")

type=input("请输入书的分类")

sn = input("请输入书的sn")

book=Book(name,type,sn)

self.list_page.append(book)

print(self.list_page)

print(book)

def update_book(self):

names = input("请输入要修改的图书:")

for i in self.list_page:

if i.name==names:

i.name=input("请输入要修改的图书名称:")

i.type = input("请输入要修改的图书类型:")

i.sn = input("请输入要修改的图书SN:")

print(f"修改了图书信息成功:图书{i.name} ,类型{i.type},sn为:{i.sn}")

break

else:

print("没有该图书!")

def del_book(self):

names=input("请输入要删除的图书:")

# for 循环查询

for i in self.list_page:

if i.name == names:

self.list_page.remove(i)

print("删除成功!")

break

else:

print("没有该图书")

def show_book(self):

print("图书名称 类型 SN")

for i in self.list_page:

print(f"{i.name} {i.type} {i.sn}")

def save_book(self):

# 打开文件

f = open("book.data", "w")

        # 文件写人 把list【图书对象】转换为字典

new_list = [i.__dict__ for i in self.list_page]

print(new_list)

f.write(str(new_list))

# 文件关闭

f.close();

def search_book(self):

names=input("请输入要查询的图书名称:")

#for 循环查询

for i in self.list_page:

if i.name==names:

print(f"查询到的图书信息:图书{i.name} ,"

f"类型{i.type},sn为:{i.sn}")

break

else:

print("没有该图书")

def load_book(self):

try:

f=open("book.data","r")

except:

f=open("book.data","w")

else:

data=f.read()

#文件读取的数据都是字符串且字符串内部为字典数据

# 故需要转换数据类型在转换字典为对象存储到图书列表中

new_list=eval(data)

self.list_page=[Book(i["name"],i["type"],i["sn"]) for i in new_list]

print("图书 类型 SN")

for i in self.list_page:

print(f"{i.name} {i.type} {i.sn}")

finally:

#关闭文件

f.close()

程序代码运行结果:

C:PythonPython38python.exe D:/pythonProject/xm19code/main.py

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号7

图书 类型 SN

py py 1234

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号2

请输入要删除的图书:22

没有该图书

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号3

请输入要修改的图书:22

没有该图书!

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号1

请输入书的名称1

请输入书的分类1

请输入书的sn1

[<xm19code.book.Book object at 0x000000000277F7C0>, <xm19code.book.Book object at 0x00000000025159D0>]

1,1,1

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号6

[{"name": "py", "type": "py", "sn": "1234"}, {"name": "1", "type": "1", "sn": "1"}]

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号1

请输入书的名称2

请输入书的分类2

请输入书的sn2

[<xm19code.book.Book object at 0x000000000277F7C0>, <xm19code.book.Book object at 0x00000000025159D0>, <xm19code.book.Book object at 0x000000000277F7F0>]

2,2,2

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号4

请输入要查询的图书名称:1

查询到的图书信息:图书1 ,类型1,sn为:1

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号4

请输入要查询的图书名称:1

查询到的图书信息:图书1 ,类型1,sn为:1

请选择如下功能

1,添加新书

2,删除新书

3,修改新书

4,查询相关书

5,显示所有书

6,保存书信息

7,加载书信息

9,退出系统

请输入功能序号6

[{"name": "py", "type": "py", "sn": "1234"}, {"name": "1"

以上是 Python项目实战练习:制作小型图书管理系统[Python基础] 的全部内容, 来源链接: utcz.com/z/530615.html

回到顶部