zoukankan      html  css  js  c++  java
  • 报刊订阅管理系统的设计与实现

     

    课程设计(论文)任务书(文章末尾--源文档下载)

         软件      学院  软件工程 专业 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());
    119 
    120 text5.setText(n.getContent()); 
    121 
    122 text6.setText(String.valueOf(n.getPrice()));
    123 
    124 } 
    125 
    126 if(e.getSource()==button4) // 修改
    127 
    128 {  //定义一个空的users对象
    129 
    130 newspaper news=new newspaper(); //将数据封装到u当中
    131 
    132 news.setNewsNo(text1.getText().trim());
    133 
    134 news.setNewsName(text2.getText().trim());
    135 
    136 news.setPublish(text3.getText().trim());
    137 
    138 news.setPubPeriod(text4.getText().trim());
    139 
    140 news.setContent(text5.getText().trim()); 
    141 
    142 news.setPrice(Float.parseFloat(text6.getText().trim())); //定义一个控制对象
    143 
    144 InformationDaoImpl ifd=new InformationDaoImpl(); //执行修改用户信息操作
    145 
    146 ifd.updateNewspaper(news);
    147 
    148 System.out.println(news);
    149 
    150 }
    151 
    152 }
    153 
    154 public void addNews(newspaper n){ //定义一个空的连接对象
    155 
    156 Connection conn=null; //定义一个准备sql语句
    157 
    158 PreparedStatement ps=null; //自定义将要执行的sql语句
    159 
    160 String sql="insert into
    161 
    162 newspaper(newsNo,newsName,publish,pubPeriod,content,price)
    163 
    164 values(?,?,?,?,?,?)";  //通过Dbutils得到数据库的连接
    165 
    166 conn=Dbutils.getConnection();
    167 
    168 System.out.println(conn);
    169 
    170 try {  //将sql语句传给ps(接收sql语句的容器)
    171 
    172 ps=conn.prepareStatement(sql); //将news的各个属性值添加到?处
    173 
    174 ps.setString(1, n.getNewsNo());
    175 
    176 ps.setString(2, n.getNewsName());
    177 
    178 ps.setString(3, n.getPublish());
    179 
    180 ps.setString(4, n.getPubPeriod());
    181 
    182 ps.setString(5, n.getContent());
    183 
    184 ps.setFloat(6, n.getPrice());  //执行sql语句(相当于在数据库中执行sql语句)
    185 
    186 ps.executeUpdate();
    187 
    188 } catch (SQLException e) { 
    189 
    190 e.printStackTrace();
    191 
    192 } 
    193 
    194 finally{  //释放连接,同时释放资源
    195 
    196 Dbutils.close(conn, ps, null);
    197 
    198 }
    199 
    200 }//通过报刊号和报刊名删除报刊
    201 
    202 public void deleteNews(newspaper dn) { // TODO 自动生成的方法存根
    203 
    204 Connection conn=null; 
    205 
    206 PreparedStatement ps=null;
    207 
    208 conn=Dbutils.getConnection();
    209 
    210 String sql="delete from newspaper
    211 
    212 where
    213 
    214 newsNo=?
    215 
    216 and
    217 
    218 newsName=?";
    219 
    220 try { 
    221 
    222 ps=conn.prepareStatement(sql);
    223 
    224 ps.setString(1, dn.getNewsNo());
    225 
    226 ps.setString(2, dn.getNewsName());
    227 
    228 ps.executeUpdate();
    229 
    230 } catch (SQLException e) {  // TODO 自动生成的catch 块
    231 
    232 e.printStackTrace();
    233 
    234 }finally
    235 
    236 { 
    237 
    238 Dbutils.close(conn, ps, null);
    239 
    240 }
    241 
    242 } //通过报刊代号查找报刊
    243 
    244 public newspaper FindNewsByNewspaper(String ne) {
    245 
    246 newspaper news= new newspaper();
    247 
    248 Connection conn=null; 
    249 
    250 PreparedStatement ps=null;
    251 
    252 ResultSet rs=null; 
    253 
    254 conn=Dbutils.getConnection(); 
    255 
    256 String sql="select * from newspaper where newsNo=?";
    257 
    258 try { 
    259 
    260 ps=conn.prepareStatement(sql);
    261 
    262 ps.setString(1, ne);
    263 
    264 rs=ps.executeQuery();
    265 
    266 if(rs.next())
    267 
    268 { 
    269 
    270 news.setNewsNo(rs.getString("newsNo"));
    271 
    272 news.setNewsName(rs.getString("newsName"));
    273 
    274 news.setPublish(rs.getString("publish")); 
    275 
    276 news.setPubPeriod(rs.getString("pubPeriod"));
    277 
    278 news.setContent(rs.getString("content"));
    279 
    280 news.setPrice(rs.getFloat("price"));
    281 
    282 } 
    283 
    284 } catch (SQLException e) {  // TODO 自动生成的 catch 块
    285 
    286 e.printStackTrace();
    287 
    288 }finally
    289 
    290 { 
    291 
    292 Dbutils.close(conn, ps, rs);
    293 
    294 } 
    295 
    296 return news; //更新报刊信息
    297 
    298 public void updateNewspaper(newspaper news) { // TODO Auto-generated method stub
    299 
    300 //定义一个空的连接对象
    301 
    302 Connection conn=null;//定义一个准备sql语句
    303 
    304 PreparedStatement ps=null; //自定义将要执行的sql语句
    305 
    306 String sql="update newspaper
    307 
    308 set
    309 
    310 publish=?
    311 
    312 ,pubPeriod=?,
    313 
    314 content=?, price=? where newsNo=? and newsName=? "; //通过Dbutil得到数据库的连接
    315 
    316 conn=Dbutils.getConnection();
    317 
    318 System.out.println(conn);
    319 
    320 try {  //将sql语句传给ps(接收sql语句的容器)
    321 
    322 ps=conn.prepareStatement(sql); //将user的各个属性值添加到?处
    323 
    324 ps.setString(1, news.getPublish());
    325 
    326 ps.setString(2, news.getPubPeriod());
    327 
    328 ps.setString(3, news.getContent());
    329 
    330 ps.setFloat(4, news.getPrice());
    331 
    332 ps.setString(5,news.getNewsNo());
    333 
    334 ps.setString(6, news.getNewsName()); //执行update SQL语句
    335 
    336 ps.executeUpdate();
    337 
    338 } catch (SQLException e) {  // TODO 自动生成的 catch 块
    339 
    340 e.printStackTrace();
    341 
    342 } 
    343 
    344 finally{  //释放连接,同时释放资源
    345 
    346 Dbutils.close(conn, ps, null);
    347 
    348 }
    349 
    350 } 

    六、 实验结果

    点击管理员,输入管理员用户名(admin)和密码(admin),点击“登录”,进入

     

    1-1 报刊订阅管理系统登入界面

     

     

     

    点击“录入报刊信息”按钮,进入录入报刊信息界面

    2-2管理员主界面

                  3-3 报刊管理

                  5-5订阅管理

    七、      实验小结

    1.     数据库设计小结

       SQL数据库的使用,让我对数据库概念及逻辑和物理结构设计有了更清晰的了解,这里我所选课题的概念结构设计即详细的E-R图,逻辑结构设计就是将E-R图转换为数据库的逻辑结构,并进行优化,而物理结构设计即选定实施环境,确定系统数据库的存储结构和存取方法等。还有就是数据实施维护,用DBMS建立数据库结构,加载数据,实现各种查询,链接应用程序,设计库中触发器,存储过程等对象,并能对数据库做简单的数据维护。

    2.     Java应用小结

       通过这次的课程设计,让我从之前学Java时的懵懵懂懂到现在理解了不少,学会了不少语法的连接,怎么在整个系统中使用到这部分,并且表达出来等等,都需要好好学习并熟悉里面的每个知识点和语法,及使用方法等等,面向对象的设计

    3.     需完善之处

    由于是初次综合使用SQL和Java来做东西,并且时间有限,不足之处不可避免。本系统的功能还不够强大,较真正的管理系统还有很多不足, 安全功能也有不足,比如用户真实姓名没有纠错,应该把所有的部门的职工全都输入到表中,当注册的时候,输入真实姓名,如果相关部门没有此人,则不允许注册,此功能尚未实现,将在以后的时间继续完善。

     

    课程设计体会

    这次课程设计的主要目的是掌握数据库应用系统分析设计的基本方法,基本掌握SQL和Java的使用,进一步提高分析解决问题的综合能力。通过这次课程设计,我基本掌握了以上要求。但只有2周的课程设计时间,时间比较仓促,所以开发的系统不是很完善,有一些功能未实现,但是报刊订阅的基本功能均已实现。以前对数据库还有Java的很多知识认识都不深刻,做过这次课程设计之后,我对这些都有个基本的系统了解,比如:对表内一些字段的约束,关系等的运用以及比较熟练。

    但是由于第一次真正的全系统运用,所以运用的不是很熟练。刚开始的时候,对于SQL和Java的语法,用法等一系列知识都不熟悉,经过对这个系统的开发,在开发过程中遇到但也解决了很多问题,所以说我们要迎难而上,不断地去学习,自己才有所成长,有所发展。

    参考文献

    1.数据库系统概论(第5版)王珊 萨师煊编著 高等教育出版社 2014年9月

    2.Java语言程序设计(第2版)丁振凡 编著 清华大学出版社2014年9月

    3.李刚.Java程序员之旅--Java数据库技术详解[J].化学工业出版社.2011.4

    4.姜中华、刘小春.Java 数据库应用程序设计[J].机械工业出版社.2008.4

    5.软件开发技术联盟.Java Web开发实践[J].清华大学出版社.2013.9

    Leszek A.Maciaszek.需求分析与系统设计[J]中信出版社.2003

    6.互联网资源

    扫码公众号回复--“报刊”获取原文件

  • 相关阅读:
    用RBG颜色设置自定义颜色
    Swift UI
    SVN上传代码时代码失败
    coredata中谓词的使用
    Core Data的使用(二)备
    CoreData (四)备
    CoreData (三)备
    CI框架篇之模型篇--直接操作(2)
    CI框架篇之模型篇--初识(1)
    CI框架篇之视图篇--载入(1)
  • 原文地址:https://www.cnblogs.com/chenqiwei/p/RunWsh_press.html
Copyright © 2011-2022 走看看