图书管理系统
图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用Python语言制作程序来实现增加图书信息、修改图书信息、查询图书信息、删除图书信息、用户登陆、用户注册、图书借阅情况查询、导出图书信息等功能。程序中涉及到列表、字典、文件流的操作和面向对象的思想,包括图书对象定义、用户对象定义、文件的读写及列表存储图书对象。

class Book:
def __init__(self, name, author, status, index):
self.name = name
self.author = author
self.status = status
self.index = index
def __str__(self):
return f'{self.name},{self.author},{self.status},{self.index}'
class People:
def __init__(self, name, password):
self.name = name
self.password = password
def __str__(self):
return f'{self.name},{self.password},{self.mode}'
class PeopleManage:
def __init__(self):
self.people_list = []
def menu(self):
print("请选择如下功能------------")
print("1:登陆")
print("2:注册")
number = int(input("输入序号:"))
if number == 1:
self.login()
elif number == 2:
self.register()
else:
print("输入错误,请重新输入!")
print("\n")
self.menu()
def login(self):
print('用户登陆')
name = input('账号:')
password = input('密码:')
if not self.people_list:
print("恭喜你成为本系统第一个用户")
print("\n")
self.register()
else:
for i in self.people_list:
if name == i.name and password == i.password:
print('登陆成功!')
print("\n")
book = BookManagers()
if i.name == '110':##默认管理员账号为110
print("欢迎管理员登陆!")
book.run(1)
else:
print("欢迎用户登陆!")
book.run(0)
elif name == i.name or password == i.password:
print("用户名或密码输入错误")
print("\n")
self.login()
else:
print('该用户未注册!')
print("\n")
self.register()
def register(self):
print('用户注册')
name = input('账号:')
password = input('密码:')
peoples = People(name, password)
self.people_list.append(peoples)
print('注册成功!')
print("\n")
self.login()
class BookManagers:
def __init__(self):
self.book_list = [] # 建立一个存储数据用的列表
self.apply = [] # 图书建购表
def run(self, number): # 程序入口函数
if number == 1:
while True:
self.show_menu() # 显示功能菜单
menun_num = int(input("请输入您需要的功能序号:")) # 用户输入功能序号
# 根据输入的序号,执行不同的功能
if menun_num == 1: # 添加图书
self.add_book()
self.save_book()
elif menun_num == 2: # 查询图书信息
self.search_book()
elif menun_num == 3: # 显示所有图书信息
self.show_book()
elif menun_num == 4: # 保存图书信息
self.save_book()
elif menun_num == 5: # 删除图书信息
self.del_book()
self.save_book()
elif menun_num == 6: # 修改图书信息
self.modify_book()
self.save_book()
elif menun_num == 7: # 统计借出
self.data_statistic()
elif menun_num == 8:
self.show_apply()
elif menun_num == 9: # 退出登陆
peoples = PeopleManage()
peoples.menu()
else:
while True:
self.show_menu1()
menun_num = int(input("请输入您需要的功能序号:")) # 用户输入功能序号
# 根据输入的序号,执行不同的功能
if menun_num == 1: # 查询图书信息
self.search_book()
elif menun_num == 2: # 显示所有图书信息
self.show_book()
elif menun_num == 3:
self.buy_book() # 图书建购
elif menun_num == 4: # 退出系统
peoples = PeopleManage()
peoples.menu()
# 定义功能函数
def show_menu(self): # 显示功能菜单
print("请选择如下功能------------")
print("1:添加书籍")
print("2:查询书籍信息")
print("3:显示所有书籍")
print("4:导出书籍信息")
print("5:信息删除书籍")
print("6:修改书籍信息")
print("7:统计借出")
print("8:展示建议")
print("9:退出登陆")
def show_menu1(self): # 显示功能菜单
print("请选择如下功能------------")
print("1:查询书籍信息")
print("2:显示所有书籍")
print("3:图书建购")
print("4:退出登陆")
def add_book(self): # 添加图书
# 用户输⼊图书名称、作者、状态、编码
name = input("请输入书籍名称:")
author = input("请输入书籍作者:")
status = input("请输入书籍状态:")
index = input("请输入书籍编码:")
book = Book(name, author, status, index) # 创建图书对象
self.book_list.append(book) # 将该图书对象添加到列表
print(self.book_list) # 打印信息
print(book) # 打印信息
def del_book(self): # 删除图书
del_name = input('请输⼊要删除的书籍名称:') # 用户输入目标图书名
# 如果用户输入的目标存在则删除,否则提示目标不存在
for i in self.book_list: # 遍历图书信息列表
if i.name == del_name: # 查找图书是否存在
self.book_list.remove(i) # 删除图书信息
print("成功删除该图书信息!")
print("\n")
break
else:
print("查无此书!")
print("\n")
print(self.book_list) # 打印图书列表,验证删除功能
def modify_book(self): # 修改图书信息
modify_name = input('请输⼊要修改的书籍名称:') # 用户输入目标名称
# 如果用户输入的目标存在,则修改信息,否则提示图书不存在
for i in self.book_list: # 遍历图书信息列表
if i.name == modify_name: # 查找图书是否存在
# 更改学员信息
i.name = input('请输⼊书籍名称:')
i.author = input('请输⼊书籍作者:')
i.status = input('请输⼊书籍状态:')
i.index = input('请输入书籍编码:')
print("成功修改该图书信息!")
print(
f'书籍:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}') # 打印图书信息,验证是否更改成功
print("\n")
break
else:
print('查无此书!')
print("\n")
def search_book(self): # 查询图书信息
search_name = input('请输⼊要查询的书籍名称:') # 用户输入目标图书名
# 如果用户输入的目标存在,则打印目标信息,否则提示目标不存在
for i in self.book_list: # 遍历目标信息列表
if i.name == search_name: # 查找目标图书是否存在
print(
f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
print("\n")
break
else:
print('查无此书!')
print("\n")
def show_book(self): # 显示所有图书信息
print('姓名\t作者\t\t状态\t编码') # 打印信息名称
for i in self.book_list: # 遍历信息列表
print(f'{i.name}\t{i.author}\t\t{i.status}\t\t{i.index}') # 打印图书信息
print("\n")
def save_book(self): # 导出图书信息
f = open('book.txt', 'w', encoding='utf-8') # 打开文件
new_list = [i.__dict__ for i in self.book_list] # 将图书数据转换成列表字典数据
print(new_list) # 打印信息
f.write(str(new_list)) # 转换成字符串,存入文档
f.close() # 关闭文件
def data_statistic(self): # 统计图书借出状态
yes = no = 0
for i in self.book_list:
if i.status == '借出':
yes += 1
else:
no += 1
print("已借出图书{}册:".format(yes))
for i in self.book_list:
if i.status == '借出':
print(f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
print("\n")
print("未借出图书{}册:".format(no))
for i in self.book_list:
if i.status == '未借出':
print(f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
print("\n")
def buy_book(self): # 读者建购图书
name = input("请输入书籍名称:")
author = input("请输入书籍作者:")
reason = input("建购原因:")
self.apply.append(['图书名称:{},作者:{},建购原因:{}'.format(name, author, reason)])
f = open('apply.txt', 'w', encoding='utf-8') # 打开文件
f.write(str(self.apply)) # 转换成字符串,存入文档
f.close() # 关闭文件
def show_apply(self): # 展示读者建购表
f = open('apply.txt', 'r', encoding='utf-8') # 打开文件
data=f.read()
print(data)
print("\n")
f.close() # 关闭文件
if __name__=='__main__':
people = PeopleManage()
people.menu()
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的