Web前端最全图书资料管理课程设计(附源码和连接),2024年最新三年老前端经验面经

文末

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总

/*

  • 数据库工具类

_/

public class DButil {

private String dbURl=“jdbc:mysql://localhost:3306/db_book?serverTimezone=UTC”;

private String dbUserName=“root”;//用户名

private String dbUserPassword=“123456”;//密码

private String jdbcName=“com.mysql.cj.jdbc.Driver”;//驱动名称

/_*

  • 获取数据库连接

_/

public Connection GetCon()throws Exception{

Class.forName(jdbcName);

Connection con=DriverManager.getConnection(dbURl, dbUserName, dbUserPassword);

return con;

}

/_*

  • 关闭数据库连接

_/

public void closeCon(Connection con)throws Exception{

if(con!=null)

{

con.close();

}

}

public static void main(String[] args) {

DButil Dbutil=new DButil();

try {

Dbutil.GetCon();

System.out.println(“数据库连接成功”);

} catch (Exception e) {

e.printStackTrace();

System.out.println(“数据库连接失败”);

}

}

}

6.2.2字符串工具类

字符串连接工具在后期的进行查询等操作时可以进行有效的提高效率,和进行字符串拼接时将会用到。

package java1.book.util;

/_*

  • 字符串工具类

_/

public class Stringutil {

/_*

  • 判断是否为空

_/

public static boolean isEmpty(String str) {

if(str==null || “”.equals(str.trim())) {

return true;

}else {

return false;

}

}

/_*

  • 判断是否不是空

_/

public static boolean isNoteEmpty(String str ) {

if(str!=null && !“”.equals(str.trim())) {

return true;

}else {

return false;

}

}

6.3窗体设计

6.3.1主窗体设计

管理员通过“系统登陆”模块的验证后,可以登陆到图书资料管理系统的主界面,系统主窗体包括基本数据维护(图书类别管理,图书信息管理,和安全退出模块),“关于我们”只是简单的进行了一个展示。调用了一个JTextPane容器 进行文本框书写,在后面不在过多介绍。下面对这一模块的具体实现进行描述。

图6.2图书资料管理系统主界面

//设置JFrame最大化

this.setExtendedState(JFrame.MAXIMIZED_BOTH);

其添加事件的方法,点开Design然后在相关的需要添加事件的地方进行右击鼠标,找到Add event handler 下的action,再进一层点开actionPerformed。点击之后即可进行实际的事件添加,编写相应的代码。

图6.3添加功能方法图

代码如下:

public void actionPerformed(ActionEvent e) {

booktypeInter jbooktypeInter=new booktypeInter();

jbooktypeInter.setVisible(true);

table.add(jbooktypeInter);

6.3.2登陆界面

对于整个系统来说,无论是管理员还是普通读者,都必须登陆后才可以进行各种各样的操作。因此登陆界面的设计是本系统的关键。用户登陆必须输入用户名和密码,系统检测数据库中是否有该用户的信息以及密码是否正确,若符合要求则登陆成功,否者登陆失败。

登陆界面的设计如下:登陆界面通过添加相应的属性即可完成,不过区别在于这个时候要和数据库连接,检查数据库中是否有相应的管理员所以建立工具类Userdao。代码如下所示:

package java1.book.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java1.book.model.User;

/_*

  • 用户Dao类

  • @author 徐建国

_/

public class Userdao {

public User login(Connection con,User user)throws Exception{

User resultUser=null;

String sql=“select _from t_user where username=?and password=?”;

PreparedStatement pstmt=con.prepareStatement(sql);//结果集遍历

pstmt.setString(1, user.getUserName());

pstmt.setString(2, user.getPassword());

ResultSet rs=pstmt.executeQuery();

if(rs.next())

{

resultUser=new User();

resultUser.setId(rs.getInt(“id”));//获取id

resultUser.setUserName(rs.getString(“username”));//获取用户名

resultUser.setPassword(rs.getString(“password”));//获取密码

}

return resultUser;

}}

运行后界面如图所示:

图6.4图书资料管理系统登陆界面图

6.3.3图书信息添加界面

图书信息是本系统的基础。书籍管理包括书籍数据的添加和修改等功能,同时可以根据书籍的id号进行查询等功能。主要是对数据库中书籍表(t_book)的操作。本模块中的操作有“查询”“添加”“修改”“保存”“删除”。涉及对数据库的操作有查询、增加、删除、修改等。

1.若数据库中存在此书籍的信息,则将结果显示出来。

2.保存:当管理员新增或修改书籍信息后,需要将数据信息保存到数据库中,更新数据库的数据。操作完成后,可到数据库中查看信息是否保存成功。

3.删除:当书籍不存在时,管理员需要将数据库中书籍的信息删除,以防止数据的冗余。

对于修改操作的实现,本系统采用如下方法:当用户单击“修改”按钮后,系统将删除数据库中当前的书籍信息,等待用户填入新的信息后,必须单击保存按钮将新的信息保存到数据库中。对于添加操作同样要在填入新的信息后单击保存才可以。图书类别的添加主要包括图书类别名称和图书描述信息的添加。

(1)添加方法就是在添加按钮添加事件,进行调用。

图6.5图书类别的添加

/__

  • 图书类别添加事件处理

_/

private void bookTypeAddActionPerformed(ActionEvent evt) {

String bookTypeName=this.bookTypeNametxt.getText();

String bookTypeDesc=this.bookTypeDesctxt.getText();

if(Stringutil.isEmpty(bookTypeName)) {

JOptionPane.showMessageDialog(null, “图书类别不能为空”);

return;

}

Booktype booktype=new Booktype(bookTypeName,bookTypeDesc);

Connection con=null;

try {

con=dbutil.GetCon();

int n=booktypedao.add(con, booktype);

if(n==1) {

JOptionPane.showMessageDialog(null, “图书类别添加成功”);

resetValue();

}else {

JOptionPane.showMessageDialog(null, “图书类别添加失败”);

}

}catch(Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, “图书类别添加失败”);

}finally {

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

添加成功之后还会进行表格的刷新。

图6.5图书类别添加

在此还设置了重置按钮可以防止数据的误操作之后进行数据的恢复。

/_*

  • 重置表单

_/

private void resetValue() {

this.bookTypeNametxt.setText(“”);

this.bookTypeDesctxt.setText(“”);

}

(2)图书类别的修改主要是通过和数据库进行连接之后进行更新操作。

/_*

  • 图书类别修改记录 事件处理

  • @param evt

*/

