数据库课程设计报告

时间:2024.4.13

       西

              (计算机学院)

数据库课程设计报告

题  目:  英雄联盟账号信息管理系统

    专业名称:           软件工程

    级:           软件1202

    学生姓名:            尚奕帆

学号(8位):      

指导教师:             乔平安

起止时间:

一、 课程设计目的

      

    由于最近游戏《英雄联盟》非常火爆,刚好这学期学习了数据库相关知识,对这款游戏的账号信息管理产生兴趣。所以这次课程设计选题是:英雄联盟账号信息管理系统。要求是能够完成课程设计的分析、设计和编码,写出课程设计报告,了解数据库的操作,数据结构的设计,以及java和数据库的链接操作,并能够通过这次课程设计实践掌握Java的语言规范,面向对象的核心概念和特性。

二、课程设计内容

       本次数据库设计,设有五个表,分别是:玩家,召唤师,游戏,皮肤,购买记录。管理员通过登录系统,可以查看五个表的主要信息。还可以对五个表进行查询,添加,更改,删除的操作,从而对账户信息管理。

三、软硬件环境及系统所采用的体系结构

系统的体系结构为C/S结构,开发语言采用Java,数据库软件采用SQL Server 2000(必须升级到SP3),Java语言使用MyEclipse开发环境,系统支持采用Windows 系统。

四、需求分析

4.1 数据流图

椭圆: 《英雄联盟》      账号信息管理系统

 


说明:

1.管理员的操作包括:

      (1)玩家信息基本管理

          玩家的基本信息输入,查询,更改,删除

      (2)召唤师信息基本管理

          召唤师的基本信息输入,查询,更改,删除

      (3)英雄信息基本管理

          英雄的基本信息输入,查询,更改,删除

      (4)皮肤信息基本管理

          皮肤的基本信息输入,查询,更改,删除

      (5)购买记录信息基本管理

          购买记录的基本信息输入,查询,更改,删除

     (6)统计报表

        基本信息表,包括玩家基本信息(QQ,姓名),召唤师(角色名称,等级,段位,游戏胜率,创建时间,金币),购买记录(购买英雄)。

   2、以上的用户请求经应用程序的转化,化为对数据库中的相应的表或视图的操作,数据库再把处理的结果(或都是错误信息)返回结应用程序。

   3、应用程序把结果返回给用户,该结果可能为一个对表操作的结果(如插入,删除等),也可能为一个查询的结果,甚至可能为一个错误的信息。

4.2 数据字典

根据题目需求,账号管理系统主要对玩家,召唤师,英雄,皮肤,购买记录的管理,由此分析得到如下数据结构:

数据库表结构设计,数据项如下:表名分别为 玩家,召唤师,英雄,皮肤,购买记录

2.3安全性和完整性要求

安全性和完整性要求:

 通过设置外键,建立它们之间的关系,并使它们级联更新相关的字段,级联删除相关的记录。对于构成了环的级联更新或删除,而不能建立级联更新或删除的,通过建立触发器,使得它们保持数据的完整性。

本系统的外键设置和级联操作有:外键:召唤师表的QQ,皮肤表的英雄名称。

购买记录表的角色名称和英雄名称等。在玩家表,召唤师表,英雄表,皮肤表建立触发器不能插入重复记录,从而实现数据库的完整性。

五、系统设计

       1.系统结构图(功能模块图)

对系统进行分析,给出系统结构图;并对各个模块进行功能的描述。

 

 

 

(1)用以显示所有基本信息。

(2)对玩家表的操作:查询所有玩家与单个玩家的信息,添加一条玩家记录,对一条玩家记录信息进行修改并保存,删除一条玩家记录信息。

(3)对召唤师表的操作:查询所有召唤师与单个召唤师的信息,添加一条召唤师记录,对一条召唤师记录信息进行修改并保存,删除一条召唤师记录信息。

(4)对英雄表的操作:查询所有英雄与单个英雄的信息,添加一条英雄记录,对一条英雄记录信息进行修改并保存,删除一条英雄记录信息。

(5)对皮肤表的操作:查询所有皮肤与单个皮肤的信息,添加一条皮肤记录,对一条皮肤记录信息进行修改并保存,删除一条皮肤记录信息。

(6)对购买记录表的操作:查询所有购买记录与单条购买记录的信息,添加一条购买记录,对一条购买记录信息进行修改并保存,删除一条购买记录信息。

(7)返回操作:返回上一层界面。

(8)退出操作:退出系统。

2.数据库设计

      要求画出E-R图,然后进行逻辑模式的设计,最后得到设计合理的表。

椭圆: 年龄椭圆: 姓名ER图:

 


逻辑模式:

玩家(QQ,姓名,年龄,性别,电话)

