python实现图书管理系统

本文介绍了一个图书借阅管理系统的设计与实现,系统包括学生和管理员两个角色,学生可以查看书籍、借阅图书、归还图书和查看个人信息,管理员可以查看书籍、增加图书。系统通过类和对象实现了对图书和学生信息的管理。
# 图书借阅管理
import datetime

# 学生信息
class Stu_Info(object):

    def __init__(self, sno, sname, key):
        self.sno = sno
        self.key = key
        self.sname = sname
    #@staticmethod
    def Lgtime(self):
        self.ltime = datetime.datetime.now()  # 借出时间
        self.ltimes = self.ltime.strftime('%Y-%m-%d %H:%M:%S')
        self.dtime = (self.ltime +
                      datetime.timedelta(days=30)).strftime('%Y-%m-%d %H:%M:%S')  # 应归还时间

    def state(self, m):
        if m == 0:
            return '未借书'
        elif m == 1:
            return '未归还'
        elif m == 2:
            return '已归还'

    def show(self):
        print("姓名:{} 学号:{} ".format(self.sname, self.sno))

    def Show_Iden_Info(self):
        global Lend_Name
        for p in Lend_Name:
            print("学生:{} \n学号:{}\n借阅书名:{}\n借阅时间:{} \n应归还时间:{} \n归还状态:{}".format(
                self.sname, self.sno, p.Book_name, self.ltimes, self.dtime, self.state(st)))

# 图书信息


class Book_Info(object):

    def Reader(self, student):  # 建立一个借阅此书的人的列表
        self.reader_list = []
        self.reader_list.append(student)
        self.number = len(self.reader_list)

    def __init__(self, name, author, publish, count, place):
        self.Book_name = name           # 书名
        self.author    = author   		# 作者
        self.publish   = publish  		# 出版社
        self.count     = count    		# 书的数量
        self.place     = place    		# 书的位置

    def Show_Seek_Book(self):
        print("《{}》 作者:{} 出版社:{} 数量:{} 位置:{}".format(self.Book_name,
                                                     self.author, self.publish, self.count, self.place))

    def Show_readers(self):
        for q in self.reader_list:
            print("借阅人:{} 借阅时间:{} 是否归还:{}".format(
                q.sname, q.ltimes, q.state(st)))

    def Show_Management_See(self):
        print("书名:{} 数量:{} 已借出:{}".format(
            self.Book_name, self.count, self.number))
        self.Show_readers()


class Operate():
    # 查看所有图书

    @staticmethod
    def StudentSee():
        print('图书馆所有书籍:')
        for book in Book_List:  # Book_List是一个存储书籍的列表,列表中每一个元素都是Book_Info的对象
            book.Show_Seek_Book()

    # 借阅图书
    @staticmethod
    def StudentBorrow():
        global n

        Lname = input("请输入借阅图书的书名:")
        for book in Book_List:
            if Lname == book.Book_name and book.count == 0:
                print("***该书已经被借出,请稍后再来!***")
            elif Lname == book.Book_name and book.count > 0:
                global i
                book.Reader(Student_List[i])  # 在借此书的人的列表中加入这个学生
                book.count -= 1  # 书库中这本书-1
                global Lend_Name  # 一个人借的所有书的列表
                Lend_Name.append(book)
                n += 1
                global st  # 借阅状态
                st = 1
                Student_List[i].Lgtime()
                print("您已成功借到{}\n".format(book.Book_name))

    # 归还图书
    @staticmethod
    def StudentGive():
        bname = input("请输入所归还的书名:")
        for book in Book_List:
            if bname == book.Book_name:
                book.count += 1
                global st
                st = 2
                print("还书成功")

    # 查看个人信息
    @staticmethod
    def StudentInfo():
        global i
        Student_List[i].Show_Iden_Info()

    # 管理员查看图书
    @staticmethod
    def Managerment_See():
        Operate.StudentSee()
        name = input("\n请输入需要查看详细借阅信息的书名:")
        for book in Book_List:
            if name == book.Book_name:
                book.Show_Management_See()
            # else:
             #   print("未查到此图书借阅信息!")

    # 管理员增加图书
    @staticmethod
    def ManagerAdd():
        name = input('请输入书籍的名称:')
        author = input('请输入书的作者:')
        count = input('请输入书的数量:')
        publish = input('请输入图书出版社:')
        place = input('请输入书所在的楼层:')
        Book_List.append(Book_Info(name, author, publish, count, place))
        print('{}添加成功!'.format(name))
        Operate.StudentSee()

# 身份验证


class identity(object):

    @staticmethod
    def Start():
        print('-' * 50)
        answer = input('选择用户:\n 1.管理员 \n 2.学生 \n')
        if answer == '1':
            identity.ManagerIdentity()
        elif answer == '3':
            name = input('请输入您的姓名:')
            sno = input('请输入您的学号:')
            key = input('请输入您的密码:')
            ew = Stu_Info(sno, key, name)
            Student_List.append(new)
            print('***注册成功,请登陆:***')
            dentity.StudentIdentity()
        elif answer == '2':
            identity.StudentIdentity()
        else:
            print('***操作非法***')

    def ManagerIdentity():
        passwd1 = input('请输入您的密码:')
        print('-' * 50)
        if passwd1 == '123456':
            print('欢迎使用图书管理系统')
            Menu.ManagerMenu()
        else:
            print('您的密码错误!请重新输入:')
            self.ManagerIdentity()

    @classmethod
    def StudentIdentity(self):  # 学生信息的验证函数
        num = eval(input('请输入您的学号:'))
        passwd2 = eval(input('请输入您的密码:'))
        print('-' * 50)
        for s in Student_List:
            if s.sno == num and s.key == passwd2:
                global i
                i += 1
                print('欢迎使用图书管理系统')
                Menu.StudentMenu()
                return
        print('您的用户名或身份不正确!请重新输入:')
        self.StudentIdentity()


