图书管理系统之图书信息管理实现

图书信息管理与读者信息管理相似,共包括两部分,图书添加和图书查询与修改,图书信息添加要求正确输入图书的八项信息,并且ISBN编号唯一,实现过程中要将ISBN作为主键。下面看实现过程:

数据库中书籍:


添加书籍过程:


数据库内容增加:



图书的查询与修改:查询过程可以根据不同的条件查询,如ISBN,作者,出版社,图书名称等,默认将所有图书全部显示在列表中,输入查询条件后再表格中显示查询结果。

本模块用到标签面板,可以很方便的查询所需要的信息。修改过程输入ISBN编号后按回车键将在下方显示所有的图书信息,然后修改图书信息后所有内容就会更新。

图书查询:


图书信息修改:



添加图书源代码如下:AddBook.java

package pdsu.bbm.view;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import pdsu.bbm.dao.BookDao;
import pdsu.bbm.dao.BookTypeDao;
import pdsu.bbm.model.Book;
import pdsu.bbm.model.BookType;
public class AddBook extends JFrame implements ActionListener {

	private JPanel contentPane;
	private JLabel label_1;
	private JLabel lbll;
	private JLabel label_2;
	private JLabel label_3;
	private JLabel label_4;
	private JLabel label_5;
	JPanel centerpPanel;
	JButton button1, button2, button3;
	private JComboBox comboBox_1;
	Image icon = new ImageIcon("image/icon.png").getImage();
	private JTextField ISBNfiled;
	private JTextField publishField;
	private JTextField publishDateField;
	private JTextField publishTime;
	private JTextField unitPriceField;
	private JTextField bookNameField;
	private JTextField authorFiled;
	public static void main(String[] args) {
		new AddBook();
	}
	public AddBook() {
		setTitle("添加图书信息");
		setSize(555, 333);
		setIconImage(icon);
		setLocationRelativeTo(null);

		setTitle("添加图书信息");
		setSize(555, 334);
		setLocationRelativeTo(null);
		setVisible(true);
		centerpPanel = new JPanel();
		centerpPanel.setLayout(null);
		JLabel label1 = new JLabel("ISBN:");
		label1.setFont(new Font("宋体", Font.PLAIN, 20));
		label1.setBounds(71, 26, 95, 42);
		centerpPanel.add(label1);

		ISBNfiled = new JTextField();
		ISBNfiled.setBounds(120, 30, 110, 30);
		centerpPanel.add(ISBNfiled);
		ISBNfiled.setColumns(10);

		JLabel label = new JLabel("类  别:");
		label.setFont(new Font("宋体", Font.PLAIN, 20));
		label.setBounds(306, 30, 116, 35);
		centerpPanel.add(label);

		label_1 = new JLabel("书  名:");
		label_1.setFont(new Font("宋体", Font.PLAIN, 20));
		label_1.setBounds(50, 75, 154, 50);
		centerpPanel.add(label_1);

		lbll = new JLabel("作  者:");
		lbll.setFont(new Font("宋体", Font.PLAIN, 20));
		lbll.setBounds(306, 75, 137, 50);
		centerpPanel.add(lbll);

		label_2 = new JLabel("出版社:");
		label_2.setFont(new Font("宋体", Font.PLAIN, 20));
		label_2.setBounds(50, 130, 154, 50);
		centerpPanel.add(label_2);

		label_3 = new JLabel("出版日期:");
		label_3.setFont(new Font("宋体", Font.PLAIN, 20));
		label_3.setBounds(285, 135, 137, 50);
		centerpPanel.add(label_3);

		publishField = new JTextField();
		publishField.setColumns(10);
		publishField.setBounds(120, 143, 110, 30);
		centerpPanel.add(publishField);

		publishDateField = new JTextField();
		publishDateField.setColumns(10);
		publishDateField.setBounds(380, 143, 120, 30);
		centerpPanel.add(publishDateField);

		label_4 = new JLabel("印刷次数:");
		label_4.setFont(new Font("宋体", Font.PLAIN, 20));
		label_4.setBounds(28, 190, 154, 50);
		centerpPanel.add(label_4);

		publishTime = new JTextField();
		publishTime.setColumns(10);
		publishTime.setBounds(120, 203, 110, 30);
		centerpPanel.add(publishTime);

		label_5 = new JLabel("单  价:");
		label_5.setFont(new Font("宋体", Font.PLAIN, 20));
		label_5.setBounds(305, 194, 84, 42);
		centerpPanel.add(label_5);

		unitPriceField = new JTextField();
		unitPriceField.setColumns(10);
		unitPriceField.setBounds(380, 203, 120, 30);
		centerpPanel.add(unitPriceField);
		getContentPane().add(centerpPanel, BorderLayout.CENTER);

		bookNameField = new JTextField();
		bookNameField.setColumns(10);
		bookNameField.setBounds(120, 86, 110, 30);
		centerpPanel.add(bookNameField);

		authorFiled = new JTextField();
		authorFiled.setColumns(10);
		authorFiled.setBounds(380, 86, 120, 30);
		centerpPanel.add(authorFiled);

		List<BookType> rs = BookTypeDao.selectBookType();
		Iterator<BookType> iterator = rs.iterator();
		String[] AllTypeName = new String[rs.size()];
		int i = 0;
		while (iterator.hasNext()) {
			String typename = iterator.next().getTypename();
			AllTypeName[i] = typename;
			i++;
		}
		comboBox_1 = new JComboBox(AllTypeName);
		comboBox_1.setBounds(380, 30, 120, 30);
		comboBox_1.setFont(new Font("宋体", Font.PLAIN, 16));

		centerpPanel.add(comboBox_1);
		ButtonGroup group = new ButtonGroup();
		JPanel panel2 = new JPanel();
		panel2.setLayout(new FlowLayout());
		button1 = new JButton("添加");
		button1.setFont(new Font("宋体", Font.PLAIN, 20));

		button2 = new JButton("关闭");
		button2.setFont(new Font("宋体", Font.PLAIN, 20));
		button3 = new JButton("重置");
		button3.setFont(new Font("宋体", Font.PLAIN, 20));

		panel2.add(button1);
		panel2.add(button3);
		panel2.add(button2);
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		getContentPane().add(panel2, BorderLayout.SOUTH);

		setVisible(true);
	}

