報刊訂閱管理系統的設計與實現

来源:https://www.cnblogs.com/chenqiwei/archive/2019/07/07/RunWsh_press.html
-Advertisement-
Play Games

課程設計(論文)任務書(文章末尾--源文檔下載) 軟體 學院 軟體工程 專業 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());
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是 canvas 按例是要介紹一下 canvas 的,在沒有 canvas 之前,我們為了網頁的效果,很多情況下是使用了圖片來實現,不過用圖片就需要載入,而且圖片的體積也是一個問題,所以在 html5 的規範里新增了一個 canvas 元素(畫布) 那麼其實在 html5 中有兩個 2d 圖形技 ...
  • 整理 Kindle 標註、書簽和筆記從未如此簡單! Kindle 標註管理應用 "Kindle Mate" 只支持 Windows,不支持 Mac。標註只是解析 我的剪貼 文本文件,配合 "FileReader" API,寫個 Chrome 擴展解析文本文件就好了。 <! more "Chrome ...
  • 使用new關鍵字調用函數 test.js 代碼如下 function Person(name, age, obj) { var o = new Object(); o.name = name; o.age=age; o.obj=obj; o.sayName=function(){ alert(thi ...
  • 由於筆記比較雜,本身學習程度並不理想,所以暫時沒有整理這些繁雜的筆記。 ps:博客園markdown用起來和看起來都舒服太多了,這才是我瞭解的那個markdown,又回來了! 筆記 DOM對象 document object model DOM 中節點種類一共有三種 註:在JS中所有的節點都是對象 ...
  • 重新建立引用關係: 導出多個成員(必須在對象中): 方法一(使用 exports): exports.a = 123; exports.b = 'hello'; exports.c = () => { console.log('ccc'); }; exports.d = { foo: 'bar' } ...
  • 在http://www.w3school.com.cn/ 學習前端知識,利用暑假,自主學習以拓展知識面 DAY 1 HTML 不是一種編程語言,而是一種標記語言 (markup language) 標記語言是一套標記標簽 (markup tag) HTML 使用標記標簽來描述網頁 HTML 文檔描述 ...
  • 這裡總結一下上次使用bootstrap-select的過程中遇到的一些問題。至於bootstrap-select的具體使用方法這裡就不介紹了,網上有很多例子。 地址: 官方插件地址:https://developer.snapappointments.com/bootstrap-select Git ...
  • SpringCloud系列教程 | 第八篇:Spring Cloud Bus 消息匯流排 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如無特殊說明,本系列教程全採用以上版本 前面兩篇文章我們聊了Spring Cloud Config配置中心 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...