精华内容
下载资源
问答
  • Use Case框图显示系统中的使用案例与角色及其相互关系,角色是与所建系统交互的对象(人或物),使用案例是系统提供的高级功能模块,演示了人们如何使用案例。首先创建主Use Case框图,显示系统的总体视图。
  • 基于UML的高校图书管理系统模型研究,宗威,,UML(Unified Modeling Language,统一建模语言)是当今世界上面向对象系统开发领域中最强有力的工具之一。由于它易于表达,能够使图形简��
  • 图书管理系统

    2018-01-14 18:47:16
    提出了图书管理系统的一般建立方法,并且利用数据库、信息系统分析所学知识,结合其它相关管理常识,通过对某书店图书流通过程的分析,建立相关数据模型,利用面向对象开发工具对其进行设计与开发。   其工作流程...
  • 探讨软件体系结构与面向对象方法相结合的问题。以一个图书管理系统为例,采用统一建模语言UML对该系统的软件体系结构建模,并使用VB语言实现了该系统。
  • 摘要:通过对UML(标准建模语言)的深入研究,...结合图书信息管理 系统开发实例,对UML的技术应用进行了研究,并对UML的相关知识作了阐述.解决了软件设计人员和客户之间 交流的难题,加快了开发进程,提高了开发质量.
  • 5 对象模型 11 5.1 类定义 11 5.2 类关联描述 11 5.3 对象模型图 12 6 动态模型 12 6.1 活动图 12 6.2顺序图 17 7 功能模型 20 7.1 确定输入输出与事件关系 20 7.2 功能模型图 22 8 非功能性需求(略) 22 9 辅助...
  • #声明:未经作者同意,不得以任何方式拷贝/传播作者知识总结,谢谢理解。 ----Johnny Zen  众所周知,以全面支持面向对象统一过程模型的UML模型工具,在RUP(Rational统一过程模型)...以下,就西华大学图书管理系统...

      #声明:未经作者同意,不得以任何方式拷贝/传播作者知识总结,谢谢理解。 ----Johnny Zen

      众所周知,以全面支持面向对象统一过程模型的UML模型工具,在RUP(Rational统一过程模型)中,4+1视图(即 用例视图/逻辑视图/部署视图/组件视图/进程视图;以用例视图为核心,系统体系结构为主线,采用循环、迭代、渐增的方式进行软件系统开发)尤为知名。以下,就西华大学图书管理系统作为例子,对核心视图-----用例视图的核心图示-----用例图的需求捕获/构建过程作一示例。

    一、问题描述(业务需求描述)

      在图书管理系统中,管理员要为每个读者建立借阅账户,并给读者发放不同类型的借阅卡(借阅卡可提供卡号,读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类型的读者可借阅图书的范围、数量和期限不同,可通过互联网或者图书馆内自助查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。

      

      借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括图片),供管理员人工审核。然后输入要借阅的书号,系统查询图书信息数据库,显示图书的基本信息,供管理员人工核对,最后提交借阅请求,若被系统接受则存储借阅记录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅记录,以及是否超期借阅,无则提示,有则显示读者和图书的基本信息,供管理员人工审核。如果有超期借阅或者丢失情况,先转入过期罚款或者图书丢失处理,然后提交还书请求,系统接受后删除借阅记录,登记并修改可借阅图书的数量。

     

      图书管理员定期或者不定期对图书信息进行入库,修改,删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。

     

    二、构建用例图

     三、深入思考

      1.读者是否可以直接关联用例?(与系统直接交互?)

      2.查询终端是否可以作为系统参与者?

      3.用例分析时,常见的参与者有哪些?(人/设备/外部系统/等)

      4.基于B/S的界面类(HTML/JSP等)与基于B/S的界面类,在UML软件系统分析与设计中该如何设计?

    转载于:https://www.cnblogs.com/johnnyzen/p/8819646.html

    展开全文
  • 面向对象课程设计——图书馆第1章 建立需求模型 第2章 建立基本模型 第3章 建立辅助模型 3.1 建立包图 3.2 建立顺序图 3.3 建立活动图 3.4 建立状态图 3.5 建立协作图管理系统
  • 查看书籍页面:从数据库找到所有的书籍对象,html循环对象取值,显示书籍信息,  多对多的作者,html中通过书本对象取对应的作者信息(注意正反向),因为可能有多个值,循环取  一对多的出版社,html中通过书本...

    1>效果

    如下,3个html文件,两个页面(添加和删除基本一样),各个按钮实现对应的增删改查功能。

    思路:1>查看书籍页面:从数据库找到所有的书籍对象,html循环对象取值,显示书籍信息,

               多对多的作者,html中通过书本对象取对应的作者信息(注意正反向),因为可能有多个值,循环取

               一对多的出版社,html中通过书本对象取对应的出版社信息(注意正反向),

           2>添加书籍:页面输入信息,点击提交后,post请求会包含这些数据的键值对,

                添加书籍 直接就是单表操作了,新增数据,注意有个出版社的值,这里写入的是对应的id

                多对多写入作者信息,应用之前的语法 书本对象。关联字段。add(对象1,对象2.。。)

           3>编辑书籍,编辑按钮的a标签会把这条记录的主键值传入url,所以根据url接收的参数可以筛选出书本记录

           这该条记录的值 写入编辑页面对应的数据框,要注意的是出版社和作者,首先HTML取值还是遵循之前的多表

         操作,正向靠字段,反向靠表名,再判断下哪些值跟这条记录的值一致,就加上selected样式标识。

             然后修改信息并提交,书籍表直接update,注意作者表,因之前就存在一些关联数据,作者表的处理方式应该是

           先删除之前的关联关系数据,再写入新的。

           4> 删除书籍,这个就跟之前单表操作一样了,通过删除a标签发送到url的标识值,找到该记录并删除。

    2>具体代码如下

        2.1>路由层,建立path跟视图函数的映射关系

    from django.contrib import admin
    from django.urls import path, re_path
    from book2.views import *
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('addbook/', addbook),
        path('books/', books),
        re_path(r"books/(\d+)/delete",delbook) ,# delbook(request,1)
        re_path(r"books/(\d+)/change",changebook) ,# delbook(request,1)
    ]
    

        2.2>视图层,视图函数

    from django.shortcuts import render, redirect
    
    # Create your views here.
    
    from book2.models import *
    
    # 添加书籍
    def addbook(request):
    
        # 查找所有的出版社对象
        pub_list = Publish.objects.all()
    
        # 查找所有的作者对象
        author_list = Author.objects.all()
    
        if request.method=="POST":
    
            print(request.POST)
    
            title = request.POST.get("title")
            price = request.POST.get("price")
            publish_id = request.POST.get("pub")
            author_id_list = request.POST.getlist("author") # checkbox,多选select等需要用此方法
    
            # 插入书籍数据(单表操作)
            book_obj = Book.objects.create(title=title,price=price,publish_id=publish_id) # 要么用publish传入一个实例,要么用publish_id传入对应的主键值
    
            # 插入book_author关系表数据(多对多数据插入)
            book_obj.authors.add(*author_id_list)
    
            return redirect("/books/")
    
        return render(request,"addbook.html", locals())
    
    
    # 主页显示所有书籍
    def books(request):
    
        book_list=Book.objects.all()
    
        return render(request,"books.html",locals())
    
    # 编辑书籍信息
    def changebook(request,id):
    
        # 查找所有的出版社对象
        pub_list = Publish.objects.all()
    
        # 查找所有的作者对象
        author_list = Author.objects.all()
    
        # 查找对应的书籍对象
        book_obj=Book.objects.filter(nid=id).first()
    
        if request.method=="POST":
            print(request.POST)
    
            title = request.POST.get("title")
            price = request.POST.get("price")
            publish_id = request.POST.get("pub")
            author_id_list = request.POST.getlist("author") # checkbox,多选select等需要用此方法
    
            # 更新书籍数据和关联数据
            Book.objects.filter(nid=id).update(title=title,price=price,publish_id=publish_id) # 要么用publish传入一个实例,要么用publish_id传入对应的主键值
    
            book_obj.authors.clear()    # 清空关联关系数据,再写入新的
            book_obj.authors.add(*author_id_list)
    
            return redirect("/books/")
    
        return render(request,"changebook.html",locals())
    
    # 删除书籍
    def delbook(request,id):
    
        Book.objects.filter(nid=id).delete()
    
        return redirect("/books/")
    

        2.3>控制层,控制显示

          添加书本的html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <!-- 新 Bootstrap 核心 CSS 文件 -->
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <style>
            .container{
                margin-top: 100px;
            }
            .btn{
                margin-top: 10px;
            }
        </style>
    </head>
    <body>
    
    <h3>添加书籍</h3>
    
    <div class="container">
         <div class="row">
             <div class="col-md-6 col-md-offset-3">
                 <form action="" method="post">
                     {% csrf_token %}
                     <div>
                         <label for="">书籍名称</label>
                         <input type="text" class="form-control" name="title">
                     </div>
                     <div>
                         <label for="">价格</label>
                         <input type="text" class="form-control" name="price">
                     </div>
                     <div>
                         <label for="" >作者</label>
                            <select  class="form-control"  multiple name="author">
                                 {% for author in author_list %}
                                    <option value ='{{ author.pk }}'>{{ author.name }}</option>
                                 {% endfor %}
                            </select>
                     </div>
                     <div>
                         <label for="">出版社</label>
                             <select  class="form-control" name="pub">
                                 {% for pub in pub_list %}
                                    <option value ="{{ pub.pk }}">{{ pub.name }}</option>
                                 {% endfor %}
                             </select>
                     </div>
                     <input type="submit" class="btn btn-success pull-right">
                 </form>
             </div>
         </div>
    </div>
    
    </body>
    </html>

         书本显示html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- 新 Bootstrap 核心 CSS 文件 -->
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <style>
            .container{
                margin-top: 100px;
            }
            .btn{
                margin-top: 10px;
            }
        </style>
    </head>
    <body>
    
    <h3>查看书籍</h3>
    
    <div class="container">
         <div class="row">
             <div class="col-md-8 col-md-offset-3">
                 <a href="/addbook/" class="btn btn-primary">添加书籍</a>
                 <table class="table table-striped table-bordered">
                       <thead>
                            <tr>
                                <th>书籍名称</th>
                                <th>价格</th>
                                <th>作者</th>
                                <th>出版社</th>
                                <th>删除操作</th>
                                <th>编辑操作</th>
                            </tr>
                       </thead>
                       <tbody>
                            {% for book in book_list %}
                              <tr>
                                  <td>{{ book.title }}</td>
                                  <td>{{ book.price }}</td>
                                  <td>
                                      {% for author in book.authors.all %}
                                          {% if forloop.last %}
                                              <span>{{ author.name }}</span>
                                          {% else %}
                                              <span>{{ author.name }}</span>、
                                          {% endif %}
                                      {% endfor %}
                                  </td>
                                  <td>{{ book.publish.name }}</td>
                                  <td><a href="/books/{{ book.pk }}/change" class="btn btn-info">编辑</a></td>
                                  <td><a href="/books/{{ book.pk }}/delete" class="btn btn-danger">删除</a></td>
                              </tr>
                            {% endfor %}
    
                       </tbody>
    
                 </table>
    
             </div>
         </div>
    </div>
    </body>
    </html>

         编辑书本的HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <!-- 新 Bootstrap 核心 CSS 文件 -->
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <style>
            .container{
                margin-top: 100px;
            }
            .btn{
                margin-top: 10px;
            }
        </style>
    </head>
    <body>
    
    <h3>编辑书籍</h3>
    
    <div class="container">
         <div class="row">
             <div class="col-md-6 col-md-offset-3">
                 <form action="" method="post">
                     {% csrf_token %}
                     <div>
                         <label for="">书籍名称</label>
                         <input type="text" class="form-control" name="title" value="{{ book_obj.title }}">
                     </div>
                     <div>
                         <label for="">价格</label>
                         <input type="text" class="form-control" name="price" value="{{ book_obj.price }}">
                     </div>
                     <div>
                         <label for="" >作者</label>
                            <select  class="form-control"  multiple name="author">
                                 {% for author in author_list %}
    
                                     {% if author in book_obj.authors.all %}
                                         <option value ='{{ author.pk }}' selected>{{ author.name }}</option>
                                     {% else %}
                                         <option value ='{{ author.pk }}'>{{ author.name }}</option>
                                     {% endif %}
    
                                 {% endfor %}
                            </select>
                     </div>
                     <div>
                         <label for="">出版社</label>
                             <select  class="form-control" name="pub">
                                 {% for pub in pub_list %}
                                     {% if pub.name == book_obj.publish.name %}
                                         <option value ="{{ pub.pk }}" selected>{{ pub.name }}</option>
                                     {% else %}
                                         <option value ="{{ pub.pk }}">{{ pub.name }}</option>
                                     {% endif %}
    
    
                                 {% endfor %}
                             </select>
                     </div>
                     <input type="submit" class="btn btn-success pull-right">
                 </form>
             </div>
         </div>
    </div>
    </body>
    </html>

    2.4>模型层,数据库交互

    from django.db import models
    
    # Create your models here.
    
    
    class Author(models.Model):
    
        nid = models.AutoField(primary_key=True)
        name=models.CharField( max_length=32)
        age=models.IntegerField()
    
        # 与AuthorDetail建立一对一的关系
        authorDetail=models.OneToOneField(to="AuthorDetail",to_field='nid', on_delete=models.CASCADE)
    
        def __str__(self):
            return self.name
    
    
    class AuthorDetail(models.Model):
    
        nid = models.AutoField(primary_key=True)
        birthday=models.DateField()
        telephone=models.BigIntegerField()
        addr=models.CharField( max_length=64)
    
    
    class Publish(models.Model):
        nid = models.AutoField(primary_key=True)
        name=models.CharField( max_length=32)
        city=models.CharField( max_length=32)
        email=models.EmailField()
    
    
    class Book(models.Model):
    
        nid = models.AutoField(primary_key=True)
        title = models.CharField( max_length=32)
        price=models.DecimalField(max_digits=5,decimal_places=2)
    
        # 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
        authors=models.ManyToManyField(to='Author',)
    
        # 与Publish建立一对多的关系,外键字段建立在多的一方
        publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)
    
        def __str__(self):
            return self.title
    展开全文
  • 今天看到<<软件设计师>>面向对象第七章讲到几种设计模式,其中一种为Visitor模式。.../*某图书管理系统中管理者两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有

    今天看到<<软件设计师>>面向对象第七章讲到几种设计模式,其中一种为Visitor模式。这种设计模式通过访问者对象的建立,在访问过程中将访问者作为参数传到被访问对象的函数中,实现了有选择性的访问不同类的资源。

    其中有一个Visitor模式设计的应用,参考书中的代码,在本地测试跑了一下。

    //
    //  library_visitor.cpp
    //  data_structure
    /*某图书管理系统中管理者两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本
     540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。适合采用Visitor模式实现该要求。*/
    //  Created by simon zhao on 2021/4/4.
    //  Copyright © 2021 simon zhao. All rights reserved.
    //
    
    #include "library_visitor.hpp"
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    //声明访问者类
    class LibraryVisitor;
    
    
    //定义被访问者基类
    class LibraryItemInterface{
    public:
        virtual void accept(LibraryVisitor * visitor){};
        
    };
    
    //定义被访问-文章类
    class Article:LibraryItemInterface{
        
    private:
        string m_title;//论文名
        string m_author;//论文作者
        int m_start_page;
        int m_end_page;
        
    public:
        Article(string p_title,string p_author,int p_start_page,int p_end_page);
        int getNumberOfPages();//获取论文的页数
        void accept(LibraryVisitor* visitor);//vistor模式下将visitor作为参数传递通过accept函数访问
        
    };
    
    //定义被访问-图书类
    class Book:LibraryItemInterface{
    
    private:
        string m_title;
        string m_author;
        int m_pages;
    public:
        Book(string p_title,string p_author,int p_page);
        int getNumberOfPages();
        void accept(LibraryVisitor* visitor);
    };
    
    //方法实现 BOOK
    Book::Book(string p_title,string p_author,int p_page){
        m_title=p_title;
        m_author=p_author;
        m_pages=p_page;
    };
    
    int Book::getNumberOfPages(){
        cout<<m_title<<"加入统计:"<<m_pages<<"页"<<endl;
        return m_pages;
    }
    
    //方法实现 Article
    Article::Article(string p_title,string p_author,int p_start_page,int p_end_page){
        m_title=p_title;
        m_author=p_author;
        m_start_page=p_start_page;
        m_end_page=p_end_page;
    }
    int Article::getNumberOfPages(){
        cout<<m_title<<"加入统计:"<<m_end_page-m_start_page<<"页"<<endl;
        
        return m_end_page-m_start_page;
    }
    
    
    //定义访问者基类
    class LibraryVisitor{
    public:
        virtual void visit(Article* article){};
        virtual void visit(Book* book){};
        virtual void printSum(){};
    };
    
    //被访问者的accpet方法实现
    void Book::accept(LibraryVisitor* visitor){
        visitor->visit(this);
    };
    void Article::accept(LibraryVisitor* visitor){
        visitor->visit(this);
    }
    
    //访问者执行的子类
    class LibrarySumPrintVisitor:public LibraryVisitor{
    private:
        int total_sum;
    public:
        LibrarySumPrintVisitor(){
            cout<<"初始化对象"<<endl;
        }//构造方法
        void visit(Article* article){
            total_sum += article->getNumberOfPages();
        }
        void visit(Book* book){
            total_sum += book->getNumberOfPages();
        }
        void printSum(){
            cout<<"一共的页数"<<total_sum<<endl;
        };
        
    };
    
    int main(){
        //初始化被访问者
        Book b1 = Book("狂人日记", "鲁迅", 540);
        Article a1 = Article("神经网络", "bengio", 12, 37);
        Article a2 = Article("NLP","bengio",8,33);
        
        //初始化访问者
        LibrarySumPrintVisitor vistor =LibrarySumPrintVisitor();
    
        //第一次错误理解访问者模式代码
    //    vistor.visit(&b1);
    //    vistor.visit(&a1);
    //    vistor.visit(&a2);
        
    
        //评论区@将手伸向星空指正后修改
        b1.accept(&visitor);
        a1.accept(&visitor);
        a2.accept(&visitor);
        
    
    
        vistor.printSum();
    
    };
    
    

    在本地编译运行了一下结果:

    XX_USER:$ gcc -lstdc++ library_visitor.cpp -o test
    XX_USER:$ ./test 
    初始化对象
    狂人日记加入统计:540页
    神经网络加入统计:25页
    NLP加入统计:25页
    一共的页数590
    

    由于C++才刚开始学习,本文主要目的是为了做记录,如有代码不规范的地方请大家批评指正。

    展开全文
  • 1.2现有图书管理系统的概述 - 1 - 1.3图书管理的现状和趋势 - 2 - 1.4选题的目的、意义 - 2 - 1.5个人的工作 - 3 - 1.6开发环境 - 3 - 第二章 系统开发基础知识 - 4 - 2.1ASP的概念 - 4 - 2.1.1ASP的文件结构 - 4 - ...
  • UML建模案例之图书管理系统 通过“图书管理系统”UML建模过程了解面向对象的系统分析与设计方法 §1 软件需求分析 §2 图书馆管理系统的需求分析 §3 系统的UML基本模型 §4 系统中的类 §5 系统的配置与实现
  • 软件工程课程项目设计 组长 郭宇豪:主要负责系统设计部分,设计图,设计流程校对 组员 王世宇:主要负责对象设计以及功能实现 ...借阅情况录入系统图书管理员在读者借阅图书时录入信息,修改录入,形成借阅表

    软件工程课程项目设计

    组长

    郭宇豪:主要负责系统设计部分,设计图,设计流程校对

    组员

    王世宇:主要负责对象设计以及功能实现

    李杰:负责动态模型设计以及模型实现

    1、系统设计
    系统可分为5个子系统:书籍信息录入系统、读者信息录入系统、借阅情况录入系统、计算扣款金额系统、人员及图书信息查询系统

    1)书籍信息录入系统:图书管理员录入书籍的书号、名称,修改录入,形成图书表。

    2)读者信息录入系统:系统管理员录入读者的个人信息,修改录入,形成读者表。

    3)借阅情况录入系统:图书管理员在读者借阅图书时录入信息,修改录入,形成借阅表。

    4)计算扣款金额系统:图书管理员按读者借书时间、还书时间和借阅时长判断读者是否需要扣费,然后生成信息到历史借阅表中。

    5)人员及图书信息查询系统:读者可以根据自己的读者号查询自己的个人信息;图书管理员可以根据自己的管理员号查询自己的个人信息;所有人都可以登录之后查询图书的信息。

    在这里插入图片描述
    2、对象设计
    本系统中一共有三个参与者:

    其中读者的主要用例包括查询读者账户:查询自己的个人信息以及查询自己的账户和借阅情况、借书、还书和查询图书信息。

    图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。

    系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能。

    图书管理员和系统管理员都继承于图书馆内部人员这个父类。

    在这里插入图片描述

    在这里插入图片描述

    本系统一共设计了七个类:

    读者类:
    属性:(1)读者证号 (2)密码 (3)最大借书数量

    方法:(1)借书 (2)还书 (3)查看用户账户 (4)查看借书数量 (5)登录系统
    (6)查询图书信息 (7)交罚款

    图书管理员类:
    属性:(1)管理员帐号 (2)密码

    方法:(1)查询图书信息(2)修改图书信息

    书架类:
    属性:(1)书架号 (2)类型(3)位置(4)存放数量

    方法 :(1) 存放图书

    图书类:
    属性:(1)书号(2)书名(3)数量(4)价格(5)出版社
    (6)馆藏册数(7)在馆册数

    系统管理员类:
    属性: 值班时间

    方法:(1)查看用户个人信息(2)修改用户个人信息

    后台系统类:
    属性:(1)级别(2)配置

    方法:(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息

    事物(Item)类:
    属性: id

    方法:(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数

    图书管理员类和系统管理员类是工作人员类的子类,图书管理员在继承了其父类的属性和操作以外还自己添加了管理员帐号和密码这两个属性,添加了查询图书信息和修改图书信息这两个操作。系统管理员在继承了父类的基础以外还添加了值班时间这个属性,以及查看用户个人信息和修改用户个人信息这两个操作。

    读者类和工作人员类是人员类的子类,读者在继承了其父类的属性和操作以外还自己添加了读者证号、密码和最大借书数量这几个属性,添加了借书、还书、查看用户账户、查看借书数量、登录系统、查询图书信息和交罚款这些操作。工作人员在继承了其父类的属性和操作以外还自己添加了工资和管理范围这两个属性,添加了登录账户、查询用户借阅信息、管理借书记录、管理还书记录、查看用户账户这些操作。

    人员类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于人员类。

    图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看事物类,事物类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个事物。

    系统管理员可负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。

    3、动态模型设计

    借书过程的时序图:
    在这里插入图片描述

    上图表示了读者在进行借阅操作时的一系列变化,读者在进行借书操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将读者的帐号和密码进行比对,进行身份验证,并将验证的结果返回给读者。如果身份验证成功则用户登录成功,反之读者登录失败。

    读者可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,后台系统查看对应图书的馆藏册数,并根据馆藏信息,返回该图书是否可借阅。若可借阅,则图书管理员可在此时修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间。

    此时,后台系统调用其事物类功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。

    还书过程的时序图:
    在这里插入图片描述
    用户在还书的时候也需要登录,在登录的时候,首先需要输入自己的信息包括帐号和密码,显示器讲这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果返回给用户。如果身份验证成功则用户登录成功,反之用户登录失败。

    借阅者在登录成功之后,可以向图书管理员发送还书请求,图书管理员在接收到还书请求之后,需要进入后台系统查看该借阅者是否超期借阅,后台系统返回超期的信息,若借阅者还书的时间超过了应还的时间,后台系统则自动生成一张扣款账单,由图书管理员返回给借阅者。

    之后借阅者需要支付扣款的金额,支付完毕后,图书管理员需要修改借阅信息,即进入后台数据库的借阅表删除这条借阅信息,后台系统自动将删除的借阅信息添加到后台数据库的历史借阅表中。另外,后台系统还需要修改图书的馆藏册数,将所还图书的馆藏册数加一,并返回馆藏信息。

    最后,借阅者可以归还实体的图书,图书管理员将会请求生成一张还书书单,后台系统启用其事物类功能生成一张还书书单并返回给读者,整个还书操作结束。

    进行借书操作时的活动图:
    在这里插入图片描述
    读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。

    图书管理员在后台系统返回可借阅信息之后修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间,与此同时,后台系统调用其Item功能,当图书管理员修改完借阅信息之后,后台系统生成一张纸质书单。

    完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。

    读者从未登记到还书成功时的状态图:
    在这里插入图片描述
    读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。

    注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于规定数量时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。

    若借阅者处于未还书状态超过规定时间,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。

    此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于规定数量时,才可以继续借阅,若是读者借书数量大于规定数量本,则直接结束,无法再借。

    由此,整个图书借阅系统设计完成。

    在本次课程项目设计中,让我更加了解到了流程关于程序设计的流程情况,同时也让我更好的复习了面向对象分析的内容。对于动态模型,也从本次项目设计当中有了更加深入的了解,能够更好的对其进行掌握。
    在通过参考书籍流程情况,我们简单的设计的这个图书管理系统,虽然我们的课程设计还有许多不足的地方,我们在后续的实现中会更加注重功能和系统的实现,更好的完善整个系统。

    展开全文
  • 简单的图书管理系统 通过数据源和DAO对象访问数据库。其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图。 • 模型包括2个JavaBean:BookBean用于存放图书信息,BookDAO用于访问数据库。 • ...
  • 【导读】对基于B/S模式下的图书管理系统进行分析,运用UML的静态和动态模型图,对系统的分析结果进行可视化建模,并对系统模型图进行概括性论证。 1前言使用计算机软件对图书进行管理,是计算机应用的一部分。以...
  • 图书管理系统报告,包括用例图,组织结构图,也无流程图,分析设计还有一些具体内容等等.可以自己看看.  针对用户对图书资源进行有效利用和管理的功能需求,用建模技术对图书管理资源采用面向对象的描述方式,在具体...
  • 综合实验:《图书管理系统分析与设计》 实验要求: 1:要求按OOAD方法,使用标准UML进行系统建模。至少包括4种建模图:用况图及其详细事件流,类图,顺序图或通信图,活动图或状态图。 2:根据分析与设计结果根据...
  • C++图书管理系统

    2015-08-30 10:07:44
    同一个信息系统,从不同的角度分析,或根据要求的不同,有不同的侧重面,这样建立的对象模型不同,可能得出的分类方法也不同。 2、对象属性的识别 每个对象的情况称为对象的属性,同类型的对象具有共同的属性,只是...
  • 这篇总结状态模型建模:状态图和活动图。... 下边我们看例子:(图书管理信息系统中的图书的状态图)      活动图,我们在面向对象需求分析——用例图和活动图已经讲述了,这里不再重复.
  • 图书管理系统(框架)源码 选用Entityframework,spring.net ,asp.net MVC 等技术来开发。 项目结构: Common为公共类,主要存放与业务无关的公共类,也包括扩展方法也存放在此类库中。 Domain为领域逻辑层,主要...
  • 1.2现有图书管理系统的概述 - 1 - 1.3图书管理的现状和趋势 - 2 - 1.4选题的目的、意义 - 2 - 1.5个人的工作 - 3 - 1.6开发环境 - 3 - 第二章 系统开发基础知识 - 4 - 2.1ASP的概念 - 4 - 2.1.1ASP的文件结构 - 4 - ...
  • 然后根据系统需求,进行需求分析,其次根据需求建立系统的静态模型,以构造系统的结构;接着是建立系统的动态模型,描述系统的行为。其中所建立的静态模型包括用例图、类图、对象图这三种图形。其中所建立的动态模型...
  • 图书管理系统毕业设计+源码-java

    千次下载 热门讨论 2012-05-06 13:45:09
    图书管理系统毕业设计+源码-java 包括80个文件,各个界面图等。 图书馆集成管理系统 前言 随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。二十一世纪是信息的时代,所以信息...
  • 自定义模型加入后台管理 体验便捷的管理功能 自定义管理页面 编写后台管理页文件 列表页属性 效果展示 添加、修改页属性 关联对象 自定义模型加入后台管理 打开 bookApp/admin.py 文件,注册模型。但是我们...
  • 设计与数据库表一一对应的对象模型,将对数据库执行的操作转为对象模型,简化了处理逻辑 设计可重用的方法,优化方法中条件的逻辑判断,供不同的业务调用,减少了代码冗余 遵循命名规范,包的命名体现层次关系,类的...
  • 摘 要 统一建模语言UML是面向对象分析和设计过程中重要的建模工具,本文以图书管理系统的开发为背景,介绍了UML的分析和建模过程。 关键词 UML;系统分析;建模设计 1 UML简介 UML(统一建模语言)是面向对象...
  • 题 目:图书管理系统数据库设计 摘 要 在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,往往是...
  • 图书管理系统需求规格说明书

    热门讨论 2009-03-15 14:38:28
    运用面向对象方法对图书管理系统进行分析,包括:需求分析;系统用例模型;系统动态模型;包图设计;系统类模型;系统部署。 一、 需求分析 (一) 系统总体功能需求 图书馆可以为借阅者提供借还书、续借、查询书目...
  • 视图层包括登录界面、主界面、图书类别管理界面、图书类别增加界面、图书类别删除界面、图书类别修改界面、图书类别查询界面、图书信息管理界面、图书信息增加界面、图书信息修改界面、图书信息删除界面、图书信息...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 304
精华内容 121
关键字:

图书管理系统对象模型