	@SuppressWarnings("unused")
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == button1) {
			String Isbn = ISBNfiled.getText().toString();

			String bookname = bookNameField.getText();
			String author = authorFiled.getText();
			String selectType = comboBox_1.getSelectedItem().toString();
			String publish = publishField.getText();
			String publishdate = publishDateField.getText();
			String time = publishTime.getText().trim();
			String price = unitPriceField.getText().trim();

			if (Isbn.equals("") || bookname.equals("") || author.equals("")
					|| selectType.equals("") || publish.equals("")
					|| publishdate.equals("") || time.equals("")
					|| price.equals("")) {
				JOptionPane.showMessageDialog(this, "请输入完整信息");
				return;
			} else {
				BookType bt = new BookType();
				Book book = new Book();
				book.setISBN(Isbn);
				book.setBookname(bookname);
				book.setAuthor(author);
				bt.setTypename(selectType);
				int m = 0;
				List<BookType> list = BookTypeDao
						.selectIdByTypename(selectType);
				Iterator<BookType> ite = list.iterator();
				while (ite.hasNext()) {
					m = ite.next().getId();
				}
				book.setTypeid(m + "");
				book.setPublish(publish);
				try {
					book.setPublishtime(Integer.parseInt(time));
					book.setUnitprice(Integer.parseInt(price));
				} catch (NumberFormatException e1) {
					e1.printStackTrace();
				}
				
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
					Date regDate = null;
					try {
						regDate =sdf.parse(publishdate);
					} catch (ParseException e1) {
						JOptionPane.showMessageDialog(this, "请输入正确的日期");
						publishDateField.setText("");
					}
					
					book.setPublishdate(regDate);
				if(regDate==null) return;
					
			     if (BookDao.selectBookByISBN(Isbn) != null) {
					JOptionPane.showMessageDialog(this, "该ISBN编号已存在");
					return;
				} else if (BookDao.insertBook(book) != 0) {
					JOptionPane.showMessageDialog(this, "添加成功");
				} else
					JOptionPane.showMessageDialog(this, "添加失败");
			}
		}
		if (e.getSource() == button3) {
			ISBNfiled.setText("");
			bookNameField.setText("");
			authorFiled.setText("");
			publishField.setText("");
			publishDateField.setText("");
			publishTime.setText("");
			unitPriceField.setText("");
		}
		if (e.getSource() == button2) {
			dispose();
			new MainWindow();

		}
	}

}


