課程設計(論文)任務書(文章末尾--源文檔下載) 軟體 學院 軟體工程 專業 2016 -7 班 一、課程設計(論文)題目 綜合課程設計2 二、課程設計(論文)工作自 2018 年 1月 1 日起至 2018 年 1月 12 日止。 三、課程設計(論文) 地點:軟體工程實訓中心一部 四、課程設計(論 ...
課程設計(論文)任務書(文章末尾--源文檔下載)
軟體 學院 軟體工程 專業 2016 -7 班
一、課程設計(論文)題目 綜合課程設計2
二、課程設計(論文)工作自 2018 年 1月 1 日起至 2018 年 1月 12 日止。
三、課程設計(論文) 地點:軟體工程實訓中心一部
四、課程設計(論文)內容要求:
1.本課程設計的目的
(1)使學生熟練掌握資料庫基本原理;
(2)使學生熟練掌握資料庫的分析和設計能力;
(3)培養學生熟練使用常見的資料庫管理系統;
(4)培養學生使用Java語言進行面向對象設計的能力;
(5)培養學生熟練使用Java語言進行資料庫應用程式設計的能力;
(6)提高學生的科技論文寫作能力。
2.基本要求:
課程設計題目:報刊訂閱管理系統
設計主要內容:設計一個報刊訂閱應用系統,使系統滿足以下功能和需求:
1)一個訂戶可以訂多種報刊;一種報刊可被多個用戶訂閱;訂單隻能訂閱現有報刊目錄
投遞時,必鬚根據訂單的情況進行投遞,不得超出訂單的訂閱品種,數量;
2)訂閱管理:訂戶添加,修改,刪除;
目錄管理:目錄添加,修改,刪除;
訂單管理:完成訂戶訂閱數據的管理(包括添加,修改,刪除)
訂單查詢:按訂戶或者訂單號查詢訂單詳細情況;
統計查詢:按報刊目錄統計各類報刊的訂閱數量和金額;
3.課程設計論文編寫要求
(1)要按照書稿的規格列印謄寫課設報告;
(2)報告分為封面、任務書(本文檔)、正文、課程設計體會和參考文獻四部分;
學生簽名:
2018年1月 1日
課程設計(論文)評審意見
(1)題目分析 (20分):優( )、良( )、中( )、一般( )、差( );
(2)流程分析 (30分):優( )、良( )、中( )、一般( )、差( );
(3)數據定義 (30分):優( )、良( )、中( )、一般( )、差( );
(4)代碼編寫 (10分):優( )、良( )、中( )、一般( )、差( );
(5)創新能力 (10分):優( )、良( )、中( )、一般( )、差( );
(6)格式規範性、設計態度及考勤是否降等級:是( )、否( )
評閱人: 職稱:講師
2018年 1 月 12 日
正 文
一、 數據設計
1. 實體
實體1:部門
屬性1:部門號
屬性2:部門名
實體2:用戶
屬性1:用戶名
屬性2:密碼
屬性3:真實姓名
屬性4:性別
屬性5:部門號
屬性6:聯繫電話
屬性7:聯繫地址
屬性8:訂閱報刊種類數
實體3:管理員
屬性1:管理員名
屬性2:密碼
實體4:報刊
屬性1:報刊代號
屬性2:報刊名
屬性3:類型
屬性4:出版報社
屬性5:出版周期
屬性6:半年訂閱價
屬性7:全年訂閱價
實體5:訂閱
屬性1:用戶名
屬性2:報刊代號
屬性3:訂閱年限
屬性4:訂閱數量
屬性5:所需金額
|
結構功能圖:
聯繫
本設計中實體之間的聯繫如下(E-R圖):
|
系統E-R圖:
1
|
n
m n
各實體E-R 圖:
|
部門:
用戶:
|
管理員:
報刊:
關係表E-R 圖:
二、 資料庫設計
1. 關係模式
本設計中的關係模式如下:
部門(部門號,部門名)關係主鍵:部門號;外鍵:無
用戶(用戶名,密碼,真實姓名,性別,部門號,聯繫電話,聯繫地址,訂閱報刊種類數)關係主鍵:用戶名;外鍵:部門號
管理員(管理員名,密碼)關係主鍵:管理員名;外鍵:無
報刊(報刊代號,報刊名,類型,出版報社,出版周期,半年訂閱價,全年訂閱價)
關係外鍵:報刊代號;外鍵:無
訂閱(訂閱號,報刊代號,訂閱年限,訂閱數量,所需金額)
關係主鍵:訂閱號;外鍵:報刊代號
2. 數據表
本設計中創建的資料庫名為:
數據表分別為
表1:部門表
表2:用戶表
表3:管理員表
表4:報刊表
表5;訂閱表
2. 資料庫關係圖為:
三、 資料庫實現
設計中實現資料庫操作的SQL 語句如下:
1) 新建數據表:
1 CREATE TABLE [dbo].[Customer]( 2 3 [Cid] [char](10) COLLATE Chinese_CI_AS NOT NULL, 4 5 [Cname] [char](20) COLLATE Chinese_CI_AS NULL, 6 7 [Phone] [char](15) COLLATE Chinese_CI_AS NULL, 8 9 [Address] [char](50) COLLATE Chinese_CI_AS NOT NULL) 10 11 ON [PRIMARY] 12 13 GO 14 15 CREATE TABLE [dbo].[Login]( 16 17 [Uname] [char](20) COLLATE Chinese_CI_AS NOT NULL, 18 19 [Upassword][char](20) COLLATE Chinese_CI_AS NOT NULL) 20 21 ON [PRIMARY] 22 23 GO 24 25 CREATE TABLE [dbo].[Diretory]( 26 27 [Did] [char](10) COLLATE Chinese_CI_AS NOT NULL, 28 29 [Dname] [char](20) COLLATE Chinese_CI_AS NULL, 30 31 [Unitprice][float] NOT NULL, 32 33 [Ifo][char](50) COLLATE Chinese_CI_AS NULL) 34 35 ON [PRIMARY] 36 37 GO 38 39 CREATE TABLE [dbo].[Order]( 40 41 [Ono] [char](10) COLLATE Chinese_CI_AS NOT NULL, 42 43 [Cid][char](10) COLLATE Chinese_CI_AS NOT NULL, 44 45 [Odate] [datetime] NULL) 46 47 ON [PRIMARY] 48 49 GO 50 51 CREATE TABLE [dbo].[OrderDetail]( 52 53 [Ono] [char](10) COLLATE Chinese_CI_AS NOT NULL, 54 55 [Cid][char](10) COLLATE Chinese_CI_AS NOT NULL, 56 57 [Quantity] [int] NOT NULL, 58 59 [Qishu][int] NOT NULL, 60 61 [Unitprice][float] NOT NULL, 62 63 [Total][float] NULL) 64 65 ON [PRIMARY] 66 67 GO
2)新建查詢:
1 select * 2 3 from view_1 where 報刊編號 in"; 4 5 "(select news_id from 訂閱信息表 where reader_id=‘023’) 6 7 select * 8 9 from view_1 where 部門 in"; 10 11 "(select 部門號 from 用戶 where 用戶名=’肖總’)
四、 程式設計
1) 類
設計中定義的Java類如下:
2) Dbutils類,表示設計連接資料庫。
3) Main類,表示設計中添加面板,頁面跳轉,是JFrame的子類。
2) 類設計
1、Dbutils類
1 public class Dbutils { 2 3 private static String driver; 4 5 private static String url; 6 7 private static String user; 8 9 private static String pwd; 10 11 private static ResourceBundle rb=ResourceBundle.getBundle("com.jdbc.utils.jdbc"); 12 13 static 14 15 { 16 17 driver=rb.getString("driver"); 18 19 url=rb.getString("url"); 20 21 user=rb.getString("user"); 22 23 pwd=rb.getString("pwd"); 24 25 try { 26 27 Class.forName(driver); 28 29 } catch (ClassNotFoundException e) { 30 31 // TODO 32 33 自動生成的catch塊 34 35 e.printStackTrace(); 36 37 } 38 39 } 40 41 private Dbutils() 42 43 public static Connection getConnection() 44 45 46 47 { 48 49 Connection conn=null; 50 51 try { 52 53 conn=DriverManager.getConnection(url,user,pwd); 54 55 } catch (SQLException e) { 56 57 // TODO 58 59 自動生成的catch塊 60 61 e.printStackTrace(); 62 63 } 64 65 return conn; 66 67 } 68 69 public static void 70 71 72 73 close(Connection 74 75 76 77 conn,Statement 78 79 80 81 stmt,ResultSet 82 83 84 85 rs) 86 87 88 89 { 90 91 try { 92 93 94 95 if(conn!=null)conn.close(); 96 97 98 99 if(stmt!=null)stmt.close(); 100 101 102 103 if(rs!=null)rs.close(); 104 105 106 107 } catch (SQLException e) { 108 109 110 111 // TODO 112 113 114 115 自動生成的catch塊 116 117 118 119 e.printStackTrace(); 120 121 122 123 } 124 125 126 127 } 128 129 public static void main(String [] args) { 130 131 System.out.println(getConnection()); 132 133 }}
2、Main類
1 class Main extends JFrame implements ActionListener{ 2 3 JRadioButton manager,users; 4 5 JLabel label,label1,label2; 6 7 JTextField userName; 8 9 JPasswordField password; 10 11 JButton login,register,exit; 12 13 JPanel p1,p2,p3; 14 15 public Main(){ 16 17 init(); 18 19 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 20 21 setVisible(true); } 22 23 void init(){ 24 25 setLayout(new FlowLayout()); 26 27 setSize(390,260); 28 29 p1=new JPanel(); 30 31 p2=new JPanel(); 32 33 p3=new JPanel(); 34 35 label=new JLabel("歡迎使用報刊管理系統"); 36 37 Font font=new Font("隸書",Font.PLAIN,30); 38 39 label.setFont(font); 40 41 p1.add(label); 42 43 ButtonGroup group=new ButtonGroup(); 44 45 manager=new JRadioButton("管理員"); 46 47 users=new JRadioButton("用戶"); 48 49 group.add(manager); 50 51 group.add(users); 52 53 p2.add(manager); 54 55 p2.add(users); 56 57 label1=new JLabel("用戶名"); 58 59 p3.add(label1); 60 61 userName=new JTextField(10); 62 63 p3.add(userName); 64 65 label2=new JLabel("密碼"); 66 67 p3.add(label2); 68 69 password=new JPasswordField(10); 70 71 p3.add(password); 72 73 add(p1,BorderLayout.CENTER); 74 75 add(p2,BorderLayout.CENTER); 76 77 add(p3,BorderLayout.CENTER); 78 79 login=new JButton("登錄"); 80 81 register=new JButton("註冊"); 82 83 exit=new JButton("退出"); 84 85 add(login); 86 87 add(register); 88 89 add(exit); 90 91 userName.addActionListener(this); 92 93 login.addActionListener(this); 94 95 register.addActionListener(this); 96 97 exit.addActionListener(this); 98 99 } 100 101 public static void main(String[] args) 102 103 { 104 105 Main f=new Main(); 106 107 f.setTitle("報刊訂閱管理系統"); 108 109 } 110 111 public void actionPerformed(ActionEvent e) { 112 113 // TODO 114 115 自動生成的方法存根 116 117 if(e.getSource()==register) //註冊(登錄、退出類似) 118 119 { 120 121 new UsersRegister();//過渡到新的視窗 122 123 Menu; 124 125 this.dispose();//釋放當前視窗 126 127 } }
五、 Java源代碼
1 package com.jdbc.utils; 2 import java.sql.Connection; 3 4 import java.sql.DriverManager; 5 6 import java.sql.ResultSet; 7 8 import java.sql.SQLException; 9 10 import java.sql.Statement; 11 12 import java.util.ResourceBundle; 13 14 InformationDaoImpl.java//添加報刊信息 15 16 17 18 public static void main(String[] args) //錄入報刊信息(錄入用戶信息和對用戶,報刊,訂單的增刪改查與之類似 19 20 { 21 22 LoggingdataNewspaper f=new LoggingdataNewspaper(); 23 24 f.setTitle("報刊信息"); 25 26 } 27 28 public void actionPerformed(ActionEvent e) { // TODO 自動生成的方法存根 29 30 if(e.getSource()==button5) // 退出 31 32 { 33 34 new ManagerHome();//過渡到新的視窗Menu; 35 36 this.dispose();//釋放當前視窗 37 38 } 39 40 if(e.getSource()==button1) // 添加 41 42 { 43 44 //定義一個空的newspaper對象 45 46 newspaper news=new newspaper(); 47 48 //將數據封裝到news中 49 50 news.setNewsNo(text1.getText().trim()); 51 52 news.setNewsName(text2.getText().trim()); 53 54 news.setPublish(text3.getText().trim()); 55 56 news.setPubPeriod(text4.getText().trim()); 57 58 news.setContent(text5.getText().trim()); 59 60 news.setPrice(Float.parseFloat(text6.getText().trim())); 61 62 System.out.println(news); 63 64 //定義一個控制對象 65 66 InformationDaoImpl ifd=new InformationDaoImpl(); 67 68 //執行添加用戶操作 69 70 ifd.addNews(news); 71 72 } 73 74 if(e.getSource()==button2) // 刪除 75 76 { 77 78 //定義一個空的newspaper對象 79 80 newspaper delnews=new newspaper(); 81 82 //將數據封裝到delnews中 83 84 delnews.setNewsNo(text1.getText().trim()); 85 86 delnews.setNewsName(text2.getText().trim()); 87 88 System.out.println(delnews); 89 90 //定義一個控制對象 91 92 InformationDaoImpl ifd=new InformationDaoImpl(); 93 94 //執行添加用戶操作 95 96 ifd.deleteNews(delnews); 97 98 } 99 100 if(e.getSource()==button3) // 查詢 101 102 { //定義一個空的newspaper對象 103 104 newspaper n=new newspaper(); //將數據封裝在n中 105 106 String news=text1.getText().trim(); //定義一個控制對象 107 108 InformationDaoImpl ifd=new InformationDaoImpl(); 109 110 n=ifd.FindNewsByNewspaper(news); 111 112 System.out.println(n); 113 114 text2.setText(n.getNewsName()); 115 116 text3.setText(n.getPublish()); 117 118 text4.setText(n.getPubPeriod());