召唤师(角色名称,等级,段位,游戏胜率,金币,创建时间,QQ

英雄(英雄名称,类别,位置)

皮肤(皮肤名称,级别,英雄名称

购买记录(角色名称,英雄名称,购买时间)

表的设计:

六、系统的实施

系统的实现方法,应用程序的编制方法,重要代码的说明。

(可以给出流程图)

系统流程:

 

重要代码:

主界面:

publicclass Main {

    JTextField tf_name;

    JFrame jf;

    JPasswordField tf_mi;

    int i;

    public Main(){

    jf=new JFrame("英雄联盟登录系统");

    jf.setSize(250,250);

    jf.setLocation(600,250);

    JPanel pan=new JPanel();

    JLabel name=new JLabel("用户名");

    JLabel mi=new JLabel("密码");

    pan.add(name);

    tf_name=new JTextField(20);

    pan.add(tf_name);

    pan.add(mi);

    tf_mi=new JPasswordField(20);

    pan.add(tf_mi);

    final JButton jb=new JButton("登录");

    pan.add(jb);

    jf.add(pan);

    jf.setResizable(false);

    jf.setVisible(true);

    i=1;

    jb.addActionListener(new ActionListener(){

        @SuppressWarnings("deprecation")

        publicvoid actionPerformed(ActionEvent e) {

               i++;

               String name=tf_name.getText();

               String mi=tf_mi.getText();

               if(name.equals("sa")&&mi.equals("123")){  

                   jf.setVisible(false);

                   new MainInterface();

               }

               else{

                   if(i<=3){

                      JOptionPane.showMessageDialog(jb,"用户名或密码错误请重新输入");//给jb组件增加对话框信息

                   }

                   else{

                       JOptionPane.showMessageDialog(jb,"三次输入错误退出程序!!!");

                       System.exit(0);

                   }

               }

        }

    });

    final JButton jb1=new JButton("退出");

    pan.add(jb1);

    jb1.addActionListener(new ActionListener() {

            publicvoid actionPerformed(ActionEvent e) {

                JOptionPane.showMessageDialog(jb1,"谢谢使用!!!");

                System.exit(0);

            }

        });

    }

    publicstaticvoid main(String[] args) {

        new Main();

    }

与Java语言数据库的连接:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

           String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

           Connection conn=DriverManager.getConnection(dbURL,"sa","123");

视图显示:

class All extends JFrame{

    @SuppressWarnings("unchecked")

    public All(){

        JTable jt=new JTable();

        String header[]={"QQ","姓名","角色名称","等级","段位","游戏胜率","创建时间","金币","购买英雄"};

        DefaultTableModel md=new DefaultTableModel(header,0);

        JScrollPane scorllPane=new JScrollPane(jt);

        jt.setModel(md);

        try {

           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

           String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

           Connection conn=DriverManager.getConnection(dbURL,"sa","123");

           Statement stmt=conn.createStatement();

           String sql="select * from 信息";

           ResultSet rs=stmt.executeQuery(sql);

           while(rs.next()){

               Vector v=new Vector();

               v.addElement(rs.getString("QQ"));

               v.addElement(rs.getString("姓名"));

               v.addElement(rs.getString("角色名称"));

               v.addElement(rs.getString("等级"));

               v.addElement(rs.getString("段位"));

               v.addElement(rs.getString("游戏胜率"));

               v.addElement(rs.getString("创建时间"));

               v.addElement(rs.getString("金币"));

               v.addElement(rs.getString("购买英雄"));

               md.addRow(v);

           }

           conn.close();

       } catch (ClassNotFoundException e1) {

           e1.printStackTrace();

       } catch (SQLException e1) {

           e1.printStackTrace();

       }

       this.getContentPane().add(scorllPane,BorderLayout.CENTER);

       this.setSize(800,600);

       this.setTitle("基本信息");

       this.setResizable(false);

       this.setVisible(true);

       this.setLocation(300,100);

    }

}

查询:

jb.addActionListener(new ActionListener() {

            publicvoid actionPerformed(ActionEvent e) {

                String a=jt.getText();

                Double x=new Double(a);

                int qq=(int)x.doubleValue();

                try {

                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                   String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

                   Connection conn=DriverManager.getConnection(dbURL,"sa","123");

                   Statement stmt=conn.createStatement();

                   String sql="select * from 玩家 where QQ="+qq+"";

                   ResultSet rs=stmt.executeQuery(sql);

                   int i=0;

                   while(rs.next()){

                       i=1;

                       jl_1.setText("QQ:"+rs.getInt(1));

                       jl_2.setText("姓名:"+rs.getString(2));

                       jl_3.setText("年龄:"+rs.getInt(3)+"岁");

                       jl_4.setText("性别:"+rs.getString(4));

                       jl_5.setText("电话:"+rs.getString(5));

                   }

                   conn.close();

                   if(i==0) JOptionPane.showMessageDialog(jb,"查无此账号!!!");

               } catch (ClassNotFoundException e1) {

                   e1.printStackTrace();

               } catch (SQLException e1) {

                   e1.printStackTrace();

               }

            }

        });

添加新的纪录:

jb1.addActionListener(new ActionListener() {

            publicvoid actionPerformed(ActionEvent e) {

                String a=jt1.getText();

                Double x=new Double(a);

                int qq=(int)x.doubleValue();

                String na=jt2.getText();

                String b=jt3.getText();

                Double y=new Double(b);

                int age=(int)y.doubleValue();

                String tel=jt5.getText();

                if(arg[jt4.getSelectedIndex()].equals("请选择")) {

                    JOptionPane.showMessageDialog(jb1,"保存失败,请修改带星号数据。");

                    jl_x1.setText("**");

                }

                else{try {

                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                   String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

                   Connection conn=DriverManager.getConnection(dbURL,"sa","123");

                   Statement stmt=conn.createStatement();

                   String sql="insert into 玩家 values("+qq+",'"+na+"',"+age+",'"+arg[jt4.getSelectedIndex()]+"','"+tel+"')";

                   int i=stmt.executeUpdate(sql);

                   conn.close();

                   if(i>0){

                       JOptionPane.showMessageDialog(jb1,"保存成功,返回菜单");

                       jf.setVisible(false);

                       new JB1();

                   }

                   else {

                       JOptionPane.showMessageDialog(jb1,"保存失败,请修改带星号数据。");

                       jl_x.setText("**");

                       jl_x1.setText("");

                   }

               } catch (Exception e1) {

                   JOptionPane.showMessageDialog(jb1,"保存失败!!!");

                   e1.printStackTrace();

               }

                }

            }

        });

记录的更新:

jb1.addActionListener(new ActionListener() {

                publicvoid actionPerformed(ActionEvent e) {

                    String na=jt2.getText();

                    String nl=jt3.getText();

                    Double x=new Double(nl);

                    int age=(int)x.doubleValue();

                    String tel=jt5.getText();

                    String a=jt.getText();

                    Double y=new Double(a);

                    int qq=(int)y.doubleValue();

                    if(arg[jt4.getSelectedIndex()].equals("请选择")) {

                        JOptionPane.showMessageDialog(jb1,"更新失败,修改信息。");

                    }

                    else{try {

                       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                       String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

                       Connection conn=DriverManager.getConnection(dbURL,"sa","123");

                       Statement stmt=conn.createStatement();

                       String sql="update 玩家 set 姓名='"+na+"',年龄="+age+",性别='"+arg[jt4.getSelectedIndex()]+"',电话='"+tel+"' where QQ="+qq;

                       int i=stmt.executeUpdate(sql);

                       conn.close();

                       if(i>0){

                           JOptionPane.showMessageDialog(jb1,"更新成功,返回菜单。");

                           jf.setVisible(false);

                           new JB1();

                       }

                       else JOptionPane.showMessageDialog(jb1,"更新失败,修改信息。");

                   } catch (ClassNotFoundException e1) {

                       e1.printStackTrace();

                   } catch (SQLException e1) {

                       e1.printStackTrace();

                   }

                    }

                }

            });

记录的删除:

jb.addActionListener(new ActionListener() {

            publicvoid actionPerformed(ActionEvent e) {

                String QQ=jt.getText();

                Double d=new Double(QQ);

                int qq=(int)d.doubleValue();

                try {

                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                   String dbURL ="jdbc:odbc:driver={sql server};server=SHANGYIFAN-PC;database=YXLM";

                   Connection conn=DriverManager.getConnection(dbURL,"sa","123");

                   Statement stmt=conn.createStatement();

                   String sql2="delete from 购买记录 where 角色名称 in(select 角色名称 from 召唤师 where QQ="+qq+")";

                   stmt .executeUpdate(sql2);

                   String sql="delete from 玩家 where QQ="+qq;

                   int i=stmt.executeUpdate(sql);

                   String sql1="delete from 召唤师 where QQ="+qq;

                   stmt.executeUpdate(sql1);

                   conn.close();

                   if(i>0){

                       JOptionPane.showMessageDialog(jb,"删除成功,返回菜单。");

                       jf.setVisible(false);

                       new JB1();

                   }

                   else{

                       JOptionPane.showMessageDialog(jb,"查无此账号,请修改信息。");

                   }

               } catch (ClassNotFoundException e1) {

                   e1.printStackTrace();

               } catch (SQLException e1) {

                   e1.printStackTrace();

               }

            }

        });

注:以上为玩家表的增删改查,其他表的增删改查与其核心相同。

退出按钮:

jb3.addActionListener(new ActionListener() {

            publicvoid actionPerformed(ActionEvent e) {

                JOptionPane.showMessageDialog(jb3,"谢谢使用!!!");

                System.exit(0);

            }

        });

七、系统评价及心得体会

1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。

在这次课程设计中,完成了基本要求,对数据库设计有了一定的了解。这次的数据库结构设计,表与表之间有基本正确的联系,可以完成基本操作,如查询,增添,更改,删除。但仍不足之处,在界面上设计,应该更加方便使用者使用,更加人性化。还有在完成操作应该更加丰富,比如:统计,排序等。在对表操作上过于单一化,只是对一个表操作,设计增加视图,增强表之间的联系。

2、在学习过程中的感受。

在本次设计中,我们学到很多。当我们遇到问题时,去图书馆,上网查资料,询问同学。比如,数据库与Java语言的连接,Java的图形用户界面GUI的相关知识,都是通过查阅资料学习到的。通过这次课程设计,我们对数据库设计有了

更深了解,当遇到困难时,只有去分析过后,才能真正学到知识。

八、参考文献

 

  《数据库系统原理和应用》 孟彩霞 主编 人民邮电出版社

《Java 核心技术》-第7版

《数据库系统概论》-王珊编第四版

《SQL Server 数据库应用技术》张水平编

《软件工程》-李代平编第二版

《Java API文档》电子版等

九、附录:源代码

(略,详见电子版实验报告)

更多相关推荐:
数据库课程设计报告范例

数据库课程设计报告课题名称:图书管理统专业:信息与计算科学班级:信计071班小组人员:***一.背景资料在高校中,学生的数量较多,图书的数量也比较多,每天图书的借阅量比较大,采用手工的处理方式已经不能满足这种需…

数据库课程设计报告

南京理工大学泰州科技学院计算机科学与技术系信管专业10信管2班级大型数据库课程设计报告书姓名赵敏学号指导老师职称讲师设计地点起讫时间完成报告书时间20xx年12月5日第1页课程设计要求各专业学生应根据课程任教老...

数据库课程设计报告

数据库课程设计设计题目数据库创建和修改表专业物联网工程班级20xx级设计人林升学号20xx01052143山东科技大学20xx年7月3日课程设计任务书一课程设计题目创建和修改表的定义二课程设计主要参考资料1数据...

SQLServer数据库课程设计报告

武汉工业学院数据库系统课程设计说明书设计题目选课管理系统姓名学院专业学号指导教师20xx年6月8日一读书笔记1SQL数据库的实际应用SQL包括了所有对数据库的操作主要是由4个部分组成1数据定义这一部分又称为SQ...

数据库课程设计报告

计算机与控制工程学院数据库原理及应用课程设计报告题目名称选课系统专业计科班级计1211学号20xx58501149姓名李利娟指导教师毕远伟20xx年01月11日1课程设计评语班级计1211学号20xx58501...

分布式数据库课程设计报告

分布式数据库在学生信息管理系统中的应用班级姓名设计时间指导教师评语评阅成绩目录摘要31第一章绪论411课题研究的意义412分布式数据库技术国外发展现状413分布式数据库技术国内发展现状514分布式数据库技术发展...

数据库课程设计报告090247

北京广播电视大学数据库应用课程设计报告书题目出版社图书管理系统姓名杨春振学号20xx7110090247班级09春计算机分校通州电大指导教师姚行洲设计日期20xx年7月北京广播电视大学课程设计任务书题目出版社图...

数据库课程设计报告

数据库课程设计题目游戏后台数据库系统姓名学生班号学号专业指导教师20##年4月10日~20##年4月20日目录第一章需求分析...-1-1.1系统背景1.2系统需求分析1.3目标与任务1.4数据流程第二章系统概…

数据库课程设计报告

数据库课程设计报告目录一、课程设计概述.21.1课程设计的目的与任务.21.2课程设计的主要内容.21.3所选题目及成员.2二、系统需求分析.22.1功能需求分析.22.2性能需求及运行环境分析.32.3数据需…

数据库课程设计报告

湖南文理学院数据库课程设计1数据库原理与应用课程设计报告题目仓库管理系统设计专业班级电信0801班设计学生蒋文福设计时间20xx年6月20日7月1日湖南文理学院物理与电子科学学院湖南文理学院数据库课程设计摘要随...

数据库课程设计报告

数据库课程设计报告学号20xx1004357姓名李世荣班级19xx23指导老师胡霍真邮件管理系统摘要21世纪是网络飞速发展的时代电子邮件已经成为热门话题随着网络技术的不断发展网络应用已经渗透到人类社会的各个角落...

数据库课程设计报告模板

数据库课程设计方案长江大学管理学院信息20xx级1设计目的数据库课程设计是信息管理与信息系统专业大四学生的重要实践性环节之一是学生在学习完数据库原理及应用课程后锻炼自身实践能力的一次综合性实验本课程设计的主要目...

数据库课程设计报告(17篇)