private void bookTypeUpdateActionEvent(ActionEvent evt) {

String id=idTxt.getText();

String bookTypeName=bookTypeNameTxt.getText();

String bookTypeDesc=bookTypeDescTxt.getText();

if(Stringutil.isEmpty(id)) {

JOptionPane.showMessageDialog(null, “请选择要修改的记录”);

return;

}

if(Stringutil.isEmpty(bookTypeName)) {

JOptionPane.showMessageDialog(null, “图书类别不能为空”);

return;

}

Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );

Connection con =null;

try {

con=dbutil.GetCon();

int modifyNum=booktypedao.update( con, bookType);

if(modifyNum==1) {

JOptionPane.showMessageDialog(null, “修改成功”);

this.resetValue();

this.fillTable(new Booktype());

} else {

JOptionPane.showMessageDialog(null, “修改失败”);

}

}catch (Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, “修改失败”);

}finally {

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}} }

(3)图书类别的查询与修改

图书类比的查询与修改主要涉及到的就是表单操作以及对数据的查询,修改和及时更新数据,书籍信息查询或者说是书籍检索是任何人都可以进行的操作,它不要求用户的登陆。其功能已在书籍管理模块中涉及,不同之处在于此时只用于显示,用户不可对其修改。查询时的关键字可有“书籍作者”“出版社”“书籍名称”“书籍号”“书籍简介”。

图6.6图书类别的查询与修改

/**

* 图书类别修改记录 事件处理

_/

private void bookTypeUpdateActionEvent(ActionEvent evt) {

String id=idTxt.getText();

String bookTypeName=bookTypeNameTxt.getText();

String bookTypeDesc=bookTypeDescTxt.getText();

if(Stringutil.isEmpty(id)) {

JOptionPane.showMessageDialog(null, “请选择要修改的记录”);

return;}

if(Stringutil.isEmpty(bookTypeName)) {

JOptionPane.showMessageDialog(null, “图书类别不能为空”);

return;}

Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );

Connection con =null;

try {

con=dbutil.GetCon();

int modifyNum=booktypedao.update( con, bookType);

if(modifyNum==1) {

JOptionPane.showMessageDialog(null, “修改成功”);

this.resetValue();

this.fillTable(new Booktype());

} else {

JOptionPane.showMessageDialog(null, “修改失败”);}

}catch (Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, “修改失败”);

}finally {

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}} }

(4)表格行点击事件主要是对上面的表格数据进行遍历按照相应的显示规则,在下面进行同步显示,此操作和后期的图书信息的添加与维护一致,后面不在描述

/_*

* 表格行点击事件处理

_/

private void bookTypeTableMousePressed(MouseEvent evt) {

int row=bookTypeTable.getSelectedRow();

idTxt.setText((String)bookTypeTable.getValueAt(row, 0));

bookTypeNameTxt.setText((String)bookTypeTable.getValueAt(row, 1));

bookTypeDescTxt.setText((String)bookTypeTable.getValueAt(row, 2)); }

/_*

* 图书类别搜索事件

*/

