基于Django图书管理系统设计与实践

目 录
摘 要 I
Abstract II
1 绪论 1
1.1 选题背景及意义 1
1.1.1 选题背景 1
1.1.2 目的意义 1
1.2 研究现状 2
1.3 论文组织安排 3
2 开发工具及其技术 4
2.1 Python 4
2.2 Django 5
2.3 MySQL 6
2.4 Django Rest Framework 7
3 需求分析 8
3.1 可行性研究 8
3.1.1 技术可行性 8
3.1.2 经济上的可行性 8
3.1.3 操作上的可行性 8
3.2 系统需求分析 8
3.3 程序流程图 9
4 系统设计 11
4.1 总体功能模块 11
4.2 具体功能模块 11
4.3 系统业务描述 12
4.4 数据库设计 13
4.4.1系统和数据库的配置 13
4.4.2 概念模型设计 14
4.4.3 数据库ER 15
4.4.4 数据库表设计及结构 17
5 系统实现 21
5.1 网站登录与注册页面 21
5.2 后台管理登录页面 22
5.3 图书管理页面 23
5.4 借书管理页面 24
5.5 还书管理与历史借书页面 25
5.6 查询图书 25
6 系统测试 28
6.1 系统测试的目的以及任务 28
6.2 测试环境 28
6.3 软件测试 28
6.4 测试结果 29
7 总结 31
参考文献 32
致 谢 34
3 需求分析
3.1 可行性研究
可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决,其中它包括技术可行性、经济可行性和操作可行性。
3.1.1 技术可行性
本系统前台数据库采用mysql 数据库,该数据库系统在安全性、准确性和运行速度方面比其他数据库有绝对的优越性,并且处理数据量大,效率高。
本系统后台采用Microsoft的公司的MyEclipse8.5作为主要的开发平台,它提供了完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发系统提供了高性能的保障。而且保证了代码的模块化要求,便于以后系统的扩展和修改。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的。因此,在技术方面是可行的。
3.1.2 经济上的可行性
在网络高速发展的今天,本系统将为销售效率开启一个新的窗口,其优越性有以下几点:
(1)本系统的运行可以减少不必要的人力,为学校节省更多的资源;
(2)本系统可以统计大量的数据,对各个数据库进行分类管理,保证数据的安全性和统一性;
所以本系统在经济上是可行的。
3.1.3 操作上的可行性
本系统是结合实际工作需要而开发,对于硬件和软件的要求很普遍,能解决当前工作中的诸多问题,因此该项目符合相关部门的工作实际,有稳定而扎实的合作基础。从操作方讲有项目操作更好完成的基础和可行性。从前面分析看,技术上的操作己经日臻完善和成熟,技术实现的可操作性非常大,并且开发完成此系统后,用户只需使用浏览器即可登录使用本系统。从而系统的操作是可行的,能最终以满足客户需求,达到最初开发目的的目标。因此,本系统在运行上是可行的。
3.2 系统需求分析
系统需求分析是对对象进行系统调查,是系统开发工作中最重要的环节之一,系统需求分析需要准确回答“系统必须做什么,目的是什么”。
在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。
在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最关键的一个过程。假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件无法在规定的时间里完工。
4.3 系统业务描述
本系统主要开发目的是方便图书管理人员进行图书信息管理,增加工作效率,面向的客户群体是各级图书馆的工作人员。本文转载自http://www.biyezuopin.vip/onews.asp?id=14120根据本系统的需求,结合实际管理情况,本系统应用有如下功能模块:
1.基本信息设置:如操作人员的编辑,操作人员密码的修改。
2.用户的管理:可以查询、增加、修改、删除用户信息。
3.图书信息管理:可以添加分类、增加、删除、修改图书信息。
4.查询图书信息:查看、修改图书状态,并在用户查询时智能推荐同类图书。
5.添加图书借阅信息。
6.借阅还书功能。

from django.shortcuts import render
from django.views.generic import View
from apps.Index.models import Admin
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import redirect
from django.urls import reverse
from json import dumps


class IndexView(View):
    def get(self, request):
        # 显示首页,使用模板
        return render(request, 'index.html')


