JAVA课程设计---多源教学数据管理系统
1.团队课程设计博客链接
https://www.cnblogs.com/hq9-/p/10278470.html
2.个人负责模块或任务说明
(1)到控制台实现GUI界面中浏览文件并选取文件的功能。
(2)业务逻辑代码中实现读取excel(.xls)
(3)数据库表利用POI导出成excel(固定行数)
(4)实现读取txt文件在GUI界面
(5)GUI界面中实现各个界面展示与各个界面的跳转
3.自己的代码提交记录截图

4.自己负责模块或任务详细说明
(1)实现浏览文件,选择文件功能:
主要需要JFileChooser文件选择器进行操作,将文件的路径封装成File实例进行使用。
界面展示:


主要代码:
JFileChooser jfc = new JFileChooser();// 文件选择器
YFileChooser() {
jfc.setCurrentDirectory(new File("d:\\"));// 文件选择器的初始目录定为d盘
...}
public void actionPerformed(ActionEvent e) {// 事件处理
if (e.getSource().equals(button2)) {
jfc.setFileSelectionMode();// 设定只能选择到文件
int state = jfc.showOpenDialog(null);// 此句是打开文件选择器界面的触发语句
if (state == ) {
return;// 撤销则返回
} else {
File f = jfc.getSelectedFile();// f为选择到的文件
text2.setText(f.getAbsolutePath());//获得默认路径
}
}
...
}
(2)业务逻辑代码中实现读取excel(.xls)
实现读取excel文件内容,显示在控制台,主要利用POI的功能,利用其中的HSSFWorkbook(excel文档对象)等组件对excel表的内容与标题进行读取
主要代码:
/**
* 获取单元格数据内容为字符串类型的数据
*
* @param cell Excel单元格
* @return String 单元格数据内容
*/
private String getStringCellValue(HSSFCell cell) {
String strCell = "";
switch (cell.getCellType()) {
case STRING:
strCell = cell.getStringCellValue();
break;
case NUMERIC:
strCell = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
strCell = String.valueOf(cell.getBooleanCellValue());
break;
case BLANK:
strCell = "";
break;
default:
strCell = "";
break;
}
if (strCell.equals("") || strCell == null) {
return "";
}
if (cell == null) {
return "";
}
return strCell;
}
/**
* 根据HSSFCell类型设置数据
* @param cell
* @return
*/
private String getCellFormatValue(HSSFCell cell) {
String cellvalue = "";
if (cell != null) {
// 判断当前Cell的Type
switch (cell.getCellType()) {
// 如果当前Cell的Type为NUMERIC
case NUMERIC:
case FORMULA: {
// 判断当前的cell是否为Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellvalue = sdf.format(date); }
// 如果是纯数字
else {
// 取得当前Cell的数值
DecimalFormat df = new DecimalFormat("");
cellvalue= df.format(cell.getNumericCellValue());
}
break;
}
// 如果当前Cell的Type为STRIN
case STRING:
// 取得当前的Cell字符串
cellvalue = cell.getRichStringCellValue().getString();
break;
// 默认的Cell值
default:
cellvalue = " ";
}
} else {
cellvalue = "";
}
return cellvalue;
}
public static void main(String[] args) {
try {
// 对读取Excel表格标题测试
InputStream is = new FileInputStream("d:\\mookmiddle-test.xls");
WriteExcelToDB excelReader = new WriteExcelToDB();
String[] title = excelReader.readExcelTitle(is);
System.out.println("获得Excel表格的标题:");
for (String s : title) {
System.out.print(s + " ");
}
// 对读取Excel表格内容测试
InputStream is2 = new FileInputStream("d:\\mookmiddle-test.xls");
Map<Integer, String> map = excelReader.readExcelContent(is2);
System.out.println(" ");
System.out.println("获得Excel表格的内容:");
} catch (FileNotFoundException e) {
System.out.println("未找到指定路径的文件!");
e.printStackTrace();
}
}
(3)实现将数据库表导出成excel:
利用POI技术,用HSSFWorkbook创建“Excel文件对象”,利用HSSFWorkbook对象创建Sheet对象,然后用Sheet对象返回行对象,最后用行对象得到Cell对象
4、对Cell对象读写



主要代码:
try {
//连接数据库查询数据
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection(url, user, password);
String sql="select * from st";
ps=conn.prepareStatement(sql);
//获取结果集
rs = ps.executeQuery();
//用于获取字段的描述信息,比如字段名
ResultSetMetaData metaData = (ResultSetMetaData) rs.getMetaData();
//创建workBook对象
@SuppressWarnings("resource")
HSSFWorkbook workBook=new HSSFWorkbook();
//在workBook对象中创建一张表格
HSSFSheet sheet= workBook.createSheet("学生成绩");
//设置每一列的宽度
int colnum=metaData.getColumnCount();
for(int i=;i<colnum;i++){
sheet.setColumnWidth(i, );
}
//单元格样式对象
HSSFCellStyle cellStyle = workBook.createCellStyle();
//设置文本居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);
//创建第0行,作为表格的表头
HSSFRow row=sheet.createRow();
HSSFCell cell=null;
for(int i=;i<colnum;i++){
cell=row.createCell(i);
//动态获取字段名
cell.setCellValue(metaData.getColumnLabel(i+));
cell.setCellStyle(cellStyle);
}
int rowIndex=;
while(rs.next()){
//循环将查询出来的数据封装到表格的一行中
row=sheet.createRow(rowIndex);
for(int i=;i<colnum;i++){
cell=row.createCell(i);
cell.setCellValue(rs.getString(i+));
cell.setCellStyle(cellStyle);
}
rowIndex++;
}
FileOutputStream fos=new FileOutputStream(outPutFile);
//输出流将文件写到硬盘
workBook.write(fos);
fos.flush();
fos.close();
}
catch (Exception e) {
e.printStackTrace();
} finally {
rs.close();
ps.close();
conn.close();
}
(4)实现读取txt文件在GUI界面:
将选择txt文件的路径在文本字段上显示,获取文本字段上的路径,利用IO流将文件里的数据读取并将数据添加到要显示的文本框中。
界面展示:

主要代码:
public void readFile() {
String filename2 = text2.getText();
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(filename2);
br = new BufferedReader(fr);
String str;
while ((str = br.readLine()) != null) {
text4.append(str + "\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
5.课程设计感想
在这次课设的过程中,遇到很多困难,同时也学到很多东西,像数据库,POI,平时上课接触很少的地方需要自学与探讨。通过不断摸索,我解决了不少问题,但同时实现的代码bug重重,多亏队友的修改,让部分代码得以完善,像我写POI读取excel表时,做测试时用自己创的表没有问题,但测试老师提供的表时发现无法运行,最后发现是原来excel表的后缀有影响,应该要实现后缀为.xls与.xlsx都可读取。
通过这次课设,我意识到平时上课不能停留在课本,而忽视动手能力,否则课设的时候会及其痛苦。
JAVA课程设计---多源教学数据管理系统的更多相关文章
- JAVA课程设计——多源教学数据管理系统
团队简介 团队名称: 419圣斗士 团队成员 姓名 成员介绍 任务分配 周炳辉(组长) 来自网络的一个大佬,穿女装很合适 poi与servlet 徐宏伟 网络中一个具有强大隐藏实力的大哥 css,部分 ...
- Java课程设计(2019版)
参考资料 Java课程设计参考资料(2018-12-26更新) Java课程设计常见问题(程序部署.数据库.JSP) 项目开发参考-阿里巴巴Java开发手册(正式版) 更多参考资料请查看QQ群文件中的 ...
- Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)
Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...
- Java课程设计——学生成绩管理系统(201521123003 董美凤)
Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...
- Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)
#课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...
- Java课程设计—学生成绩管理系统(201521123004-林艺如)
1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...
- java课程设计团队博客《基于学院的搜索引擎》
JAVA课程设计 基于学院网站的搜索引擎 对学院网站用爬虫进行抓取.建索(需要中文分词).排序(可选).搜索.数据摘要高亮.分页显示.Web界面. 一.团队介绍 学号 班级 姓名 简介 2016211 ...
- Java课程设计-算术运算测试(D级) 齐鲁工业大学 计科20-1 王瀚垠 202003010033
Java课程设计-算术运算测试(D级) 齐鲁工业大学 计科20-1 王瀚垠 202003010033 目录 1.项目简介 2.项目采用技术 3.功能需求分析 4.项目亮点 5.项目功能架构图和UML类 ...
- java课程设计--We Talk(201521123061)
java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...
随机推荐
- Bootstrap历练实例:标签修饰
您可以使用修饰的 class label-default.label-primary.label-success.label-info.label-warning.label-danger 来改变标签 ...
- 2d游戏中求出一个向量的两个垂直向量
function cc.exports.VerticalVector(vec)--求出两个垂直向量 local result = {} result[1] = cc.p(vec.y/vec.x,-1) ...
- NOIP模拟赛 高级打字机
[题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小写字母x. ...
- 【贪心】bzoj1592: [Usaco2008 Feb]Making the Grade 路面修整
贪心的经典套路:替换思想:有点抽象 Description FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也 就是说,高度上升与高度下降的路段不能 ...
- manjaro(arch)里的vbox 安装centos7后,centos无法联网的解决办法
第一步,在VirtualBox中设置网卡连接方式:点“设置”,在弹出的界面中点“网络”,最后选择“连接方式”为“桥接网卡”. 回到centOS中,进入终端,输入命令:ip addr,查看网络配置文件的 ...
- 深入理解FIFO(包含有FIFO深度的解释)——转载
深入理解FIFO(包含有FIFO深度的解释) FIFO: 一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行 ...
- Linux集群之高可用负载均衡lvs+keepalived
LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LV ...
- Linux数据库忘记密码-修改方法
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...
- 【MySQL】MySQL备份和恢复
一.为什么要备份数据 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种. 硬件故障 软件故障 自然灾害 黑客攻击 误操作 (占比最大) 所以, 为了在数据丢失之后能够 ...
- 哪里是Maven的中央存储库?
当你建立了一个Maven工程,Maven会检查你的pom.xml文件,确定要下载的依赖.首先,Maven将从您的本地库Maven查找,如果没有找到,Maven会从中央存储库-http://repo1. ...