图书查询与修改源代码:BookSelectandModify.java
package pdsu.bbm.view;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.table.TableModel;
import pdsu.bbm.dao.BookDao;
import pdsu.bbm.dao.BookTypeDao;
import pdsu.bbm.model.Book;
import pdsu.bbm.model.BookType;

public class BookSelectandModify extends JFrame implements ActionListener {
	// 设置序列号
	private static final long serialVersionUID = 1L;
	private JTabbedPane jtabbedPane; // 标签面板
	// selectJP查询面板 select_conditionJP下拉列表面板 select_resultJP结果按钮面板updateJP修改面板
	// updateJP修改面板,bookJP中间面板 buttonJP2按钮面板
	private JPanel selectJP, select_conditionJP, select_resultJP, buttonJP1,
			bookJP, updateJP, buttonJP2;//
	private JTextField selectJTF, ISBNJTF, booknameJTF, authorJTF,
			printtimeJTF, publishJTF, publishdateJTF, unitpriceJTF;
	private JLabel ISBNJL, booknameJL, authorJL, categoryJL, printtimeJL,
			publishJL, publishdateJL, unitpriceJL;
	// 重点!
	private JTable jtable;// 定义表格
	private JComboBox choiceJCB, booktypeJCB;
	private JScrollPane jscrollPane;
	private JButton selectJB, exitJB, updateJB, resetJB;// 查询按钮,退出按钮,修改按钮,关闭按钮
	private TableModel getSelect;
	private String[] title = { "ISBN", "图书序列", "图书名称", "作者", "     出版社      ",
			"出版日期", "印刷次数", "单价" };
	Image icon = new ImageIcon("image/icon.png").getImage();