class Menu(object):
    # 定义菜单类,学生和管理员有不同的选择

    @staticmethod
    def StudentMenu():
        print('')
        while True:
            print("\n1.查看书籍 2.借阅图书 3.归还图书 4.查看个人信息 5.切换登陆 0.退出系统\n")
            Schoice = input('请选择您要进行的操作:')
            if Schoice == '1':
                Operate.StudentSee()
            elif Schoice == '2':
                Operate.StudentBorrow()
            elif Schoice == '3':
                Operate.StudentGive()
            elif Schoice == '4':
                Operate.StudentInfo()
            elif Schoice == '5':
                print('')
                print('***欢迎再次使用图书管理系统***')
                identity.Start()
            elif Schoice == '0':
                print('')
                print('***欢迎再次使用图书管理系统***')
                return 0
            else:
                print('您的输入不正确,请重新输入数字\n')

    @staticmethod
    def ManagerMenu():
        # 定义管理员选择菜单函数
        print('')
        print('1.查看书籍\n')
        print('2.增加图书\n')
        print('3.切换登陆\n')
        print('0.退出系统\n')
        while True:
            Mchoice = input('请选择您要进行的操作:')
            if Mchoice == '1':
                # 管理员查看图书部分
                Operate.Managerment_See()
            elif Mchoice == '2':
                # 管理员增加图书部分
                Operate.ManagerAdd()
            elif Mchoice == '3':
                # 退出菜单部分
                print('')
                print('***欢迎再次使用图书管理系统***')
                identity.Start()
            elif Mchoice == '0':
                print('')
                print('***欢迎再次使用图书管理系统***')
                return 0
            else:
                print('您的输入不正确,请重新输入\n')


def main():  # 测试数据
    global Book_List  # 图书馆的所有书
    global n
    n = -1
    global i  # Student_List中标识人的下标
    i = -1
    Book_List = []
    book1 = Book_List.append(
        Book_Info('Python程序设计', '董富国', '清华大学出版社', 5, '1F'))
    book2 = Book_List.append(Book_Info('数据结构', '严蔚敏', '清华大学出版社', 5, '1F'))
    book3 = Book_List.append(Book_Info('西游记', '吴承恩', '人民出版社', 4, '2F'))
    book4 = Book_List.append(
        Book_Info('爱丽丝梦游仙境', 'Lewis Carroll', '人民出版社', 5, '3F'))
    global Student_List  # 图书馆的所有注册学生信息
    Student_List = []
    s1 = Student_List.append(Stu_Info(112, 'Ammy', 123))
    s2 = Student_List.append(Stu_Info(113, 'Tom', 345))
    global Lend_Name
    Lend_Name = []

    # 设置存放一个学生借的所有书的列表

    identity.Start()

main()


软件工程与数据库 课程设计 任务书 学院名称: 数学与计算机学院 课程代码:_6014419_ 专 业: 年 级: 一、设计题目 图书管理系统 二、主要内容 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的 借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续 借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学 生,借阅、续借、归还的确认。如: 图书室有各种图书一万多册。 每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容 简介。 借书证记录有借阅者的姓名、所在单位、职业等。 凭借书证借书,每次最多能借8本书。借书期限最长为30天。 实现新进图书的数据录入。 实现对所有购进图书的分类查询和分类统计。 能够按书名、作者等分类查询现有图书的数量。 记录借阅者的个人资料和所借图书的书名、书号数据等。 三、具体要求 1、完成系统的需求分析 通过需求分析确定系统需要处理的数据的需求,要求使用数据库的辅助设计工具( PowerDesigner等),建立业务处理模型。 2、完成系统概念结构设计 概念数据模型(CDM)用于完成数据库的设计,与人和数据库平台和具体数据存储结构和 工具无关。首先选择局部应用画出分E-R图,最终形成系统的E-R图 3、完成系统逻辑结构设计 按照E- R图转换成关系模式的规则,将CDM转换成逻辑数据模型,并为每个关系模式设计主键、 外键。分析关系模式中的依赖关系,对关系模式规范化处理 4、完成系统物理结构设计 为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写 出关系创建和查询的SQL语句。 5、编码 选择你自己熟悉的开发工具完成一个DBS系统的编码工作。 源代码格式规范,注释不少于三分之一 四、主要技术路线提示 1.仔细阅读设计指导书内容,认真掌握任务要求(2. 需求分析( 3.概念结构设计( 4.逻辑结构设计(5.物理结构设计(6.编码. 2.后台推荐采用SQL server或Oracle;前台开发环境不限制。可采用ADO,ODBC,OLE DB或JDBC连接数据库, 并调用系统存储过程、自定义存储过程、函数等。 五、进度安排 第1周: 数据库系统概念模型、数据模型设计,创建数据库以及相关对象; 第2周: 前台程序开发,撰写报告,接受检查。 六、完成后应上交的材料 1. 源程序一份(包含数据库) 2. 课程设计报告一份 七、推荐参考资料 1.王珊.数据库系统概论(第四版). 高等教育出版社 2.闪四清.数据库系统原理与应用教程.清华大学出版社 3.周龙骧.数据库管理系统实现技术.中国地质大学出版社 4.张海藩.软件工程概论.清华大学出版社 5.陈明 编著.实用软件工程基础.清华大学出版社 6.成先海.数据库基础与应用-SQL SERVER2000. 机械工业出版社出版 指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日 ----------------------- 数据库课程设计--图书管理系统全文共3页,当前为第1页。 数据库课程设计--图书管理系统全文共3页,当前为第2页。 数据库课程设计--图书管理系统全文共3页,当前为第3页。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值