class FrontLoginView(View):
    # 前台登录
    def post(self,request):
        # 登录校验接收数据
        username = request.POST.get('userName')
        password = request.POST.get('password')
        try:
            admin = Admin.objects.get(username=username, password=password)
            request.session['user_name'] = username
            data = {'msg': '登录成功', 'success': True}
        except Admin.DoesNotExist:
            # 用户名密码错误
            data = {'msg': '登录失败', 'success': False}
        # ensure_ascii=False用于处理中文
        return HttpResponse(dumps(data, ensure_ascii=False))


class FrontLoginOutView(View):
    def get(self,request):
        del request.session['user_name']  # 删除指定数据
        request.session.clear()  # 清空的是值
        request.session.flush()  # 键和值一起清空
        return HttpResponseRedirect(reverse("Index:index"))


class LoginView(View):
    # 后台登录页面
    def get(self,request):
        return render(request, 'login.html')

    def post(self,request):
        # 登录校验接收数据
        username = request.POST.get('username')
        password = request.POST.get('password')
        try:
            admin = Admin.objects.get(username=username, password=password)
            request.session['username'] = username
            data = {'msg': '登录成功', 'success': True}
        except Admin.DoesNotExist:
            # 用户名密码错误
            data = {'msg': '登录失败', 'success': False}
        # ensure_ascii=False用于处理中文
        return HttpResponse(dumps(data, ensure_ascii=False))


class LoginOutView(View):
    def get(self, request):
        # del request.session['username']  # 删除指定数据
        request.session.clear()  # 清空的是值
        request.session.flush()  # 键和值一起清空
        return redirect(reverse("Index:login"))


class MainView(View):
    # 后台主界面
    def get(self,request):
        return render(request, 'main.html')

class ChangePasswordView(View):
    def get(self, request):
        return render(request, 'password_modify.html')

    def post(self, request):
        oldPassword = request.POST.get('oldPassword')
        newPassword = request.POST.get('newPassword')
        newPassword2 = request.POST.get('newPassword2')


        if oldPassword == '':
            return render(request, 'message.html', {'message': '旧密码不正确!'})
        if newPassword == '':
            return render(request, 'message.html', {'message': '请输入新密码!'})
        if newPassword != newPassword2:
            return render(request, 'message.html', {'message': '两次新密码不一样!'})

        username = request.session['username']
        admin = Admin.objects.get(username=username)
        if oldPassword != admin.password:
            return render(request, 'message.html', {'message': '旧密码不正确!'})
        admin.password = newPassword
        admin.save()
        return render(request, 'message.html', {'message': '密码修改成功!'})

基于Django图书管理系统设计与实践_第1张图片
基于Django图书管理系统设计与实践_第2张图片
基于Django图书管理系统设计与实践_第3张图片
基于Django图书管理系统设计与实践_第4张图片
基于Django图书管理系统设计与实践_第5张图片
基于Django图书管理系统设计与实践_第6张图片
基于Django图书管理系统设计与实践_第7张图片
基于Django图书管理系统设计与实践_第8张图片
基于Django图书管理系统设计与实践_第9张图片
基于Django图书管理系统设计与实践_第10张图片
基于Django图书管理系统设计与实践_第11张图片
基于Django图书管理系统设计与实践_第12张图片
基于Django图书管理系统设计与实践_第13张图片
基于Django图书管理系统设计与实践_第14张图片
基于Django图书管理系统设计与实践_第15张图片
基于Django图书管理系统设计与实践_第16张图片
基于Django图书管理系统设计与实践_第17张图片
基于Django图书管理系统设计与实践_第18张图片
基于Django图书管理系统设计与实践_第19张图片
基于Django图书管理系统设计与实践_第20张图片
基于Django图书管理系统设计与实践_第21张图片
基于Django图书管理系统设计与实践_第22张图片
基于Django图书管理系统设计与实践_第23张图片
基于Django图书管理系统设计与实践_第24张图片
基于Django图书管理系统设计与实践_第25张图片
基于Django图书管理系统设计与实践_第26张图片
基于Django图书管理系统设计与实践_第27张图片
基于Django图书管理系统设计与实践_第28张图片
基于Django图书管理系统设计与实践_第29张图片
基于Django图书管理系统设计与实践_第30张图片
基于Django图书管理系统设计与实践_第31张图片
基于Django图书管理系统设计与实践_第32张图片
基于Django图书管理系统设计与实践_第33张图片

你可能感兴趣的:(python,Django,图书管理系统,图书管理,毕业设计)