精华内容
下载资源
问答
  • 具体的代码已有,不知道怎么做,不知道怎么使用MySQL,怎么把代码和MySQL连接起来。
  • vb跟access做图书管理系统怎么做

    千次阅读 2014-12-03 14:05:58
  • 刚刚学习oracle,要一个图书管理系统,但是不怎么会这个,还在慢慢学习中,请各位大神指点一二,谢谢了。
  • C#图书管理系统的课程设计怎么做?借书和还书的功能怎么编代码
  • 需要用Java一个简单的图书管理系统,具有排序、查找、计算、插入、显示等功能。 该系统需要具有以下功能: (1)图书数据结构:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 (2)需要实现的...
  • java图书管理系统

    2018-01-03 21:39:43
    java 图书管理系统 适合初学者练习 加油 初学者就应该多多练习 如果不知道怎么做 我给你们一个网站 你们可以看视频来学习入门知识。
  • 我这个博文怎么要审核那么久,管理员哥哥 图书管理 读者管理 借阅管理 系统设置 那么系统可以按逐个功能模块的去分析构建。 从图书管理开始。

    首先我要构造一个导航条,上面需要有图书馆后台能够管理的所有功能模块。

    从最基本的开始,导航条需要有读者管理、图书管理,这是两种客观对象。由两种客观对象之间的关系,又产生了图书借阅管理,最后还要有一个都会有的系统设置。

    所以基本的导航应该是如下:

    图书管理 读者管理 借阅管理 系统设置


    那么系统可以按逐个功能模块的去分析构建。

    从图书管理开始。

    图书管理主要是用来统计存了多少本什么类型的书。也就是说,要维护一个由专门保存图书记录的数据表。

    而对这个数据库的增删改查,就分别形成了,添加书目、删除书目、修改书目、查询书目四个功能模块。

    添加书目开始,当然需要一个独立的页面。因为要输入的内容太多了。

    而删除书目,则可以在主页中直接实现。

    修改书目也需要一个独立的页面。

    查询可以在主页中直接实现。

    再具体到添加书目的实现。

    这个独立页面就相当于书目的注册页面了。

    这个时候需要同时确定这个数据表的表结构了。

    那么如何确定哪些关键字需要存储呢?

    当然是需要被使用到的字段。

    那么使用者有两类人。

    第一类是读者,读者不管是借书还是还书都只需要书名、作者、出版时间就可以了。

    第二类是图书馆管理员,管理员会增加和删除书库,可用编号来确定每一本书,即条形码

    当然分下来书的基数太大了,所以我们可以很自然的对图书进行分类管理,也就是加一个图书类型字段。有时候可以视情况而定,看需不需要在分类里再增加子类。

    好的,暂且确定下来的基本表结构为:

    bookname author printtime barcode booktype
    char(100) char(100) date() int(20) char(100)

    (数据类型是瞎定的,有待优化。)

    创建的时候会发现还需要确定一个主键,主键必须要能唯一确定一项表内容,暂时定条形码吧。这个是肯定可以的。

    create table books(
     bookname varchar(100),
     author varchar(100),
     printtime date,
     barcode primary key not null,
     booktype varchar(100));

    OK,表创建好了,下一步是创建一个提交的页面。命名为books_add.php

    <html>
    	<head>
    		<title>添加书目信息</title>
    	</head>
    	<body>
    		<form action = "books_add_ok.php" method = "POST">
    		<label>书名</label>
    		<input type = "text" name = "bookname"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "bookname"></input></br>
    		<button type = "submit" >提交</button>
    	</body>
    </html>

    ok,一个不能再简单的表单好了。

    出现了一个问题,php的插入代码其实我可以在本页内就直接实现。

    那么要不要Post到其他php文件还是直接在本页内实现呢?

    手上的案例是分离的,也许是因为前后代码分离更方便阅读的原则吧。

    那我们也这样咯。需要一个books_insert.php文件。

    这个时候发现一个问题,光看文件名books_insert与books_add完全看不出是什么关系啊。这个命名不好。

    我需要能从文件名上就能看出彼此逻辑关系的命名方式。所以,books_insert.php改名为books_add_ok.php。

    <?php
    	include "conn/conn.php";
    	$bookname = $_POST['bookname'];
    	$author = $_POST['author'];
    	$printtime = $_POST['printtime'];
    	$barcode = $_POST['barcode'];
    	$booktype = $_POST['booktype'];
    	mysql_query("insert into books (bookname,author,printtime,barcode,booktype)values('$bookname','$author','$printtime','$barcode','$booktype')");
    ?>
    ok,还需要一个链接数据库的文件,conn/conn.php;

    <?php
    	$con = mysql_connect("localhost","root","") or die(mysql.error());
    	mysql_select_db("mylibrary",$con);
    	mysql_query("set names gb2312");
    ?>
    Ok,整个后台已经完成了,我们迫不及待的要测试一下了!



    测试成功了!不过以上都是基础,没有做任何程序健壮性方面的改进。不过我们先整体搭建框架,后面再做这些细化工作吧。

    下一步是修改模块。

    修改跟添加非常类似。甚至可以直接采用添加模板稍微修改一个title就行了啊!

    为了偷懒我决定这么做了。

    靠,不行。我不能全部字段都重新写啊,那跟添加没区别了,我至少得确定一个字段,然后修改其他字段,这才叫修改啊。

    选中一个字段提交修改表单-〉查询出该条记录-〉更新修改字段。

    Ok,我们先考虑实现第一步,如何实选中一个字段提交修改表单?

    显然,我们需要把所有书目列出来啊。那么做一个页面,列出所有书目。

    Ok,books.php

    <html>
    	<head>
    		<title>图书管理</title>
    	</head>
    	<body>
    		<table>
    			<tr>
    				<th>书名</th>
    				<th>作者</th>
    				<th>出版时间</th>
    				<th>条形码</th>
    				<th>书目类型</th>
    				<th>操作设置</th>
    			</tr>
    			<?php
    				include "conn/conn.php";
    				$sql = mysql_query("select * from books;");
    				$info = mysql_fetch_array($sql);
    				if($info == false){
    					echo "No books!";
    				}else{
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    				<!--选中某一元素,只需要在本轮遍历的时候输出他的key就可以了,这次没有通过表单提交,而是直接通过url传递参数。获取则需要使用$_GET['传递值']-->
    			</tr>
    			<?php
    				}while($info = mysql_fetch_array($sql));  //误写成了while(mysql_fetch_array($sql));这样不会遍历,只会每次都输出第一组数据.
    				}
    			?>
    		</table>
    	</body>
    </html>

    OK,其中采用了url来传递被选中的值。测试了一下,我们可以点击修改按钮,然后就跳到books_modify.php页面,同时参数barcode也被传过去了

    下面是books_modify.php的代码

    <html>
    	<head>
    		<title>修改书目信息</title>
    	</head>
    	<body>	
    		<?php
    			$barcode = $_GET['barcode'];
    			include "conn/conn.php";
    			$sql = mysql_query("select * from books where barcode = $barcode");
    			$info = mysql_fetch_array($sql)//即便我只查一条,我也用这个方法了。
    		?>
    		<form action = "books_modify_ok.php" method = "POST">
    		<label>书名</label><input type ="text" name ="bookname" value = "<?php echo $info['booktype'];?>"></br>
    		<label>作者</label>
    		<input type = "text" name = "author" value = "<?php echo $info['author'];?>"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime" value = "<?php echo $info['printtime'];?>"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode" value = "<?php echo $info['barcode'];?>"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "bookname" value = <?php echo $info['booktype'];?>></input></br>
    		<button type = "submit" >提交</button>
    	</body>
    </html>

    通过$_GET['barcode']获取了传递过来的barcode值,然后我查询这条记录的其他内容,将其作为默认显示(设置为input中的value的值)。

    然后用户修改内容之后,点击提交,我们就调转到了books_modify_ok.php的后台功能实现页面了。

    在这之前,需要明确一个问题。

    修改,是我选中一个记录之后,去修改这个记录的字段。

    那么有两个问题:第一,我通过什么字段来选中这条记录呢?第二,我能修改哪些字段?

    如果我都能修改我选择的字段,那就不叫修改了。那是新建啊!

    所以我必须要用一个字段来锁定他能修改的内容,不能随便篡改。这个字段必须具备唯一性。

    书名可以吗?说明如果唯一的话,是最好的啊。

    那么实际情况的修改图书信息是怎样的呢?

    我手上的这个图书馆的例子,是根据一个隐式的id作为主键来确认的,如果是这样的话,那完全可以可以当作新建功能来用啊。

    因为id属性不可见,你修改一个,跟创建一个。在看起来是一模一样的。

    所以我决定条形码。条形码可见且唯一。

    books_modify_ok.php代码如下:

    <?php
    <span>	</span>include "conn/conn.php";
    <span>	</span>$barcode = $_GET['barcode'];
    <span>	</span>$bookname = $_POST['bookname'];
    <span>	</span>$author = $_POST['author'];
    <span>	</span>$printtime = $_POST['printtime'];
    <span>	</span>$booktype = $_POST['booktype'];
    <span>	</span>$sql = mysql_query("update books set bookname = '$bookname',author = '$author',printtime = '$printtime',booktype = '$booktype' where barcode = '$barcode';");
    <span>	</span>echo "<script language='javascript'>alert('图书信息修改成功!');history.back();</script>";
    ?>

    OK,测试成功。

    下一步是处理删除。books_delete.php。

    <?php
    	$barcode = $_GET['barcode'];
    	include "conn/conn.php";
    	$sql = mysql_query("delete from books where barcode = '$barcode';");
    	echo "<script language='javascript'>alert('图书信息删除成功!');history.back();</script>";
    ?>
    OK。最后一个处理的是查询。

    查询有些特殊:

    第一,因为主页本身就是一个查询结果,也就说我的查询结果,会需要更改主页,也就是在本页做修改。

    第二,因为查询可以根据不同字段进行查询,所以需要在主页做一个选择标签来接受查询字段。

    同时,在主页加一个链接,作为增加书目的入口,一并对主页进行修改。

    修改之后的books.php如下

    <html>
    	<head>
    		<title>图书管理</title>
    	</head>
    	<body>
    		<form method = "POST" action = "">
    		<select name = "searchtype">
    			<option value = "bookname">书名</option>
    			<option value = "author">作者</option>
    			<option value = "printtime">出版时间</option>
    			<option value = "barcode">条形码</option>
    			<option value = "booktype">书目类型</option>
    		</select>
    		<input name = "key" type = "text"></input>
    		<button type = "submit">提交</button>
    		<a href = "books_add.php">增加书目</a>
    		</form>
    		<table>
    			<tr>
    				<th>书名</th>
    				<th>作者</th>
    				<th>出版时间</th>
    				<th>条形码</th>
    				<th>书目类型</th>
    				<th>操作设置</th>
    			</tr>
    			<?php
    				include "conn/conn.php";
    				$f = $_POST['searchtype'];
    				$key = $_POST['key'];
    				$sql = mysql_query("select * from books;");
    				$info = mysql_fetch_array($sql);
    				if($info == false)
    					echo "No books!";
    				else if($info == true){
    					if($key ==""){
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    			</tr>
    			<?php
    				}while($info = mysql_fetch_array($sql)); 
    				}else{
    					$sql = mysql_query("select from books where '$f' like '$key$';");
    					$info = mysql_fetch_array($sql);
    					if($info == false)
    						echo "没有找到相关记录!";
    					else{
    				do{
    			?>
    			<tr>
    				<td><?php echo $info['bookname'];?></td>
    				<td><?php echo $info['author'];?></td>
    				<td><?php echo $info['printtime'];?></td>
    				<td><?php echo $info['barcode'];?></td>
    				<td><?php echo $info['booktype'];?></td>
    				<td><a href = "books_modify.php?barcode=<?php echo $info['barcode']?>">
    				修改</a></td>
    				<td><a href = "books_delete.php?barcode=<?php echo $info['barcode']?>">删除</a></td>
    			</tr>
    			<?php	
    				}while($info = mysql_fetch_array($sql));
    				}
    				}
    				}
    			?>
    		</table>
    	</body>
    </html>
    点进添加页面进行添加书目。这个时候发现,添加可以成功,但是都没有返回主页的选项。总不能一直添加吧,非常不合理。

    所以修改books_add.php页面,加入一个返回书目主页(books.php)的按钮。

    同理可知books_modify.php页面,也需要加入一个返回书目主页的按钮。

    以后所有的主页分出来的功能页面,都要考虑一个返回按钮。

    books_add.php

    <html>
    	<head>
    		<title>添加书目信息</title>
    	</head>
    	<body>
    		<form action = "books_add_ok.php" method = "POST">
    		<label>书名</label>
    		<input type = "text" name = "bookname"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime"></input></br>
    		<label>条形码</label>
    		<input type = "text" name = "barcode"></input></br>
    		<label>书目类型</label>
    		<input type = "text" name = "booktype"></input></br>
    		<button type = "submit" >提交</button>
    		<input name="Submit2" type="button" value="返回" onClick="history.back();">
    	</body>
    </html>

    books_modify.php

    <html>
    	<head>
    		<title>修改书目信息</title>
    	</head>
    	<body>	
    		<?php
    			include "conn/conn.php";
    			$barcode = $_GET['barcode'];
    			$sql = mysql_query("select * from books where barcode = $barcode");
    			$info = mysql_fetch_array($sql)//即便我只查一条,我也用这个方法了。
    		?>
    		<form action = "books_modify_ok.php?barcode=<?php echo $barcode?>" method = "POST">
    		<label>书名</label>
    		<input type ="text" name ="bookname" value = "<?php echo $info['booktype'];?>"></input></br>
    		<label>作者</label>
    		<input type = "text" name = "author" value = "<?php echo $info['author'];?>"></input></br>
    		<label>出版时间</label>
    		<input type = "text" name = "printtime" value = "<?php echo $info['printtime'];?>"></input></br>
    		<label>条形码:<?php echo $info['barcode'];?></input></label></br>
    		<label>书目类型</label>
    		<input type = "text" name = "booktype" value = <?php echo $info['booktype'];?>></input></br>
    		<button type = "submit" >提交</button>
    		<input name="Submit2" type="button" value="返回" onClick="history.back();">
    		</form>
    	</body>
    </html>

    以上,基本实现了所有的关于书目管理的所有基本功能。


    展开全文
  • cout图书管理系统 "; cout管理员登录 2.读者登录 "; cin>>n; system("cls"); switch(n) { case 1:Administrator_Load();break; case 2:Reader_Load(b);break; } } return 0; } class Info ...
  • MFC图书管理系统

    2009-11-17 21:01:09
    你们可以看看啊。我不知道怎么上传文件夹啊。
  • 个人图书管理系统

    2014-09-07 15:48:07
    个人图书管理易为您提供了便利,个人图书管理易是一个小型图书管理软件,她的操作相当的简单,界面也相当的友好,而且还可以对图书按出版社、图书类型进行分类,极具人性化,相信有了她的帮助,你再也不为一堆图书的...
  • 一篇关于详细怎么用access一份图书管理系统的文档。
  • 图书管理系统实例

    2013-05-25 02:47:16
    图书管理系统实例 教怎么做图书管理系统 用access做的
  • 图书管理系统心得

    2018-06-29 13:06:45
    图书管理系统做了挺长的时间 ,前前后后修改了挺多次,说实话其实到最后也不尽如人意,没有完整地实现图书管理的各个功能。 最开始的时候上来没有想清楚具体怎么写,各个功能如何实现,就急急忙忙地下手去写了 。写...

        图书管理系统做了挺长的时间 ,前前后后修改了挺多次,说实话其实到最后也不尽如人意,没有完整地实现图书管理的各个功能。

        最开始的时候上来没有想清楚具体怎么写,各个功能如何实现,就急急忙忙地下手去写了 。写的时候也是迷迷糊糊,到最后代码倒是写了很多行,但是都是废代码,根本实现不了具体功能,导致第一次交作业的时候没有通过。上课时又具体听了听都有什么功能,各个功能应该怎么实现,写的磕磕绊绊,并且经常性的卡住,到最后再次上交时能够实现文件的读写了,管理书籍(增加 删除等)。最后又仔细研读了一下别的同学的代码,发现有很多地方很多功能的实现都处理的特别好,深受启发,对现在正在写的列车时刻查询系统也是很有帮助。

        数据类包括时间类 记录类 图书类 用户类 ,操作类包括管理端和客户端。时间类重载小于号,便于判断是否逾期;借书时间为2个月,可续借(注:注意各个月份总天数不同 有的月份可能没有 31号)。记录类记录下谁在什么时间借了什么书 是否续借等。图书类定义书籍书号 出版社 馆藏数 借出数等 ;可按书号 出版社等进行查询;定义一个vecto<Record>记录下每本书的借阅情况 multimap等进行查询。用户类同图书类。管理端即对用户和图书的基本操作 (增删查改等) 客户端注意将用户限定死,不能出现登陆时是一个用户 借书时又可以输入学号变成另一个人了。

        如果还想完善一下的话 可以用一下继承和多态,使功能的实现更加简洁。

    展开全文
  • 假设一本书借出超过2个月就算逾期了.但是我应该怎么去更新呢? 初步想增加一个线程,每分钟对一下时间,更新一下是否逾期的状态. 是不是数据库有事务功能直接定期更新吗?
  • 对于图书管理系统的需求分析和具体怎么的描述
  • Java实现图书管理系统

    千次阅读 多人点赞 2019-10-20 17:46:42
    简单图书管理系统 1.需求分析 a)角色有两种:普通用户 管理员 针对普通用户,支持的操作是 a)查找书籍 b)借阅书籍 c)归还书籍 针对管理员,支持的操作是: a)查找书籍 b)增加书籍 c)删除书籍 d)打印所有书籍...

    我们先做一个简单的需求分析
    简单图书馆管理系统

    1.需求分析
    a)角色有两种:普通用户 管理员

    针对普通用户,支持的操作是

    a)查找书籍
    b)借阅书籍
    c)归还书籍

    针对管理员,支持的操作是:

    a)查找书籍
    b)增加书籍
    c)删除书籍
    d)打印所有书籍信息

    2.概要设计

    想清楚程序应该分为几个模块,每个模块具体实现什么功能,模块之间是怎么交互的。

    3.详细设计

    每个模块的具体细节

    4.开始编码

    先创建类,把一些核心的类设计好
    设计类不难,从需求中寻找关键词(名词)
    这里 Book User (NormalUser Admin) BookList(所有书籍)

    创建Book类:

    package package_bookmanger.book;
    
    public class Book {
        private String name;
        private String id;
        private String author;
        private int price;
        private String type;
        private boolean isBorrowed;
    
        public Book(String name, String id, String author, int price, String type, boolean isBorrowed) {
            this.name = name;
            this.id = id;
            this.author = author;
            this.price = price;
            this.type = type;
            this.isBorrowed = isBorrowed;
        }
    
        public String getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + '\'' +
                    ", id='" + id + '\'' +
                    ", author='" + author + '\'' +
                    ", price=" + price +
                    ", type='" + type + '\'' +
                    ", isBorrowed=" + isBorrowed +
                    '}';
        }
    
        public boolean isBorrowed() {
            return isBorrowed;
        }
    
        public void setBorrowed(boolean borrowed) {
            isBorrowed = borrowed;
        }
    }
    
    

    创建BookList类代表一系列图书
    在BookList中我们先添加几本书将其初始化

    package package_bookmanger.book;
    
    public class BookList {
        private Book[] books = new Book[100];
        private int size; //有效元素
    
        public BookList() {
            books[0] = new Book("红楼梦","001","曹雪芹",100,"古典文学",false);
            books[1] = new Book("水浒传","002","施耐庵",100,"古典文学",false);
            books[2] = new Book("西游记","003","吴承恩",100,"古典名著",false);
            size = 3;    
        }
    
        public int getSize() {
        	//取得有效书籍个数
            return size;
        }
    
        public void setSize(int size) {
        	//设置有效书籍个数
            this.size = size;
        }
        public Book getBook(int index){
        	//取到图书馆中的某本书,通过下标获得
            return books[index];
        }
        public void setBooks(int index,Book book){
        	//设置某本书进去
            books[index] = book;
        }
    }
    
    

    针对两种类型的人,要实现一些基本操作,可以通过两种方式来实现
    1.把这些操作作为User类方法来实现
    2.可以把操作理解成名词,每种操作对应到一个类,User类只要持有这些类的实例就行了。

    这里我们创建一个接口,和许多个操作类

    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public interface IOperation {
        void work(BookList bookList);
    }
    
    

    此时User就要持有IOpeartion对象来实现操作
    新增操作

    //新增
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class AddOperation implements IOperation {
        //这个类对应到“新增”操作
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //借书
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class BorrowOpeartion implements IOperation{
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //删除书
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class DelOperation  implements IOperation{
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //退出系统
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class ExitOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //查找书籍
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class FindOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //打印所有书籍
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class PrintAllOpeartion implements IOperation {
        @Override
        public void work(BookList bookList) {
    
        }
    }
    //还书
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class ReturnOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
    
        }
    }
    
    

    book包:
    Book:表示一本书的信息
    BookList:管理若干本书
    user包:
    User:抽象类,包含名字和该用户支持的操作数组
    NormalUser表示普通用户,继承自User
    Admin:表示管理员继承自User
    operation包
    包含若干个类,每个类表示一种操作。
    IOperation为共同接口,重写work方法,work是针对workList进行操作
    使每个用户持有不同的操作

    在这里插入图片描述

    User

    package package_bookmanger.user;
    
    import package_bookmanger.Operation.IOperation;
    import package_bookmanger.book.BookList;
    
    abstract public class User {
        //被继承
        protected String name;
    
        public User(String name) {
            this.name = name;
        }
    
        //持有当前用户支持的操作对象
        protected IOperation[] operations;
    
        //打印一个操作菜单,不同的用户不同,对应的菜单也不同
        abstract public int menu();
    
        //根据用户输入的选项
        //调用对应的操作对象
        public void doOperation(int choice, BookList bookList){
            operations[choice].work(bookList);
        }
    }
    
    

    NormalUser

    package package_bookmanger.user;
    
    import package_bookmanger.Operation.*;
    
    import java.util.Scanner;
    
    public class NormalUser extends User{
        public NormalUser(String name) {
            super(name);
            //构造器构造我们的数组
            //数组中 operation 对象的顺序和菜单中的序号想匹配
            operations = new IOperation[]{
                    new ExitOperation(),
                    new FindOperation(),
                    new BorrowOpeartion(),
                    new ReturnOperation()
            };
        }
    
        @Override
        public int menu() {
            System.out.println("============");
            System.out.println("hello" + name);
            System.out.println("1.查找图书");
            System.out.println("2.借阅图书");
            System.out.println("3.归还图书");
            System.out.println("0.退出");
            System.out.println("============");
            System.out.println("请输入您的选择");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            return choice;
        }
    }
    
    

    Admin

    package package_bookmanger.user;
    
    import package_bookmanger.Operation.*;
    
    import java.util.Scanner;
    
    public class Admin extends User{
        public Admin(String name) {
            super(name);
            operations = new IOperation[]{
                    new ExitOperation(),
                    new FindOperation(),
                    new AddOperation(),
                    new DelOperation(),
                    new PrintAllOpeartion()
            };
        }
    
        @Override
        public int menu() {
            System.out.println("============");
            System.out.println("hello" + name);
            System.out.println("1.查找图书");
            System.out.println("2.增加图书");
            System.out.println("3.删除图书");
            System.out.println("4.打印所有图书");
            System.out.println("0.退出");
            System.out.println("============");
            System.out.println("请输入您的选择");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            return choice;
        }
    }
    
    

    接下来就是实现类的操作

    //公共接口
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public interface IOperation {
        void work(BookList bookList);
    
    }
    
    //Add
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.Book;
    import package_bookmanger.book.BookList;
    
    import java.util.Scanner;
    
    public class AddOperation implements IOperation {
        //这个类对应到“新增”操作
        @Override
        public void work(BookList bookList) {
            System.out.println("请新增一本书籍");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入书名");
            String name = scanner.next();
            System.out.println("请输入序号");
            String id = scanner.next();
            System.out.println("请输入作者");
            String author = scanner.next();
            System.out.println("请输入价格");
            int price = scanner.nextInt();
            System.out.println("请输入类别");
            String type = scanner.next();
            Book book = new Book(name,id,author,price,type,false);
            bookList.setBooks(bookList.getSize(),book);//尾插
            bookList.setSize(bookList.getSize() + 1);
            System.out.println("添加成功");
        }
    }
    //删除
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.Book;
    import package_bookmanger.book.BookList;
    
    import java.util.Scanner;
    
    public class DelOperation  implements IOperation{
        @Override
        public void work(BookList bookList) {
            System.out.println("删除书籍");
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入要删除书籍的序号");
            String id = scanner.next();
            int i  = 0;
            for (;i < bookList.getSize(); i++ ){
                Book book = bookList.getBook(i);
                if(book.getId().equals(id)){
                    break;//找到了
                }
            }
            if(i >= bookList.getSize()){
                //没找到
                return;
            }
            bookList.setBooks(i,bookList.getBook(bookList.getSize()-1));
            bookList.setSize(bookList.getSize() - 1);
            System.out.println("删除成功");
        }
    }
    //借阅
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.Book;
    import package_bookmanger.book.BookList;
    
    import java.util.Scanner;
    
    public class BorrowOperation implements IOperation{
        @Override
        public void work(BookList bookList) {
            System.out.println("借阅书籍");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要借阅书籍的编号");
            String id = scanner.next();
            for (int i = 0; i < bookList.getSize(); i++) {
                Book book = bookList.getBook(i);
                if(!book.getId().equals(id)){
                    continue;
                }
                //相等执行借书操作
                if(book.isBorrowed()){
                    System.out.println("这本书已经被借走了");
                    break;
                }
                book.setBorrowed(true);
                System.out.println("借阅成功");
            }
        }
    }
    //退出
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class ExitOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
            System.out.println("GoodBye");
            System.exit(0);
        }
    }
    //查找书籍
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.Book;
    import package_bookmanger.book.BookList;
    
    import java.util.Scanner;
    
    public class FindOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
            System.out.println("查找书籍");
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入查找的书名");
            String name = scanner.next();
            int count = 0;
            for (int i = 0;i < bookList.getSize();i++){
                Book book = bookList.getBook(i);
                if(book.getName().equals(name)){
                    System.out.println(book);
                    count++;
                }
            }
            if(count == 0){
                System.out.println("查无此书");
            }
        }
    }
    //打印所有书籍
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.BookList;
    
    public class PrintAllOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
            for (int i = 0; i < bookList.getSize(); i++) {
                System.out.println(bookList.getBook(i));
            }
            System.out.println("一共 " + bookList.getSize() + " 本书");
        }
    }
    //归还图书
    package package_bookmanger.Operation;
    
    import package_bookmanger.book.Book;
    import package_bookmanger.book.BookList;
    
    import java.util.Scanner;
    
    public class ReturnOperation implements IOperation {
        @Override
        public void work(BookList bookList) {
            System.out.println("归还书籍");
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入具体归还书籍的编号");
            String id = scanner.next();
            for (int i = 0; i < bookList.getSize(); i++) {
                Book book = bookList.getBook(i);
                if(!book.getId().equals(id)){
                    continue;
                }
                if(!book.isBorrowed()){
                    System.out.println("这本书已经被归还");
                    break;
                }
                book.setBorrowed(false);
                System.out.println("归还成功");
            }
        }
    }
    
    

    主程序:

    package package_bookmanger;
    
    import package_bookmanger.book.BookList;
    import package_bookmanger.user.Admin;
    import package_bookmanger.user.NormalUser;
    import package_bookmanger.user.User;
    
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            //程序的入口
            //1.准备好书籍信息数据
            BookList bookList = new BookList();
            //2.创建用户(多态)
            User user = login();
            // 3.进入主循环
            while (true){
                int choice = user.menu();
                user.doOperation(choice,bookList);
            }
        }
        public static User login(){
            System.out.println("请输入您的姓名");
            Scanner scanner = new Scanner(System.in);
            String name = scanner.next();
            System.out.println("请输入您的角色 (1 普通用户 2 管理员)");
            int role = scanner.nextInt();
            if(role == 1){
                return new  NormalUser(name);
            }else {
                return new Admin(name);
            }
        }
    }
    
    

    问题,切换 booklist构造器为空
    return new book 啥时候new,啥时候不new

    public static User login(){
            System.out.println("请输入您的姓名");
            Scanner scanner = new Scanner(System.in);
            String name = scanner.next();
            System.out.println("请输入您的角色 (1 普通用户 2 管理员)");
            int role = scanner.nextInt();
            if(role == 1){
                return new  NormalUser(name);
            }else {
                return new Admin(name);
            }
        }
    }
    
      public Book getBook(int index){
            return books[index];
        }
    
    展开全文
  • 利用RFID 读卡的设备 这个已经有了,现在需要的是设计C#界面和代码和小型的数据库存储。
  • 我想问一下各位大佬,vf的图书管理系统应该怎么做? 我不是计算机专业
  • Delphi图书管理系统.rar

    2019-07-10 11:01:27
    Delphi结合数据库编写实现的图书管理系统,完成图书信息的管理维护。存在以下问题待解决:1,用sql提取表中字段,并按某字段排序  解决办法:使用order by  ASC:升序(默认方式)  DESC:降序  如:select * ...
  • 现在一个图书管理系统,遇到问题了,麻烦各位大侠能不能给点意见。 /** * 图书预约 * @author Administrator * */ public class Reserve { private Integer reserveId; //id private Reader ...
  • 图书管理系统得有页面吧,页面我该怎么开发呢?于是你百度:前端入门,然后你就知道了,原来我使用 html js css就可以写一个页面出来了。于是乎你入门一下前端三剑客,开始上手写起了前端,写着写着,你觉得很麻烦,...
  • 自己的一个ASP图书管理系统的不怎么好,希望能对大家有点帮助吧
  • 图书管理系统 前言 ​ 马上年底了,对于即将毕业的学弟学妹来说,过完年应该是最忙的时候,既要为3-4月份的校园春季招聘准备,同时又要准备毕业设计。希望本文对这些即将毕业的学弟学妹们、以及刚入门java不久并...
  • 这几天又自己学了一点基础的php,然后写了一下基础的图书馆里系统网站源码 无java,纯php 很简单 跟我一样的新手可以玩一玩哈哈,大佬们求绕过 代码就百度云分享啦 纯手工 需要修改的地方应该只有一个地方,就是conn....
  • 在拿到这个项目的时候,首先是查阅了基于Python的图书管理系统可以怎么做,可以通过什么方式搭建,可以以什么样式展现。 据我目前了解到的信息,可以做成这样: 1、命令行形式运作,如输出“Hello World!"般,这个...
  • sqlconnection,sqlquery1这些组件,我连接数据库的时候是用对象编辑器里的属性进行连接的,在sqlconnection中指定了字符集utf8,有些人做的方法是利用代码连接的数据库,如果我用代码连接mysql数据库怎么做?...
  • VB+ACCESS图书管理系统

    2008-06-14 20:44:37
    一步一步教怎么做图书管理系统 解压后进入105395.htm 如解压不了,请发EMAIL至cui_com@163.com 不为赚分,只想给需要的人 不知道怎么重传资源,抱歉~
  • 是用vb+access开发的一个自己图书管理系统,直接运行即可,不知道怎么样,仅供参考。
  • 图书管理系统第二版

    2008-06-13 19:20:06
    学了MVC之后的,还是图书管理系统,感觉的不怎么样。有什么不完善的地方,欢迎大家指导.谢谢
  • 题目同上啦~妹纸我学渣一个。看了人家编的…不怎么懂,求大神解释下。896151657qq。希望大神帮帮忙,拜托拜托~

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 136
精华内容 54
关键字:

图书管理系统怎么做