桌面精灵毕业设计(论文)word格式
摘 要
三级课
桌面精灵系统,就是为满足需要而开发的,主要包括用户的日历、时钟、生活的琐事、星座奇缘、奇事、精品图
、天气的查询、备忘、日志、
。从而做事的
效率和了解社会时事发展。本系统总共分为6章,第1章讲述了前言概括,第2章系统
需求分析,第3章数据库表的概要设计,第4章主要讲述了数据库及程序系统的详细设计,第5章讲述了系统运行及其调示,第6章作为总结,主要写自己的心得体会及做课题当中所遇到的问题,及解决办法,还有附录,
本组开发的桌面精灵系统结合实际,合理设置用户的需求并掌握的相应信息。综合
地对他们进行数据库的设计、数据库的连接和程序代码的编写,有效的最终在系统运行
中得以实现。通过各个信息模块的设计,可以详细地进行各个小的方面的内容实现,做
到各个信息环节的内容最终都能够在程序中得到实现,使操作成员能明了的了解桌面精
灵这个系统。
关键词:Java ;桌面精灵系统;数据库的设计;
1
.................................................................................................................... 1 1 ............................................................................................................................................. 3 2 ............................................................................................. 4 2.1 功能需求 ......................................................................................................................... 4
2.2编译环境需求 .................................................................................................................. 5
2.3界面需求 .......................................................................................................................... 5
2.4系统主要模块分析 .......................................................................................................... 5
3 .......................................................................................... 7 3.1数据库概要设计 ................................................................................................................................... 7 3.1.1 实体及其属性 ................................................................................................................................... 7 3.1.2 E-R图 ................................................................................................................................................... 7 3.2 系统管理模块设计.............................................................................................................................. 9 4 .............................................................................................. 9 4.1主页面实现如图4-1 .................................................................................................................. 10 4.2数据库表内容及实现 ...................................................................................................................... 12 4.3页面的设计 ......................................................................................................................................... 15 5 ...................................................................................................... 28 6 .............................................................. 错误!未定义书签。36 致谢: ........................................................................................................................... 38 指导教师评语 ......................................................................................................... 39
A ........................................ 错误!未定义书签。40 1.主页面程序 ................................................................................... 40 2.日历程序 ....................................................................................... 41 3.时钟程序 ..................................................................................... 44 4.计划程序 ..................................................................................... 46 5页程序 .......................................................................................... 48
2
1
三级课题桌面精灵系统能够提供用户操作平台,,方便用户对日常生活的管理和增加一些对哲、历、文学等多方面的提高,认识本程序的内部的数据库的结构和调用
,
以为程序设计人员和软件维护人员更好的编制、测试程序和维护软件的正确运行提供依
据。数据库设计的第一步是明确数据库的目的,用来记录信息和管理信息,通过各种表
的设计,实现对表的整体调用。
详细设计主要关于经常使用的一些功能,还有一些经常性动作。
本系统属于团队开发系统,每个人负责不同的模块,实现相应的功能,以求得系统
的完整,通过多次的调试和组合并进行相应的修改,并进行相应的交流达成共识在老师
指导下使得系统逐步完善,并进行了近一步的调整使系统更趋向于人性化和合理化。
最后通过写结束语来完成最后的系统文件,还可以另外附上表和程序来完成整个系
统。
3
2
2.1
通过对桌面精灵系统的了解,我们可以更清楚的知道更多的详细信息,知道一些备
忘、计划、日志、天气等信息,从而对自己进行相应的调整,系统应有的功能模块如下:
主页面模块;(独立完成)
计划、日历、时钟;(独立完成)
备忘;
日志;
其它一些功能;(共同参与)
1. 主页面
打开页面以后,可以浏览所有可以实现的功能,而且一目了然,对全局有全面的了
解。
2. 添加日历
可以在点击按钮后,在工作台出现一个可爱的小日历,并且可以找到自己喜欢的日
子,而且一目了然知道每月的天数。使自己的页面更加完美。 3. 备忘
可以对自己近期所要做的事进行一切相应的记录,并且还可以设置是否对相应的事
情提醒否,并且还可以进行相应的修改,还可以对过时的进行相应的删除,完成一切相
应的操作。增、删、改、查都可以增加操作的随意性。 4. 天气查询
天有不测风云,所以出门之时了解天气对自己是福,不是祸,还可以对其它自己喜
爱的地方进行相应的天气查询,从而了解世界。收获更多。 5. 时钟
添加一个时尚而个性的时钟,可以增加桌面的完美性,并且对时间更具体的了解,
从而增加自己的做事效率。
4
6. 计划
对自己将要做的某些事做一些预先的打算,并且再需要的时候还可以进行相应的修
改,从而对自己更有利,并且更势时性。增、删、改、查都可以增加操作的随意性。
7. 日志
记录自己的点点滴滴,并且非常实用,而且对自己的美好的回忆,温存又加深印像。
增、删、改、查都可以增加操作的随意性。
8. 菜单其它项
可以进行相应的选择,连接相应的网页,从而找到自己的需求,了解更多 从而丰富自己的一些常识。
2.2
本系统使用的开发语言是Java,数据库采用的是My SQL,以Windows XP系统为操作平台。
2.3
对于一个好的软件系统有一个友好的界面是很重要的,在设计界面时在给人以美感
的同时,界面还应尽量做的简单、功能清晰明了,最大限度地为用户提供操作方便。 2.4
三级课题桌面精灵系统包括多方面内容,进行相应的操作,并得到相应的信息来满
足需要,对一些信息进行查询、添加、修改、删除,能够更好的了解一些信息。
系统主要模块分析关系图如图2.1所示
5
添L 备 日 查时 精星奇 计 加i 询 品座 日f 天 图奇
e 历 忘 志 气 钟 书 缘 事 划
故 生历音 写 查 小 古 军 经 哲 专 世奇添 检
活史 间异
窍今 日 百现 事 门 天 乐 志 看 说 典 事 济 学 业 态 象 加 索
爱 武 玄
情 侠 幻
6
3 3.1
作为系统的重要重要组成部分,数据库设计需要进行各种实体及他们的属性描述,
这样,在下面的描述详细设计时,在本章可以看到系统设计的大致设计框架。
3.1.1
整个系统各实体可以用以下关系来表示:
plan(id,data,time,subjects,details);
memos(id,data,time,warns,them,contant);
logdata(riqi,shijian,zhuti,neirong);
注:斜字体为表的主键
3.1.2 E-R
E-R图分析的目的是确定系统中所有实体、实体的属性及实体之间的联系,为设计
数据库表结构打下基础。画E-R图通常使用自底向上的设计方法,首先对局部视图进行
分析设计,然后再将局部视图合并,消除冲突和冗余,得到系统的总体E-R图。这里两
表不存在联系,所以对每一表进行单一的描述。
计划表如图:
7
sub
jec
ts
id dattimdet
ails a e
plan
备忘表如图:
warntime s them data
id cont
ant
memos
日志表如图:
8
zhshiuti jia
n
neiriqi ron
g
logdata
3.2
1. 主页面设计:
通过本组讨论, 认为主页面应具有以下功能:
显示提供的一些功能,日历添加、时钟、备忘、计划、日志、奇事、精品图书等等。
并且通过相应的操作。
2. 备忘、计划、日志没计:
数据库完成相应的增、删、改、查,并且设置相应的方法实现一些共用或者
通用的方法,去解决这些复杂而繁琐的问题。并且具体可以完成某些特定功能。从而使
程序完美而且更加实用。
3.天气、星座奇缘、精品图书、奇事、Life设计:
对于一些时事变化比较快的,我们可以采用网页的方式,打开相应的网页,从而查
找相应的结果。
4.时钟、日历设计:
通过相应的精确判断得到机器的相应时间,从而使页面更加灵活多变,并且可以进
行的时间运算,从而知道不久的日期。
4
我们采取模块化设计思想,通过各模块的不同组合以实现不同的查询功能。最终,
使系统
9
具有内容
、信息完整、查询便捷等特点。 4.1主页面实现如图4-1
-
1.
init() {
(SystemTray.isSupported()) { // 如果操作系统支持托盘
.tray();
}
.setSize(300, 320);
.setResizable();
// 窗口关闭时触发事件
addWindowListener( WindowAdapter() {
windowClosing(WindowEvent e) {
System.exit(0);
}
windowIconified(WindowEvent e) {
{
tray.add(trayIcon); // 将托盘图标添加到系统的托盘实例中
//setVisible(false); // 使窗口不可视 dispose();//释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源
} (AWTException ex) {
ex.printStackTrace();
}
10
}
});
}
tray() {
tray = SystemTray.getSystemTray(); // 获得本操作系统托盘的实例
ImageIcon icon = ImageIcon(getClass().getResource("image/4.jpg")); // 将要显示到托
盘中的图标
PopupMenu pop = PopupMenu(); // 构造一个右键弹出式菜单
MenuItem show = MenuItem("打开程序(s)");
MenuItem exit = MenuItem("退出程序(x)");
pop.add(show);
pop.add(exit);
trayIcon = TrayIcon(icon.getImage(), "桌面精灵", pop);
/**
* 添加鼠标监听器,当鼠标在托盘图标上双击时,默认显示窗口
*/
trayIcon.addMouseListener( MouseAdapter() {
mouseClicked(MouseEvent e) {
(e.getClickCount() == 2) { // 鼠标双击 tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
setExtendedState(JFrame.
NORMAL);
setVisible(); // 显示窗口
toFront();
}}});
show.addActionListener( ActionListener() { // 点击“显示窗口”菜单后将窗口显示出来
actionPerformed(ActionEvent e) {
tray.remove(trayIcon); // 从系统的托盘实例中移除托盘图标
setExtendedState(JFrame.NORMAL);
setVisible(); // 显示窗口
toFront();
}
});
exit.addActionListener( ActionListener() { // 点击“退出演示”菜单后退出程序
actionPerformed(ActionEvent e) {
System.exit(0); // 退出程序
}
});}
.
planLogMenuBar1 = JMenuBar();
11
setJMenuBar(planLogMenuBar1); {
planMenu1 = JMenu();
planLogMenuBar1.add(planMenu1);
planMenu1.addSeparator();
planMenu1.setText("计划");
{
planMenuItemAdd = JMenuItem();
planMenu1.add(planMenuItemAdd);
planMenuItemAdd.setText("\u6dfb\u3000\u52a0"); planMenuItemAdd.addActionListener( ActionListener(){
actionPerformed(ActionEvent e){
append.main();
}
});
}
其它菜单里的内容如上一样的加入。
.
{
calendarButton = JButton();
calendarButton.setBackground(color);
getContentPane().add(calendarButton); calendarButton.setText("\u6dfb\u52a0\u65e5\u5386(C)");
calendarButton.setMnemonic('c');
calendarButton.setBounds(17, 46, 110, 40);
calendarButton.addActionListener( ActionListener(){
actionPerformed(ActionEvent e){
calendar.main();
}
});
}
其它按钮与此一样。
4.
根据上面所说实体与属性,基于功能的分析,可为考虑系统创建库表以便
于应用和维护系统,将其中的数据库表设计如下:
1.计划表设计如:
12
4-2-1
2.备忘表设计如:
4-2-2
3.日志表设计如:
4-2-3
数据库核心代码:
{
{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("forName"); } (ClassNotFoundException e) {
// 自动生成 catch 块
e.printStackTrace();
}
}
Connection getConnection(){
{
Connection conn = ;
conn=DriverManager.getConnection(url,user,password);
} (SQLException e) {
// 自动生成 catch 块 System.out.println("返回Connection错误");
e.printStackTrace();
}
System.out.println("Hello");
;
}
13
free(Connection conn,Statement st,ResultSet re){
{
re.close();
} (SQLException e) {
// 自动生成 catch 块
e.printStackTrace();
}
{
{
st.close();
} (SQLException e) {
e.printStackTrace();
}
{
{
conn.close();
} (SQLException e) {
e.printStackTrace();
}
}
}
}
free(Connection conn,Statement st){
{
st.close();
} (SQLException e) {
e.printStackTrace();
}
{
{
conn.close();
} (SQLException e) {
e.printStackTrace();
}
}
}
free(Connection conn,PreparedStatement pr){
{
pr.close();
} (SQLException e) {
e.printStackTrace();
}
{
14
{
conn.close();
} (SQLException e) {
e.printStackTrace();
}
}
}
free(Connection conn,PreparedStatement pr,ResultSet re){
{
re.close();
} (SQLException e) {
e.printStackTrace();
}
{
{
pr.close();
} (SQLException e) {
e.printStackTrace();
}
{
{
conn.close();
} (SQLException e) {
// 自动生成 catch 块
e.printStackTrace();
}
}
4.
.
15
核心代码:
static {
Calendar today = Calendar.getInstance();
YEAR = year = today.get(Calendar.YEAR);
MONTH = month = today.get(Calendar.MONTH) + 1;
DAY = today.get(Calendar.DAY_OF_MONTH);
ToDiecedLeapYear();
}
static void ToDiecedLeapYear(){
if (year % 100 == 0) {
16
daysOfMonth[2] = (year % 400 == 0 ? 29 : 28);
} else { daysOfMonth[2] = (year % 4 == 0 ? 29 : 28);
}
}
DateFormat dateFormat = DateFormat.getDateInstance();//日期/时间格式
try { dateFormat.parse(year + "-" + month + "-1");
} catch (ParseException e) {
e.printStackTrace();
}
Calendar firstDayOfMonth = dateFormat.getCalendar();//得到第一天
int dayOfWeek = firstDayOfMonth.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println(dayOfWeek);
if (dayOfWeek == 0) {
dayOfWeek = 7;
}
int lastMonthDays = 31;
if (month > 2) {
lastMonthDays = daysOfMonth[month - 1];
} System.out.println(lastMonthDays - dayOfWeek+2);
for (int day = lastMonthDays - dayOfWeek + 2; day <= lastMonthDays; day++){
button = new CalendarButton(day);
button.setEnabled(false);//设置按钮不能被调用
tableModel.setValueAt(button,row,col);
if (col == 6) {
row++;
col = 0;
} else {
col++;
}
}
// 当月
for (int day = 1; day <= daysOfMonth[month]; day++) {
button = new CalendarButton(day);
if (col > 4) {
if (col == 5) {
button.setForeground(Color.GREEN);
} else {
button.setForeground(Color.orange);
}
}
17
if (day == DAY) {
if (year == YEAR && month == MONTH) {
button.setForeground(Color.RED);
}
} tableModel.setValueAt(button, row, col);
if (col == 6) {
row++;
col = 0;
} else {
col++;
}
}
// 下一月 int nextMonthDays = 42 - (row * 7 + col);
for (int day = 1; day <= nextMonthDays; day++) {
button = new CalendarButton(day);
button.setEnabled(false);
tableModel.setValueAt(button, row, col);
if (col == 6) {
row++;
col = 0;
} else {
col++;
}
}
}
核心代码:
{
Thread.sleep(1000);
seconds++;
(seconds < 10){
(minuter < 10 ){
(hour < 10){
clockLabel.setText("0"+hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
18
{
clockLabel.setText(hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
}
(hour < 10){
clockLabel.setText("0"+hour+":"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
{
clockLabel.setText(hour+":"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.); red
}
}
{
(seconds>=60){
seconds =0;
minuter++;
(minuter<10){
(hour < 10){
clockLabel.setText("0"+hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
{
clockLabel.setText(hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
}
(minuter>=60){
minuter = 0;
hour++;
(hour < 10){
clockLabel.setText("0"+hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.); red
}
(hour>=24){
hour=0;
clockLabel.setText("0"+hour+":"+"0"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.); red
}
{
clockLabel.setText(hour+":"+"0"+minuter+":"+"0"+seconds);
19
clockLabel.setBackground(Color.red);
}
}
(hour < 10){
clockLabel.setText("0"+hour+":"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.red);
}
{
clockLabel.setText(hour+":"+minuter+":"+"0"+seconds);
clockLabel.setBackground(Color.); red
}
}
(minuter < 10){
(hour < 10){
clockLabel.setText("0"+hour+":"+"0"+minuter+":"+seconds);
clockLabel.setBackground(Color.red);
}
{
clockLabel.setText(hour+":"+"0"+minuter+":"+seconds);
clockLabel.setBackground(Color.red);
}
}
(hour < 10){
clockLabel.setText("0"+hour+":"+minuter+":"+seconds);
clockLabel.setBackground(Color.red);
}
{
clockLabel.setText(hour+":"+minuter+":"+seconds);
clockLabel.setBackground(Color.red);
}
}
} (InterruptedException e) {
// 自动生成 catch 块
e.printStackTrace();
JOptionPane.showMessageDialog(,"时钟错误");
}
20
通过调用网络资源 核心代码:
{
Runtime.getRuntime().exec(
"cmd.exe /c start iexplore "+shareWeb);
} (IOException ex) {
JOptionPane.showMessageDialog(,"网页出错");
} .
5.1添加:
21
调用数据库并把相应的数据进行处理;
核心代码:
String arg0 = "insert into plan(date,time,subjects,details) values(?,?,?,?)" ;
Connection conn = PlanData.getConnection();
PreparedStatement pr = ;
{
pr = conn.prepareStatement(arg0);
pr.setString(1,dX.getDate());
pr.setString(2,dX.getTime());
pr.setString(3,dX.getTextName());
pr.setString(4,dX.getTextArea());
pr.executeUpdate();
;
} (SQLException e) {
// 自动生成 catch 块
e.printStackTrace();
}{
PlanData.
(conn,pr); free
}
;
}
22
5.2检索:
对检索到的数据进行相应的操作:
核心代码:
public PlanObject find(String textName){
String arg0 = "select * from plan where subjects = ?";
Connection conn = PlanData.getConnection();
PreparedStatement pr = ;
ResultSet re = ;
PlanObject dX = PlanObject();
{
pr = conn.prepareStatement(arg0);
pr.setString(1,textName);
re = pr.executeQuery();
(re.next()){
System.out.println("Next");
= re.getInt("id"); number
dX.setDate(re.getString(2));
dX.setTime(re.getString(3));
dX.setTextName(re.getString(4));
dX.setTextArea(re.getString(5));
23
dX;
}
} (SQLException e) {
// 自动生成 catch 块
e.printStackTrace();
}{ PlanData.free(conn,pr,re);
}
;
}
deletedData(String textName){
String arg0 = "delete from plan where subjects = ?" ;
Connection conn = PlanData.(); getConnectionPreparedStatement pr = ;
PlanObject dX = PlanObject();
{
pr = conn.prepareStatement(arg0);
pr.setString(1,textName);
pr.executeUpdate();
} (SQLException e) {
e.printStackTrace();
}{
PlanData.free(conn,pr);
}
}
deletedData(){
String arg0 = "delete from plan where id = ?" ;
Connection conn = PlanData.getConnection();
PreparedStatement pr = ;
{
pr = conn.prepareStatement(arg0);
pr.setInt(1,number);
pr.executeUpdate();
} (SQLException e) {
e.printStackTrace();
}{
PlanData.(conn,pr); free
}
}
update(PlanObject dX){
24
String arg0 = "update plan set date = ? , time = ?, subjects = ?,details = ? where id
= ?" ;
Connection conn = PlanData.getConnection();
PreparedStatement pr = ;
{ pr = conn.prepareStatement(arg0);
pr.setString(1, dX.getDate());
pr.setString(2,dX.getTime());
pr.setString(3, dX.getTextName());
pr.setString(4,dX.getTextArea());
pr.setInt(5,); number
pr.executeUpdate();
} (SQLException e) {
// 自动生成 catch 块
e.printStackTrace();
}{
PlanData.free(conn,pr);
}
}
25
8ife
26
27
以上是对网页过行相应的操作不在一一列举
核心代码:
{
Runtime.getRuntime().exec(
"cmd.exe /c start iexplore "+shareWeb);
} (IOException ex) {
JOptionPane.showMessageDialog(,"网页出错");
}
5 通过系统的运行,可以适当地对信息进行各种操作: 首先进入主页面,然后进行相应的操作,并对操作做出相应的回应。
28
29
30
如果主题为空出现提示:
如果计划内容为空:
31
32
以上只对部分功能进行调试,仅供参考
33