private void bookTypeSearchActionPerformed(ActionEvent evt) {

String s_bookTypeName=this.s_bookTypeNameTxt.getText();

Booktype booktype=new Booktype();

booktype.setBooktypename(s_bookTypeName);

this.fillTable(booktype); }

(5)图书信息添加

对于本系统来说,图书信息添加和重置是最重要的功能,涉及到数据库中的两张表,考虑到查询效率和方便程度,决定建立视图查询,要求输入,图书名称,图书作者,作者性别,图书价格,图书类别,图书价格等信息 ,因为代码和之前添加 事件代码区别不大 ,这里不在赘述而采用代码的复用。

图6.7图书信息添加与重置

(6)图书资料管理是重中之重,如何有效的对数据管理,才是关键,所以采用嵌套语句和字符串拼接等方式,与数据库进行有效的连接并且同步数据 。在此用到了表格行点击事件。

图6.8图书资料管理

7测试分析报告

在测试分析的基础上,进行测试后需要对测试的结果以及测试的数据等加以记录和分析总结,它是测试过程的一个重要的环节,同时,它也是对软件性能的一个总的分析和对认识不足的说明。为以后的软件开发程序提供了丰富的经验。

系统的设计工作完成后,必须经过严格的测试才可以进行实际的应用。作为一个数据库软件,应该结合数据库本身和软件进行联合测试,即可以在软件中进行一些操作,同时在数据库中查看相关数据。下面对系统的各模块进行测试。

1 登陆模块等测试

登陆模块的测试包括登陆成功,不成功以及退出等3种情况,还需要查看登陆成功即退出后的菜单是否正常等。程序运行后,选择“系统”|“登陆”命令,弹出登陆对话框,在上面输入用户名和密码后,单击“确定”按钮。如下所示:如果输入错误的用户名或密码,则显示登陆失败。登陆后选择“系统”|“退出”命令,可看到状态栏的改变,即完成退出命令。其他的图书类别的添加修改等都是相同操作。

图7.1登陆模块及相关测试

2 书籍信息模块测试

使用管理员权限登陆后,可以对书籍信息进行管理。选择“基本资料维护”|“图书资料维护”命令,弹出书籍资料维护对话框。如果单击“添加”按钮,输入新的信息后,单击“保存”按钮保存到数据库中。如下图所示:

图7.2书记信息模块测试

上面对系统的各个模块进行了简单的测试,图示资料系统基本模块的功能是正确的。

3.性能测试及未完成的模块

在本次图书资料管理系统中测试时出现过好多BUG,

1.Java.lang.NullPointerException

首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。

是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时候报的错误,这时候我们只需要加一个判断是否为null,再去在不为空的情况下进行后续代码,这样就能解决问题。

那么在这个时候就要去查看你的程序,因为我在编写代码的时候偷懒

当报错bookkatype时直接按照引导。加了Integer booktypeId = null;

所以报错的时候我就想到了在这儿去解决。幸运的是把这儿的变量初始化赋值以后解决了错误,程序也很好的运行起来了!

现在归纳一下:报错原因

1.字符串变量未初始化;如Sting s;这时在后面的处理过程中就可能会报错。

2.接口类型的对象没有用具体的类初始化,List lt; 会报错

List lt = new ArrayList(); 则不会报错了。

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

pe时直接按照引导。加了Integer booktypeId = null;

所以报错的时候我就想到了在这儿去解决。幸运的是把这儿的变量初始化赋值以后解决了错误,程序也很好的运行起来了!

现在归纳一下:报错原因

1.字符串变量未初始化;如Sting s;这时在后面的处理过程中就可能会报错。

2.接口类型的对象没有用具体的类初始化,List lt; 会报错

List lt = new ArrayList(); 则不会报错了。

react和vue的比较

相同
1)vitual dom
2)组件化
3)props,单一数据流

不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-nLeltjHP-1715887698888)]

[外链图片转存中…(img-Ae6uyggv-1715887698889)]

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值