第一篇:数据库课程设计 图书管理系统(精选)
课 程 设 计
软件工程与数据库 课程设计 任务书
学院名称:
数学与计算机学院
课程代码:_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.机械工业出版社出版
指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日
第二篇:图书管理系统数据库设计
数据库设计.................................................................2 3.1 专门术语的定义...................................................2 3.1.1 系统中常用的术语(或使用频率较高的术语).........................2 3.1.2 表格定义及规范.................................................2 3.1.2.1数据约定.....................................................2 3.1.2.2表和表字段命名规范:.........................................3 3.2 数据设计.........................................................3 3.2.1 数据流程图设计.................................................3 3.2.2实体关系结构设计...............................................4 3.3安全保密设计.....................................................6 3.3.1 逻辑上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格与功能模块相关性分析.........................................7 3.5 表格定义.........................................................7 数据库设计
3.1 专门术语的定义
暂无
3.1.1 系统中常用的术语(或使用频率较高的术语)暂无
3.1.2 表格定义及规范 3.1.2.1数据约定
所有数据项都用英文、汉语拼音或缩写表示,数据库名称除外。
所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段: 字段名说明类型默认值 CreatorID创建者int CreatedTime创建时间DatetimeNULL 字符集采用 UTF-8,请注意字符的转换。
所有数据表第一个字段都是系统内部使用自动序列主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。
除特别说明外,所有字符串字段都采用varchar(50)类型,(无论汉字还是英文,都算一个字符)。
除特别说明外,所有小数的字段都采用 decimal(18,2)的形式表达。
除特别说明外,所有日期格式都采用 datetime 格式(根据需要提取时间格式); 除特别说明外,所有整形都采用 bigint 格式。除特别说明外,所有字段默认都设置为 null。3.1.2.2表和表字段命名规范:
命名规则约束的范围包括:数据库的命名、表的命名及字段的命名。数据库相关的命名规则采用与通常的编程的变量命名规则原则一致,具体要求如下: 1)字段名及表名为典型的名词结构; 2)中文名称要求语言精练、文法严谨;
3)望文知意、易懂易用,禁止采用如:A002这种命名;
4)主体采用拼音字母的首写字母拼写构成,基于惯常法可适度采用无词义歧义性的英文命名;
5)长度不少于3个字母,不大于12个字母;
6)在对于拼音首字母类似的字段和表,为区别,添加下划线和数字如男性人数:NXRS,女性人数:NXRS_2。
3.2 数据设计
绘制数据流程图的目的是为了方便开发人员与用户的交流,以及为系统的设计提供依据。数据流程图的绘制过程通常采用自顶向下,逐层分解,直到功能细化为止,形成若干层次的数据流程图。3.2.1 数据流程图设计
0层数据流图
1层数据流图
3.2.2实体关系结构设计
图书实体关系
读者实体关系
图书借阅关系实体
用户实体关系
图书类别实体关系
3.3安全保密设计
3.3.1 逻辑上的安全保密
1、系统对非法使用者的安全保密处理措施
2、系统对正常使用者的安全保密处理措施
3、系统对管理员的安全保密 3.3.2 物理上的安全保密
1、数据库系统异常时的还原处理措施
2、设备遭异常毁坏时的安全防护措施
3、数据参数做到及时更新,保证系统正常运行
3.4 表格与功能模块相关性分析
3.5 表格定义
a.图书信息表
b.读者信息表
c.借阅表
d.管理员_书籍
e.管理员_学生
第三篇:图书管理系统数据库源代码
图书管理系统数据库源代码
//创建工程及设计主界面
public class Main extends JFrame { private static final JDesktopPane {
DESKTOP_PANE=new JDesktopPane();
//桌面窗体
} public static void main(String[] args)
//入口方法
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//设置系统界面外观
new BookLogin();
//登录窗口
}
catch(Exception ex)
{
ex.printStackTrace();
} } public static void addIFame(JInternalFrame iframe)
//添加子窗体的方法
{
DESKTOP_PANE.add(iframe);
//新增子窗体
} public Main(){
super();
//设置“关闭”按钮处理事件
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//创建工具栏
Toolkit tool=Toolkit,getDefaultToolkit();
//获得屏幕大小
Dimension screenSize=tool.getScreenSize();
setSize(800,600);
//设置窗体大小
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2;//设置窗体位置
setTitle(“图书管理系统”);
//设置窗体标题
JMenuBar menuBar=createMenu();
//创建菜单栏
setJMenuBar(menuBar);
//设置菜单栏
JToolBar toolBar=createToolBar();
//创建工具栏的方法
getContentPane(),add(toolBar,BorderLayout.NORTH);
//设置工具栏
final JLable lable=new JLable();
//创建一个标签,用来显示图片
lable.setBounds(0,0,0,0);
//设置窗体的大小和位置
lable.setIcon(null);
//窗体背景
DESKTOP_PANE.addComponentListener(new ComponentAdapter())
{
public void componentResized(final ComponentEvent e)
{
Dimension size=e.getComponent().getSize();
//获得组建大小
lable.setSize(e.getComponent().getSize());
//设置标签大小
lable.setText(“”);
//设置标签文本,设置窗口背景
}
}
//将标签添加到桌面窗体
DESKTOP_PANE.add(lable,new Integer(Integer.MIN_VALUE));
getContentPane().add(DESKTOP_PANE);
//将桌面窗体添加到主窗体中
} } private JToolBar createToolBar()
//创建工具栏的方法 { JToolBar toolBar=new JToolBar();
//初始化工具栏
toolBar.setFloatable(false);
//设置是否可以移动工具栏
toolBar.setBorder(new BevelBorder(BevelBorder.RAIZED));
//设置边框
//图书信息添加按钮
JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon=new ImageIcon(Main.class.getResource(“/bookAddtb.jpg”));//添加菜单栏图标
bookAddButton.setIcon(icon);
//设置按钮图标
bookAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookAddButton);
//添加到工具栏中
JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);
//图书信息修改按钮
ImageIcon bookmodiicon=Icon.add(“bookModiAndDeltb.jpg”);
//创建图表方法
bookModiAndDelButton.setIcon(bookmodiicon);
//设置按钮图标
bookModiAndDelButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookModiAndDelButton);
//添加到工具栏
JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);
//图书类别添加按钮
ImageIcon bookTypeAddicon=Icon.add(“bookTypeAddtb.jpg”);
//创建图标方法
bookTypeAddButton.setIcon(bookTypeAddicon);
//设置按钮图标
bookTypeAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookTypeAddButton);
//添加到工具栏
JButton bookBorrowButton=new JButton(MenuActions.BORROW);
//图书借阅按钮
ImageIcon bookBorrowicon=Icon.add(“bookBorrowtb.jpg”);
//创建图标方法
bookBorrowButton.setIcon(bookBorrowicon);
//设置按钮图标
bookBorrowButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookBorrowButton);
//添加到工具栏
JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);
//新书订购按钮
ImageIcon bookOrdericon=Icon.add(“bookOrdertb.jpg”);
//创建图标方法
bookOrderButton.setIcon(bookOrdericon);
//设置按钮图标
bookOrderButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookOrderButton);
//添加到工具栏
JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK);
//验收新书按钮
ImageIcon bookCheckicon=Icon.add(“newbookChecktb.jpg”);
//创建图标方法
bookCheckButton.setIcon(bookCheckicon);
//设置按钮图标
bookCheckButton.setHideActionText(true);
//显示提示文本
toolBar.add(bookCheckButton);
//添加到工具栏
JButton readerAddButton=new JButton(MenuActions.READER_ADD);
//读者信息添加按钮
ImageIcon readerAddicon=Icon.add(“readerAddtb.jpg”);
//创建图标方法
readerAddButton.setIcon(readerAddicon);
//设置按钮图标
readerAddButton.setHideActionText(true);
//显示提示文本
toolBar.add(readerAddButton);
//添加到工具栏
JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);
//读者信息修改按钮
ImageIcon readerModiAndDelicon=Icon.add(“readerModiAndDeltb.jpg”);
//创建图标方法
readerModiAndDelButton.setIcon(readerModiAndDelicon);
//设置按钮图标
readerModiAndDelButton.setHideActionText(true);
//显示提示文本
toolBar.add(readerModiAndDelButton);
//添加到工具栏
JButton ExitButton=new JButton(MenuActions.EXIT);
//退出系统按钮
ImageIcon Exiticon=Icon.add(“exittb.jpg”);
//创建图标方法
ExitButton.setIcon(Exiticon);
//设置按钮图标
ExitButton.setHideActionText(true);
//显示提示文本
toolBar.add(ExitButton);
//添加到工具栏
return toolBar;} public class Business { protected static String dbClassName=“com.mysql.jdbc.Driver”;
//数据库驱动类
protected static String dbUr1=“jdbc:mysql://localhost/ts”;
//连接URL protected static String dbUser=“root”;
//数据库用户名
protected static String dbpwd=“root”;
//数据库密码
private static Connection conn=null;
//数据库连接对象,初值为null public Business(){
try
{
if(coon==null)
//连接对象为空
{
Class.forName(dbClassName);
//加载驱动类信息
conn=DriverManager.getConnection(dbUr1,dbUser,dbPwd);
//建立连接对象
}
}
catch(Exception ee)
{
ee.printStackTrace();
} } public static ResultSet executeQuery(String sql)
//执行查询方法
{
try
{
//如果连接对象为空,则重新调用构造方法
if(conn==null)
{
new Business();
return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
//执行查询
}
}
catch(SQLException e)
{
e.printStackTrace();
return null;
//返回null值
}
finally
{} } public static int executeUpdata(String sql)
//更新方法
{
try
{
if(conn==null)
{
new Business();
//如果连接对象为空,则重新调用构造方法
return conn.createStatement().executeUpdate(sql);//执行更新
}
}
catch(SQLException e)
{
e.printStackTrace();
return-1;
}
finally
{} } public static void close()
//关闭方法 {
try
{
conn.close();
//关闭连接对象
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
conn=null;
//设置连接对象为null值
} } }
//为数据库添加对应的类 public class BookInfo { private String Book_id;
//图书编号
private String typeid;
//类别编号
private String writer;
//作者
private String translator;//译者
private String publisher;
//出版社
private Date date;
//出版日期
private Double price;
//图书单价
private String getBookname;//图书名称
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public Date getDate(){
return date;} public void setDate(Date date){
this.date=date;} public string getBook_id()
{ return Book_id;} public void setBook_id(String Book_id){ this.Book_id=Book_id;} public Double getPrice(){ return price;} public void setprice(Double price){ this.price=price;} public String getPublisher(){ return Publisher;} public void setPublisher(String publisher){ this.Publisher=Publisher;} public String getTranslator(){ return translator;} public void setTranslator(String translator){ this.translator=translator;} public String getTypeid(){ return typeid;} public void setTypeid(String typeid){ this.typeid=typeid;} public String getWriter(){ return writer;} public void setWriter(String writer){
this.writer=writer;} } public class BookType
//图书列表信息类 { private String id;
//图书类别编号
private String typeName;
//图书类别名称
private String days;
//可解天数
private String fk;//每罚款金额
public String getFk(){
return fk;} public void setFk(String fk){
this.fk=fk;} public String getDays(){
return days;} public void setDays(String days){
this.days=days;} public string getId(){
return id;} public void setId(String id){
this.Bid=id;} public String getTypeName(){
return typeName;} public void setTypeName(String typeName){
this.typeName=typeName;} } public class Order
//图书订单信息类 {
private String Book_id;
//图书编号 private Date date;
//下单时间 private String number;
//图书数量 private String operator;//操作员
private String checkAndAccept;
//是否收到货 private String zk;
//图书折扣 public String getcheckAndAccept(){ return checkAndAccept;} public void setcheckAndAccept(String checkAndAccept){ this.checkAndAccept=checkAndAccept;} public Date getDate(){ return date;} public void setDate(Date date){ this.date=date;} public string getBook_id(){ return book_id;} public void setBook_id(String book_id){ this.book_id=book_id;} public String getNumber(){ return number;} public void setNumber(String number){ this.number=number;} public String getOperator(){ return operator;} public void setOperator(String operator){
this.operatorr=operator;
} public String getZk(){
return zk;} public void setZk(String Zk){
this.zk=zk;} } public class Operater { private String id;
//操作员编号
private String name;
//操作员用户名
private String grade;
//操作员等级
private String password;//操作员密码
private String type;
//出版社
public String getType(){
return type;} public void setType(String type){
this.type=type;} public string getGrade(){
return grade;} public void setGrade(String grade){
this.grade=grade;} public String getId(){
return id;} public void setId(String id){
this.id=id;} public String getName(){
return name;} public void setName(String name){
this.name=name;} public String getPassword(){
return password;} public void setPassword(String password){
this.password=password;} } public class Borrow
//书籍借阅信息类 { private int id;
//借阅编号
private String book_id;
//图书编号
private String reader_id;
//读者编号
private String num;
//借书数量
private String borrowDate;
//借书日期
private String backDate;
//应还日期
private String Bookname;//图书名称
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public string getBackDate(){
return backDate;} public void setBackDate(String backDate){
this.backDate=backDate;} public string getBorrowDate(){
return borrowDate;} public void setBorrowDate(String borrowDate){
this.borrowDate=borrowDate;} public String getNum(){
return num;} public void setNum(String num){
this.num=num;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;} public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;} public int getId(){
return id;} public void setId(Int id){
this.id=id;} } public class Back
//图书归还信息类 { private String book_id;
//图书编号
private String bookname;
//图书名称
private String operatorId;
//操作员编号
private String borrowDate;//图书借阅时间
private String backDate;
//图书归还时间 private String readerName;
//读者姓名 private String reader_id;//读者编号 private int typeId;private int id; public int getId(){ return id;} public void setId(int id){ this.id=id;} public int getTypeId(){ return typeid;} public void setTypeId(int typeid){ this.typeId=typeId;} public string getBackDate(){ return backDate;} public void setBackDate(String backDate){ this.backDate=backDate;} public String getBookname(){ return bookname;} public void setBookname(String bookname){ this.bookname=bookname;} public string getBorrowDate(){ return borrowDate;} public void setBorrowDate(String borrowDate){ this.borrowDate=borrowDate;} public String getOperatorId(){
return operatorId;} public void setOperatorId(String operatorId){
this.operatorId=operatorId;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;}
public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;}
public String getReaderName(){
return readerName;} public void setReaderName(String readerName){
this.readerName=readerName;} }
//系统登录模块设计
public class BookLogin extends JFrame { private static final Operater Type=null;
//人员类型
private static Operater user;
//用户名
private JPasswordField password;private JTextField username;private JButton login;private JButton reset;public BookLogin(){
super();
final BorderLayout borderLayout=new BorderLayout();
//创建布局管理器
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置“关闭”按钮处理事件
borderLayout.setVgap(10);
//设置组件间的垂直关系
getContentPane().setLayout(borderLayout);
//使用布局管理器
setTitle(“图书管理系统登录”)
//设置窗体标题
Toolkit tool=Toolkit.getDefaultToolkit();
//获得默认的工具箱
Dimension screenSize=tool.getScreenSize();//获得屏幕的大小
setSize(285,194);
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);//设置窗体位置
final JPanel mainPanel=new JPanel();
//创建主面板
mainPanel.setLayout(new BorderLayout());
//设置边框布局
mainPanel.setBorder(new EmptyBorder(0,0,0,0))
//设置边框为0
getContentPane().add(mainPanel);
//在窗体中加入主面板
final JLabel imageLabel=new JLabel;
//创建一个标签,用来显示图片
ImageIcon loginIcon=Icon.add(“login.jpg”);
//创建一个图像图标
imagelabel.setIcon(loginIcon);
//设置图片
imageLabel.setOpaque(true);
//设置绘制其边界内的所有像素
imageLabel.setBackground(Color.GREEN);
//设置背景颜色
imageLabel.setpreferredSize(new Dimension(260,60));//设置标签大小
mainPanel.add(imageLabel,BorderLayout.NORTH);
//添加标签到主面板
final JPanel centerPanel=new JPanel();
//添加一个中心面板
final GridLayout gridLayout=new GridLayout(2,2);//创建网络布局管理器
gridLayout.setHgap(5);
//设置组件之间平行的距离
gridLayout.setVgap(20);
//设置组件之间垂直的距离
centerPanel.setLayout(gridLayout);
//使用布局管理器
mainPanel.add(centerPanel);
//添加到主桌面
final JLabel userNamelabel=new JLabel();
//创建一个标签
userNameLabel.setHorizontalAlignment(SwingConstants.CENTER);//设置对齐方式
userNameLabel.setPreferredSize(new Dimension(0,0));
//设置组件大小
userNameLabel.setMinimumSize(new Dimension(0,0));
//设置组件最小的大小
centerPanel.add(userNameLabel);
//添加到中心面板
userNameLabel.setText(“用
户
名:”);
//设置标签文本
username=new JTextField(20);
//创建文本框
username.setPreferredSize(new Dimension(0,0));
//设置组件大小
centerPanel.add(username);
//添加到中心面板
final JLabel passwordLabel=new JLabel();
//创建一个标签
passwordLabel.setHorizontalAlignment(SwingConstants.CENTER);
//设置对齐方式
centerPanel.add(passwordLabel);
//添加到中心面板
passwordLabel.setText(“密
码:”);
//设置标签文本
password=new JPasswordField(20);
//创建密码框
password.setDocument(new Document(6));
//设置密码长度为6
password.addKeyListener(new KeyAdapter()
//监听密码框
{
public void keyPressed(final keyEvent e)
//监听键盘案件事件
{
if(e.getKeyCode()==10)
//如果按了回车键
{
login.doClick();
//进行登录
}
}
})
centerPanel.add(password);
//添加到中心面板
final JPanel southPanel=new JPanel;//新增一个底部面板
mainPanel.add(southPanel,BorderLayout.SOUTH);
//添加到主面板中
login=new JButton();
//创建按钮组件
login.addActionListener(new BookLoginAtion());
//添加监听器
login.setText(“登录”);
//设置按钮文本
southPanel.add(login);
//把按钮添加到底部面板
reset=new JButton();
//创建按钮组件
reset.addActionListener(new BookResetAction());
//添加监听器
reset.setText(“重置”);
//设置按钮文本
southPanel.add(reset);
//把按钮添加到底部面板
setVisible(true);
//设置创建可见
setResizable(false);
//设置窗体不可改变大小
} public static Operater getUser(){
return user;} public static Operater getType(){
return Type;} public static void setUser(Operater user){
BookLogin.user=user;} } private class BookResetAction implements ActionListener { public void actionPerformed(final ActionEvent e){
username.setText(“");//设置用户名输入框为空
password.setText(”“);//设置密码输入框为空
} } private class BookLoginAction implements ActionListener { public void actionPerformed(final ActionEvent e){
user=Business.check(username.getText(),new String(password.getPassword()));//调用business方法
if(user.getName()!=null)
//判断用户名是否为null
{
try
{
Main frame=new Main();
//创建一个主窗体
frame.setVisible(true);
//设置其可见
BookLogin.this.setVisible(false);
//设置登录窗体为不显示
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
JOptionPane.showMessageDialog(null,”请输入正确的用户名和密码!“);//弹出提示框
username.setText(”“);
//设置用户名输入框为空
password.setText(”“);
//设置密码输入框为空
} } }
//基本信息管理模块
public class ReaderAdd extends JInternalFrame
//添加读者信息 { public ReaderAdd(){
super();
setTitle(”读者相关信息添加“);
setIconifiable(true);
//设置窗体可最小化
setClosable(true);
//设置窗体可关闭
setBounds(100,100,500,350);
final JLabel logoLabel=new JLabel();
ImageIcon readerAddIcon=Icon.add(”readerAdd.jpg“);
logoLabel.setIcon(readerAddIcon);
logoLabel.setOpaque(true);
logoLabel.setBackground(Color.CYAN);
logoLabel.setPreferredSize(new Dimension(400,60));
getContentPane().add(logoLabel,BorderLayout.NORTH);
final JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
getContentPane().add(panel);
final JPanel panel_1=new JPanel();
final GridLayout gridLayout=new GridLayout(0,4);
gridLayout.setVgap(15);
gridLayout.setHgap(15);
panel_1.setLayout(gridLayout);
panel_1.setPreferredSize(new Dimension(450,200));
panel.add(panel_1);
final JLabel label_2=new JLabel();
label_2.setText(”姓名:“);
panel_1.add(label_2);
readername=new JTextField();
readername.setDocument(new Document(10));
panel_1.add(readername);
final JLabel label_3=new JLabel();
public void actionPerformed(final ActionEvent e)
{
Check validator=new Check();
//校验类
String zj=String.valueof(comboBox.getSelectedIndex());
String id=read_id.getText().trim();
Vector v1=new Vector();
v1.clear();
v1.add(”reader“);
//读取配置文件中相应的查询语句
v1.add(id);
if(l==validator.Validate(V1))
//检查是否存在该读者
{
JOptionPane.showMessageDialog(null,”添加失败,该读者编号已存在!“);
}
else
{
Int i=Business.InsertReader(readername.getText().trim(),sex.trim(),age.getText().trim(),zjnumber.getText().trim(),Date.valueOf(date.getText().trim()),maxnumber.getText().trim().tel.getText().trim(),Double.valueof(keepmoney.getText().trim()),zj,zy.getText().trim(),Date.valueOf(bztime.getText().trim()),read_id.getText().trim());
if(i==1)
{
JOptionPane.showMessageDialog(null,”添加成功!“);
doDefaultCloseAction();
}
}
}
}
class TelListener extends KeyAdapter
{ public void keyTyped(KeyEvent e){
String numStr=”0123456789-“+(char)8;
//类型转换
if(numStr.indexOf(e.getKeyChar())<0)
{
e.consume();
} }
}
//添加“关闭”按钮的事件监听器
class CloseActionListener implements ActionListener
{
public void actionPerformed(final ActionEvent e)
{
doDefaultCloseAction();
}
}
private String[] columnNames(”名称“,”性别“,”年龄“,”证件号码“,”借书证有效日期“,”借书量“,”电话“,”押金“,”证件“,”职业“,”读者编号“,”办证时间“);
private String[] array=new String[]{”身份证“,”军人证“,”学生证“};
String id;
private Object[][] getFileStates(List list)
{
Object[][]results=new Object[list.size()][columnNames.length];
for(int i=0;i { Reader reader=(Reader)list.get(i); result[i][0]=reader.getName(); //定义二维数组 String sex; if(reader.getSex().equals(”1“)) { sex=”男“; } else { sex=”女“; } results[i][1]=sex; //读取读者歌属性值 results[i][2]=reader.getAge(); results[i][3]=reader.getIdentityCard(); results[i][4]=reader.getDate(); results[i][5]=reader.getMaxNum(); results[i][6]=reader.getTel(); results[i][7]=reader.getKeepMoney(); results[i][8]=array[reader.getZj()]; results[i][9]=reader.getZy(); results[i][10]=reader.getBook_id(); results[i][11]=reader.getBZtime(); } return results; } //图书类别管理 //添加图书信息 utton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { if(bookTypeName.getText().length()==0) { JOptionPane.showMMessageDialog(null,”图书类别文本框不可为空“); return; } if(days.getText().length()==0) { JOptionPane.showMessageDialog(null,”可借天数文本框不可为空“); return; } if(!check.isNumeric(days.getText().trim())) { JOptionPane.showMessageDialog(null,”可借天数必须为数字“); return; } if(fakuan.getText().length()==0) { JOptionPane.showMessageDialog(null,”罚款文本框不可为空“); return; } if(!check.isNumeric(fakuan.getText().trim())) { JOptionPane.showMessageDialog(null,”罚款必须为数字“); return; } int i=Business.InsertBookType(bookTypeName.getText().trim(),days.getText().trim(),Double.valueof(fakuan.getText.trim())/10); if(i==1) { JOptionPane.showMessageDialog(null,”添加成功!“); doDefaultCloseAction(); } } }); panel_6.add(button); final JButton buttonDel=new JButton(); buttonDel.setText(”关闭“); buttonDel.addActionListener(new ActionListener(){ public void actionPerformed(final ActionEvent e){ doDefaultCloseAction(); } }); panel_6.add(buttonDel); setVisibel(true);} //修改图书类 class ButtonAddListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Object selectedItem=bookTypeModel.getSelectedItem(); int i=Business.UpdatebookType(BookTypeId.getText().trim(),selectedItem.toString(),days.getText().trim(),fk.getText().trim()); if(i==1) { JOptionPane.showMessageDialog(null,”修改成功"); object[][] results=getFileStates(Business.selectBookCategory()); model.setDataVector(results.columnNames); } } } table.setModel(model); 请设计图书管理系统数据库,要求能满足读者的注册、注销、个人信息修改、图书的入库、图书报废、图书的借阅、归还、续约、滞纳金赔偿、损坏赔偿功能 系统中至少包含如下信息: 读者姓名、id、性别、学历(初等、中等、高等)、年龄、职业类别、图书id、图书名称、图书类别(基础类、科技类、文史类、社会科学、自然科学)、图书书龄、所属出版社、图书价格、图书是否完好、图书借阅人、借阅起始时间、图书借阅时长、图书续约(最多可连续续约3次)、图书是否已归还、图书是否已损坏,读者注册级别(分普通读者和vip读者,普通读者同时可以借阅2本书,vip读者可以同时借阅5本书)。 图书系统中,相同的书籍可以不止一本,读者可以同名。一次借阅期限一个月(30天),一次续约延长一个月。过期后每超出一天须缴纳滞纳金一元。图书损毁后就被报废。 1、请用完整、连续的SQL语句设计数据库和表,请根据情理和场景设计各类约束。 2、请查询‘计算机导论’这本书籍的被借阅次数。 3、请查询借书证号为11的读者历年来的借阅次数(不包括续约)。 4、请用一条或者多条语句查询‘计算机导论’这本书籍当前是否可以借阅。 5、请找出最热门的书籍名称(总共借阅次数)。 6、请找出学历中等或中等以上人员关注度比中等以下人员关注度高的书籍。 7、请查询‘王小东’当前可以借阅多少本书。 8、请查询‘王小东’当前共须缴纳多少滞纳金。 9、请统计各职业类别人员的借阅次数。 10、请查阅哪个出版社的书籍借阅频率最高(可以考虑按进行统计)。 11、检索学历比‘王小东’高,年龄比‘王小东’大,而借阅次数比他少的读者id。 12、请查询至少关注过图书类别中3个类别的读者id。 13、请查询‘计算机导论’书籍在各个学历阶层的借阅次数。 14、请将“根据借书证查询所借阅书籍编号和名称”这样的行为以存储过程加以实现。 学籍管理系统 本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。 综合我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作到了理论与实践相结合。一.题目说明: 学生学藉管理系统是典型的学藉管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统还可以完成对各类信息的浏览、添加、删除、等功能。 系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。关键字:窗体、数据库、vb6.0、access2000。 学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二.总体设计: 我的总体设计如下: (1).利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表、选课表、学生选课表以及口令表。 (2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面 FORM2 用于登陆此系统的登录界面 FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4)数据信息——管理使用(FORM5) 基本操作——学生操作、选课操作、课程操作(FORM6、FORM7、FORM8)(3)对以上的界面进行设计以及对所要操作的部件进行编程。 三.常用控件的说明: 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交 互的可视化部件,即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用程序的用户界面设计即可。序号 名称 功能 Label标签 用于说明 Textbox文本框 用于文本输入或显示 3 Frame框架 用于组合控件 Commandbutton命令按扭 单击执行命令 5 Timer计时期 用于定时 Data数据控件 用于访问数据库 三.详细说明: 1.数据库的建立与设计: 数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。 Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。 (1).表(Table)——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。 (2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。 (3).窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。 (4).报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。 (5).宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。 (6).模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。 我们利用Access来建立数据库,我们的库中有五张表格,其分别是学生表、课程表、选课表、学生选课表以及口令表。 我们就以学生表为例做一个简单的说明: 我们使用设计器来创建表的,我的这张表有七个字段,每个字段的名称分别是:学号、班级、姓名、性别、出生年月、民族、地址、电话号码,每个字段有七个数据。我并对其字段的属性进行了重新的修改,以做到不浪费其空间。 我具体的实施步骤是:启动数据库管理器——建立数据库——建立数据表结构——输入记录。 最终产生了这样的一个数据库:(如下) 2.VB界面的建立设计以及程序的编写说明: VB 是在Windows操作平台下,用于开发和创建具有图形用户界面的应用程序的强有力工具之一。VB为开发Windows应用程序不仅提供了全新的相对简单的方式,而且也引进了新的程序设计方法——面向对象的设计方法(00P)。从传统的面向过程的程序设计,转移到更先进的面向对象的程序设计,无论是对老的程序员,还是初学者,都是一个挑战。而学习VB,则是掌握这一新的程序设计方法的一条捷径。 (1).界面的设计和程序的编写: 设计一个像这样的友好的界面,我考虑到它的颜色的配制,界面的大小,界面所载的内容的多少等,在后台我用定时器给其限定时间让它在一定的时间后自动跳到下一个界面。 这个界面是系统的主界面,用户可以在通过系统登录后直接到我们的主界面上来进行相应的操作,我的主界面采用的是一张苏州市职业大学的图片,在这个图片的上面有三个菜单,分别是文件、数据信息和基本操作。在各自的下面还有与之相对应的子菜单,文件下有退出和添加用户,数据信息下有管理使用,基本操作下有学生操作、选课操作和课程操作。我利用FORMn.SHOW命令连接到相对应的界面上。 我们的界面有好几张我就对其中的一张进行详细的分析: 这是一张学生选课浏览表的界面,这也是对应我的主界面菜单中的数据信息下的管理使用子菜单的一张界面,在这张界面中包含了8个LABEL标签控件、7个 TEXTBOX文本框控件、6个COMMANDBUTTON命令按扭控件、1个FRAME框架控件和1个DATA部件。我利用DATA部件将界面与 ACCESS数据库相连接,具体的操作是利用DATABASENAME与数据库连接,在RECORDSOURCE中找到与之对应的表,再用 DATASOURCE、DATAFIELD与个文本框内容对应,从而实现界面与数据库的连接。下面是程序的编写过程: 显示前一个数据: COMMAND1: Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” End If End If End If End Sub 显示第一个数据: COMMAND2: Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveFirst End If End Sub 显示最后一个数据: COMMAND4: Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveLast End If End Sub 显示后一个数据: COMMAND3: Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” End If End If End If End Sub 添加一个数据:COMMAND6 Private Sub command6_Click()If Command6.Caption = “添加” Then Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = “确定” Command5.Caption = “放弃” If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled =-1 Command2.Enabled =-1 Command3.Enabled =-1 Command4.Enabled =-1 Command6.Caption = “添加” Command5.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 删除一个记录:COMMAND5 Private Sub Command5_Click()If Command5.Caption = “放弃” Then Command4.Enabled =-1 Command5.Enabled =-1 Command6.Enabled =-1 Command3.Enabled =-1 Command1.Caption = “添加” Command2.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0 Else If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录”, 32, “注意” Exit Sub Else str1 = MsgBox(“删除该记录吗?”, 17, “删除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “记录数为零” Data1.Recordset.AddNew End If End If End If End If End Sub 四、在此过程中遇到的问题以及解决方法: 在开始编写程序的时候总是有一些出错,在查找有关书籍和向老师询问后得出了结果。在将界面与数据库相连接的时候,不知道用哪种方法,在老师的帮助下我学会了两种方法:1.DATA、2.ADODC。我最终使用DATA这种方法。 五、心得体会: 在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。所以今后我的学习道路还是很漫长的。最后,在这里我要衷心的感谢我们的指导老师牛丽、程渊,谢谢她的悉心指导和热心帮助。由于我水平有限,加之时间短暂,故学籍管理系统中还有许多不足之处,请老师批评指正,我会在以后的制作中不断改进,不断完善。第四篇:数据库图书管理系统题目
第五篇:数据库课程设计学籍管理系统