	public BookSelectandModify() {
		super();
		setIconImage(icon);
		setTitle("图书查询与修改");
		setBounds(100, 100, 555, 400);
		setLocationRelativeTo(null);
		// JTabbedPane选项卡
		jtabbedPane = new JTabbedPane();
		add(jtabbedPane);
		selectJP = new JPanel();
		selectJP.setLayout(new BorderLayout());
		jtabbedPane.add("图书信息查询", selectJP);

		// 查询条件面板
		select_conditionJP = new JPanel();
		choiceJCB = new JComboBox();
		String array[] = { "ISBN", "图书名称", "图书序列", "作者", "出版社","所有" };// 设置为一维数组
		for (int i = 0; i < array.length; i++) {
			choiceJCB.addItem(array[i]);
		}
		select_conditionJP.add(choiceJCB);
		selectJTF = new JTextField(20);
		select_conditionJP.add(selectJTF);
		selectJP.add(select_conditionJP, BorderLayout.NORTH);
		// 查询结果面板
		select_resultJP = new JPanel();
		BookDao dao = new BookDao();
		List<Book> list = dao.selectBook();
		jtable = new JTable(getSelect(list), title);

		// !设置表格大小不变
		jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		// !设置列宽
		jtable.getColumnModel().getColumn(4).setPreferredWidth(175);
		jscrollPane = new JScrollPane(jtable);// 把表格加入滚动面板
		// 显示滚动面板边框
		jscrollPane.setPreferredSize(new Dimension(450, 170));
		select_resultJP.add(jscrollPane);
		selectJP.add(select_resultJP, BorderLayout.CENTER);
		// 查询按钮面板
		buttonJP1 = new JPanel();
		selectJB = new JButton("查询");
		selectJB.setFont(new Font("宋体", Font.PLAIN, 20));

		selectJB.addActionListener(this);
		buttonJP1.add(selectJB);
		exitJB = new JButton("退出");
		exitJB.setFont(new Font("宋体", Font.PLAIN, 20));
		exitJB.addActionListener(this);
		buttonJP1.add(exitJB);
		selectJP.add(buttonJP1, BorderLayout.SOUTH);
		// 信息修改页面
		updateJP = new JPanel();
		updateJP.setLayout(new BorderLayout());
		jtabbedPane.addTab("图书信息修改", updateJP);
		bookJP = new JPanel();
		final GridLayout gridLayout = new GridLayout(8, 2);
		// 设置边框间的距离
		gridLayout.setVgap(8);
		gridLayout.setHgap(8);
		bookJP.setLayout(gridLayout);
		ISBNJL = new JLabel("ISBN:");
		ISBNJL.setFont(new Font("宋体",Font.PLAIN,20));
		ISBNJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(ISBNJL);
		ISBNJTF = new JTextField(20);
		ISBNJTF.addActionListener(this);
		bookJP.add(ISBNJTF);
		categoryJL = new JLabel("类  别:");
		categoryJL.setFont(new Font("宋体",Font.PLAIN,20));
		categoryJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(categoryJL);
		// 下拉列表
		List<BookType> list1 = BookTypeDao.selectBookType();
		Iterator<BookType> it = list1.iterator();
		String ty[] = new String[list1.size()];
		int i = 0;
		booktypeJCB = new JComboBox();
		while (it.hasNext()) {
			ty[i] = it.next().getTypename();
			booktypeJCB.addItem(ty[i]);
			i++;
		}

		bookJP.add(booktypeJCB);

		booknameJL = new JLabel("书  名:");
		booknameJL.setFont(new Font("宋体",Font.PLAIN,20));
		booknameJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(booknameJL);
		booknameJTF = new JTextField();
		booknameJTF.setColumns(20);
		bookJP.add(booknameJTF);

		authorJL = new JLabel("作  者:");
		authorJL.setFont(new Font("宋体",Font.PLAIN,20));
		authorJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(authorJL);
		authorJTF = new JTextField();
		authorJTF.setColumns(20);
		bookJP.add(authorJTF);

		publishJL = new JLabel("出版社:");
		publishJL.setFont(new Font("宋体",Font.PLAIN,20));
		publishJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(publishJL);
		publishJTF = new JTextField();
		bookJP.add(publishJTF);

		publishdateJL = new JLabel("出版日期:");
		publishdateJL.setFont(new Font("宋体",Font.PLAIN,20));
		publishdateJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(publishdateJL);
		publishdateJTF = new JTextField();
		publishdateJTF.setHorizontalAlignment(SwingConstants.LEFT);
		bookJP.add(publishdateJTF);

		printtimeJL = new JLabel("印刷次数:");
		printtimeJL.setFont(new Font("宋体",Font.PLAIN,20));
		printtimeJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(printtimeJL);
		printtimeJTF = new JTextField();
		bookJP.add(printtimeJTF);

		unitpriceJL = new JLabel("单  价:");
		unitpriceJL.setFont(new Font("宋体",Font.PLAIN,20));
		unitpriceJL.setHorizontalAlignment(SwingConstants.CENTER);
		bookJP.add(unitpriceJL);
		unitpriceJTF = new JTextField();
		bookJP.add(unitpriceJTF);
		// 按钮面板
		// 按钮面板设计
		buttonJP2 = new JPanel();
		updateJB = new JButton("修改");
		updateJB.setFont(new Font("宋体", Font.PLAIN, 20));

		updateJB.addActionListener(this);
		resetJB = new JButton("关闭");
		resetJB.setFont(new Font("宋体", Font.PLAIN, 20));

		resetJB.addActionListener(this);
		buttonJP2.add(updateJB);
		buttonJP2.add(resetJB);
		updateJP.add(bookJP, BorderLayout.CENTER);
		updateJP.add(buttonJP2, BorderLayout.SOUTH);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	// 将查询表格加入面板
	private Object[][] getSelect(List<Book> list) {
		// TODO Auto-generated method stub
		Object[][] objects = new Object[list.size()][title.length];
		for (int i = 0; i < list.size(); i++) {
			Book book = list.get(i);
			objects[i][0] = book.getISBN();
			objects[i][1] = book.getTypeid();// 图书序列
			objects[i][2] = book.getBookname();// 图书名称
			objects[i][3] = book.getAuthor();// 图书作者
			objects[i][4] = book.getPublish();// 出版社
			objects[i][5] = book.getPublishdate();// 出版日期
			objects[i][6] = book.getPublishtime();// 印刷次数
			objects[i][7] = book.getUnitprice();// 单价
		}

		return objects;

	}
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==ISBNJTF){
			String isbn=ISBNJTF.getText();
			String typename=null;
			String id=BookDao.selectBookByISBN(isbn).getTypeid();
			
			typename=BookTypeDao.selectById(id);
			System.out.println(typename);
			booktypeJCB.setSelectedItem(typename);
			booknameJTF.setText(BookDao.selectBookByISBN(isbn).getBookname());
			authorJTF.setText(BookDao.selectBookByISBN(isbn).getAuthor());
			publishJTF.setText(BookDao.selectBookByISBN(isbn).getPublish());
			publishdateJTF.setText(BookDao.selectBookByISBN(isbn).getPublishdate()+"");
			printtimeJTF.setText(BookDao.selectBookByISBN(isbn).getPublishtime()+"");
			unitpriceJTF.setText(BookDao.selectBookByISBN(isbn).getUnitprice()+"");
			
		}
		if (e.getSource() == selectJB) {// 按照ISBN编码查找
			int r = choiceJCB.getSelectedIndex();
			if (r == 0) {
				String name = selectJTF.getText().trim();
				// 强制转换为线性表类型
				List<Book> list = new ArrayList<Book>();
				Book book = BookDao.selectBookByISBN(name);
				if (book == null) {
					JOptionPane.showMessageDialog(this, "该编码不存在!");
				} else {
					list.add(book);
					Object[][] data = getSelect(list);
					jtable = new JTable(data, title);
					jtable.getColumnModel().getColumn(4).setPreferredWidth(175);
					jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

					jscrollPane.setViewportView(jtable);

				}
			}

			if (r == 1) {// 根据图书名称查询信息
				String name = selectJTF.getText().toString();
				List<Book> list = BookDao.selectBookByName(name);
				// 判断线性表是否为空
				if (list == null || list.size() == 0) {
					JOptionPane.showMessageDialog(this, "该图书不存在!");
				} else {
					Object[][] data = getSelect(list);
					jtable = new JTable(data, title);
					tianjia();
				}
			}
			if (r == 2) {// 根据图书序列查询信息
				String name = selectJTF.getText().toString();
				List<Book> list = BookDao.selectBookByType(name);
				// 判断线性表是否为空
				if (list == null || list.size() == 0) {
					JOptionPane.showMessageDialog(this, "该图书不存在!");
				} else {
					Object[][] data = getSelect(list);
					jtable = new JTable(data, title);
					tianjia();
				}
			}
			if (r == 3) { // 根据作者进行查找
				String name = selectJTF.getText().toString();
				// 根据作者进行查找
				List<Book> list = BookDao.selectBookByAuthor(name);
				// 判断线性表是否为空
				if (list == null || list.size() == 0) {
					JOptionPane.showMessageDialog(this, "该图书不存在!");
				} else {
					Object[][] data = getSelect(list);
					jtable = new JTable(data, title);
					tianjia();
				}
			}
			if (r == 4) {// 根据出版社进行查找
				String name = selectJTF.getText().toString();
				List<Book> list = BookDao.selectBookByPublish(name);
				if (list == null || list.size() == 0) {
					JOptionPane.showMessageDialog(this, "该图书不存在!");
				} else {
					Object[][] data = getSelect(list);
					jtable = new JTable(data, title);
					tianjia();

				}
			}
			if(r==5){
				List<Book> list =BookDao.selectBook();
			}
		}
		if (e.getSource() == updateJB) {
			String ISBN = ISBNJTF.getText().trim();
			String typename = ((String) booktypeJCB.getSelectedItem()).trim();
			String id = BookTypeDao.selectByTypename(typename);
			String bookname = booknameJTF.getText();
			String author = authorJTF.getText();
			String publish = publishJTF.getText();
			String publishdate = publishdateJTF.getText();

			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Date regDate = null;
			try {
				regDate = sdf.parse(publishdate);
			} catch (Exception e2) {
				e2.printStackTrace();
				JOptionPane.showMessageDialog(this, "请输入正确的日期格式!");
			}
			if (regDate == null)
				return;
			int publishtime = Integer.parseInt(printtimeJTF.getText());
			int unitprice = Integer.parseInt(unitpriceJTF.getText());
			// 封装对象
			Book book = new Book();
			book.setISBN(ISBN);
			book.setTypeid(id);
			book.setBookname(bookname);
			book.setAuthor(author);
			book.setPublish(publish);
			book.setPublishdate(regDate);
			book.setPublishtime(publishtime);
			book.setUnitprice(unitprice);
			book.setTypename(typename);
			int result = BookDao.update(book);
			List<Book> list2 = new ArrayList<Book>();
			list2.add(book);

			// System.out.println(list2);

			if (result == 1) {
				JOptionPane.showMessageDialog(this, "修改成功!");
				BookDao bk=new BookDao();
				List<Book> list =bk.selectBook();
				jtable =new JTable(getSelect(list),title);
				tianjia();
				
			} else {
				JOptionPane.showMessageDialog(this, "修改失败!");
			}
		}
		if (e.getSource() == resetJB) {
			dispose();
			new MainWindow();
		}
		if (e.getSource() == exitJB) {
			dispose();
			new MainWindow();
		}
	}

	private void tianjia() {
		jtable.getColumnModel().getColumn(4).setPreferredWidth(175);
		jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		jscrollPane.setViewportView(jtable);

	}

	public static void main(String[] args) {
		new BookSelectandModify();

	}
}



  • 0
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在系统中,读者创建账户,账户内存储读者个人的详细信息,读者可以凭借借书卡号:readerid在系统进行图书的查询、借阅、还书操作,完成借书的同时要修改相应图书信息的状态、读者信息中的已借数量、在借阅表中添加书籍、 读者信息管理:读者信息的修改 读者注销账户跳回首页 图书信息管理:包括图书信息添加 查询 修改功能。管理员登录成功后,可以浏览所有图书信息和搜索特定图书的信息---搜索出来的可以进行添加图书、删除图书以及修改图书信息。 图书借阅管理:包括图书借阅和归还功能。 图书借阅功能:先输入读者编号,然后输入要借阅图书的信息,记录系统当前时间即借阅时间borrowdate和归还时间returndate 图书归还功能:先输入读者编号,然后输入要还图书的信息,记录系统当前时间即归还时间returndate; 删除借阅信息,更改管理日志表whether 用户修改个人信息——实现功能 用户通过点击右上角用户名,跳转到个人页面,个人页面显示个人的详细信息,点击修改按钮跳转到修改页面,修改页面回显个人详细信息。修改后点击确定。 成功——弹出成功信息,跳回个人页面并更新列表 失败——弹出失败信息,跳回个人页面。 用户查询信息——实现功能 用户通过点击右上角用户名,跳到个人页面,个人页面显示个人的详细信息(只显示不修改) 三、功能需求 功能划分:该系统主要有以下功能:浏览功能,查询功能,添加功能,修改功能,删除功能。 功能描述详解:①浏览 列出当前数据库中的图书信息、读者信息、借阅信息和还书信息(管理员日志)、 ②查 按照图书编号进行查询书籍信息、读者编号进行查询读者信息、借还界面查询书目与读者匹配信息 ③增 添加图书和读者记录、 借书和还书记录(管理日志) ④改 修改书目和读者信息及管理员信息、 读者借阅和归还图书在管理员日志上的变动及在图书信息表上的变动 ⑤删 删除书目和读者信息及管理员信息 ⑥各种弹框制定 ⑦运用CSS对页面进行显示处理 ⑧网页布局采用封面型布局
### 回答1: 图书管理系统可以使用C语言实现,可以将图书信息保存在文件中。具体实现步骤如下: 1. 定义图书信息的结构体,包括图书编号、书名、作者、出版社、出版日期、价格等信息。 2. 定义文件操作函数,包括打开文件、读取文件、写入文件、关闭文件等操作。 3. 实现图书信息的录入、查询、修改、删除等功能,可以使用菜单方式进行选择。 4. 在程序启动时,先读取文件中的图书信息,保存到内存中,程序结束时再将内存中的图书信息写入文件中。 5. 可以添加一些其他功能,如图书借阅、归还等。 总之,使用C语言实现图书管理系统,可以方便地管理图书信息,提高图书管理效率。 ### 回答2: 图书管理系统是一个涉及到多个功能模块的程序,其中一个非常重要的模块就是图书信息的管理。而对于一个拥有大量图书的机构来说,如何对这些图书信息进行高效的管理就显得尤为关键。而图书管理系统c语言实现图书信息用文件保存,则是一个非常常见且实用的方法。 首先,c语言作为一种高效、灵活的编程语言,其文件操作功能非常强大,可以轻松地实现图书信息的读取、修改、保存等操作。其一般的文件操作流程如下: 1. 打开文件 打开文件是文件操作的第一步。使用fopen函数可以打开一个文件,并指定打开方式(读、写、附加等)。例如: FILE *fp; // 定义文件指针 fp = fopen("books.dat", "r"); // 打开books.dat文件,以只读方式 2. 读取文件 读取文件是指从文件中读取数据。使用fread函数可以从文件中读取指定大小的数据,例如: fread(&book, sizeof(Book), 1, fp); // 从文件fp中读取1个大小为Book的数据到book结构体中 3. 写入文件 写入文件是指向文件中写入数据。使用fwrite函数可以将指定大小的数据写入到文件中,例如: fwrite(&book, sizeof(Book), 1, fp); // 将book结构体中的数据写入到文件fp中 4. 关闭文件 关闭文件是文件操作的最后一步。使用fclose函数可以关闭文件,例如: fclose(fp); // 关闭文件fp 通过以上四个步骤,我们可以轻松地实现图书信息的读取、修改、保存等操作,从而完成图书管理系统的所有功能。同时,将图书信息保存在文件中,也可以方便多台设备之间共享数据,实现分布式管理。 总之,用c语言实现图书管理系统,将图书信息用文件保存是非常实用的方法,不仅可以方便管理图书信息,还可以实现多设备的数据共享。 ### 回答3: 图书管理系统是一个非常常用的信息管理系统。在现代社会中,它被广泛应用于图书馆、学校以及其他各种机构。借助它,我们可以有效地管理图书信息,方便读者查询、借阅图书。而C语言是一个非常流行的编程语言,在实现图书管理系统方面也有很大的优势。 在图书管理系统中,我们需要用文件保存图书信息。C语言中可以使用文件操作来实现。我们可以先定义一个结构体,用于存储图书的各种信息。结构体可以包括图书的编号、名称、作者、出版社、ISBN码、价格等。 然后我们可以使用文件操作函数来将这些信息写入文件中。例如,我们可以使用fopen()函数来打开一个文件,使用fprintf()函数向文件中写入数据,使用fclose()函数关闭文件。 在读取文件中的图书信息时,我们可以使用fscanf()函数来读取文件中的数据,并将其存入结构体变量中。读取文件中所有的数据后,我们可以使用单链表来存储图书信息。每当需要添加、删除、修改某本图书时,我们只需要操作链表即可。操作链表的过程中,还可以调用文件操作来实现对文件中图书信息的增删改查。 需要注意的是,在文件操作时,应该先检查文件是否存在。如果文件不存在,就需要创建一个文件,否则会导致程序崩溃。 总之,C语言实现图书管理系统需要先定义好数据结构,在文件操作时要注意对文件的读写权限和错误处理。掌握了这些基本的知识,就可以着手开始实现了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值