• 数据库课程设计个人总结报告 在大二上学期的16周周四,我们小组完成了数据库课程设计,本次课程设计我们小组总共四个人,虽然没有明确谁是组长,但是我感觉分工合作的效率还是挺高的,比预期更快的完成了任务。作为...

    数据库课程设计个人总结报告

       在大二上学期的16周周四,我们小组完成了数据库课程设计,本次课程设计我们小组总共四个人,虽然没有明确谁是组长,但是我感觉分工合作的效率还是挺高的,比预期更快的完成了任务。作为小组的一员,我平时事情比较多,小组分配的任务也没有太多,但还是完美的完成任务,很高兴小组成员一起的共同努力、互相学习。
       在课程设计的开始阶段,老师便给了我们所有人一个实施方案,这比较方便、快速、准确的去完成每天的任务,对于这种分工完成的项目,组员之间的交流是极其必要的。如果组员之间不能很好的沟通,不仅会做很多无用功,而且也会做很多重复的工作。组员之间很好点,我们每天都会在qq上或者见面相互交流。除此之外,我们还相互帮助解决问题,或者共同解决问题,向做概念模型和需求分析的不同任务就是相互帮助的,当然最重要的是我们也常会去与老师沟通,老师也在关键的设计地方也给了很多很多的宝贵意见。
       在完成本次课程设计的阶段,我学到了要多主动积极的思考解决问题。有很多同学比较好学,总是不停的在与别人沟通交流,看似很积极,但是仔细分析他提出的那些问题确实没有太大的价值,稍微思考一下就能解决,只有经过自己不断的思考,才能达到课程设计的效果,没有谁一开始就会,都是后天不断的历练的结果。
       总的看来,要想高效的完成此次数据库课程设计,首先就要有一个扎实的理论基础,掌握课本上的命令操作、重点概念等。其次,团队的合作也是必不可少的,这需要后期的交流锻炼和信任。一个好的团队往往能够起到事半功倍的效果,我就认为我们团队的整体氛围就很好,很和谐,组员能够积极的完成分配的任务。虽然我们小组还有很多不足之处,但是还是值得肯定的,小组成员都很优秀,我自己也要更加努力,这次的课程设计也是一个很好的锻炼,同时也感谢有这么一个机会来提升团队合作的能力。
       今后定将更加积极向前,力争做到更好! 
    
    展开全文
  • Oracle数据库课程设计

    2020-07-02 16:31:14
    Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计Oracle数据库课程设计
  • C# 数据库课程设计

    2018-06-28 13:11:14
    数据库课程设计报告 题目:安徽工业大学通讯录管理系统 学号: 159074294姓名: 程效龙班级: 网152指导教师:陈业斌完成日期:2018年6月7日 目录一 引言1.1 通讯录系统设计开发的目的和意义1.2设计通讯录系统...

                            数据库课程设计报告

     

     

     

     

     

     

     

    题目:安徽工业大学通讯录管理系统

     

     

     

     

     

     

     

     

     

    学号: 1590.......

    姓名:程学长

    指导教师:陈业斌

    完成日期:2018年6月7

     

     

     

     

     

     

    目录

    引言

    1.1 通讯录系统设计开发的目的和意义

    1.2设计通讯录系统的任务及目标

    1.3通讯录系统开发及运行的软硬件环境

    通讯录系统的分析与设计

    2.1 通讯录系统需求分析

    2.1.1通讯录系统的目标任务

    2.1.2 通讯录系统的数据流图

    2.2 通讯录系统概念结构设计

    2.3 通讯录系统逻辑结构设计

    2.4 通讯录系统数据库创建

    2.5 通讯录系统总体结构设计

    三 通讯录系统的开发及实现

    3.1 通讯录系统的登录模块

    3.2 通讯录系统的主界面

    3.2.1 管理员登录界面

    3.2.2 普通用户登录界面

    3.3通信录系统的插入界面

    3.4 通讯录系统的修改界面

    3.5 通讯录系统的分组管理

    3.6 通讯录系统分组信息的插入和修改

    C#Windows窗体使用的背景图片

    五 总结

    参考文献

    附录 实验源码

     

     

    一:引言

    1.1安徽工业大学通讯录系统设计开发的目的和意义

    方便各级校友和在校人员交流

    适应快速发展的网络时代,大大方便了人们之间的交流

    1.2设计通讯录系统的任务及目标

    通讯录管理系统以方便人们的联系而创建的一个系统。在此系统中,为每个使用此系统的用户开发了用户名和密码,保证了用户的信息安全性。与此同时,此系统用于储存用户的基本信息和常用的联系方式,它方便了用户个人信息的储存和快速查阅的功能。

    1.3通讯录系统开发及运行的软硬件环境

    开发通讯录系统开发平台及运行环境如下:

    系统开发平台:Microsoft Visual Studio 2012

    系统开发语言:C#

    数据库管理软件:SQL Server 2008

    运行平台:Windows 10

    二:通讯录系统的分析与设计

    2.1 通讯录系统需求分析

    2.1.1通讯录系统的目标任务

    通讯录管理系统主要功能分为七个模块:用户登录、用户查询、添加记录、修改记录、删除记录、分组信息的查询以及分组信息的增删。

    用户登录:实现不同用户登录通讯录。

    显示全部:实现用户对所有存在于数据库中的数据的显示,方便用户了解数据存储的情况。

    查找记录:实现用户在本软件数据库中查找自己需要的数据功能。

    添加记录:实现用户添加一条完整的记录,包括姓名、生日、电话、邮箱。

    修改记录:用户对数据库中已存在的记录进行修改,然后保存已经修改过的数据。

    删除记录:用户对数据库中已经存在的记录进行行删除操作,然后保存修改过的数据。

    分组信息查询:方便用户对通讯录的管理,针对通讯录中的人进行分组。

    分组信息的增删:实现用户增加、删除、修改联系人分组。

     

     

     

     

     

    2.1.2 通讯录系统的数据流图


     

     

     

     

     

     

     

     


     

     

     

     

     

     

     


     

     

     

     

     

     


     

     

     

     

    2.2 通讯录系统概念结构设计

    由需求分析的结果可知,本系统设计的实体包括:

    1)登录基本信息:用户名,密码。

    2)联系人基本信息:姓名,性别,出生日期,email,电话号码

    3)分组人基本信息:姓名,分组名称(院校),工作地点。

    这些实体间的联系包括:

    (1) 每位用户可以有多位联系人,多位联系人也可属于多个用户

    (2) 每位联系人属于一个分组。

    由上述分析可得到系统的E—R图:


     

     

     

     

     

     

     

     

    2.3 通讯录系统逻辑结构设计

    由系统E—R图转化而得到的关系模式如下:

    1)users(用户名,密码),其用户名为主键。

    2)联系人表(姓名,性别,出生日期,email,电话号码),其姓名为主键。

    3)分组信息(姓名,分组名称,工作地点),(姓名,分组名称)为主键。

    数据库中用到的表:

    2.1 users表

    Table 2.1 users

    属性名

    字段类型

    完整性约束

    用户名

    char

    Primary key

    密码

    char

    Not Null

    2.2 联系人表

    Table 2.2 Linkman

    属性名

    字段类型

    完整性约束

    姓名

    char

    Primary key

    性别

    char

    not null

    出生日期

    datetime

    not null

    email

    char

    not null

    电话号码

    char

    not null

    2.3 分组信息表

    Table 2.3 Group

    属性名

    字段类型

    完整性约束

    姓名

    char

    Primary key

    分组名称

    char

    Primary key

    工作地点

    char

    Not null

     

    2.4 通讯录系统数据库创建

      users表

     

     

     

    联系人表

     

     

     

    分组信息表


     

     

     

     

     

     

     

    2.5通讯录系统总体结构设计

     

     

     

     

     

      

    2.5 总体结构

    Fig 2.5 Form

    通讯录系统的开发及实现

    3.1 通讯录系统的登录模块

    打开此系统,我们先看到的是欢迎界面。从欢迎界面中,我们可以选择以管理员或是普通用户的身份进入通讯录系统。


     

    若以管理员身份登录,进入login


     

     

     

    若以普通用户的身份登录,进入login1


     

    3.2 通讯录系统的主界面

    3.2.1 管理员界面

    textbox中输入用户名和密码,点击登录按钮,与数据库的users表连接,验证输入的用户名和密码是否都正确。另外,当用户名和密码输入不正确或者为空时,都会弹出提示框来提示操作错误,重新输入。如果输入正确,则可以进入通讯录系统的主界面main。

     

     

    若以普通用户的身份登录,验证方法同上,进入通讯录系统主界面main1.

     

     

     

    3.3通信录系统的插入界面

     

    进入插入界面后,按照顺序将要添加的联系人信息填写完整,如果信息输入不完整,拒绝插入,反之,可以完成插入,显示插入成功的提示。可以返回通讯录系统登录主界面刷新查看,添加完成。


     

     

     

     

     

    3.4 通讯录系统的修改界面

    进入修改界面,修改要修改的信息,要提示的是,在数据库中,姓名为主键,在此不做修改。修改完成后,点击确定,返回一个修改成功的提示。此时,回到通讯录系统的主界面刷新查询,可以看到修改完成。

     

     

    3.5 通讯录系统的分组管理

    把分组信息表中的信息读到分组管理界面的datagridview中。


     

    选中某一行,点击删除。

     

     

    若删除成功,点击刷新,可以看到:

     

     

     

     

    3.6 通讯录系统分组信息的添加和修改

    为了方便操作,让添加和修改使用同一个显示界面,在分组管理的主界面点击修改按钮时,弹出插入窗口,将此窗口的名字改为“修改”。

     

     

     

     

     

     

    Windows窗体使用的背景图片

     图片均来自网上下载,大家可以自己下载设置不同的背景

     

     


     

     

     

    五.总结

    (1)一开始做数据库课程设计时,我花了半天时间构思做什么以及如何设计,最后确定做个安徽工业大学通讯录管理系统,觉得这个挺有意思的。

     

    (2)然后开始用C#设计,Windows 窗体部分比较简单,难的是代码如何写,经过我翻阅C#书以及从网上查阅资料,最终完成了代码部分。

     

    (3)然后我开设计数据库,因为已经学过数据库了,所以这部分并不太难

     

    (4)最后连接数据库,进行测试,测试阶段花的比设计时间还长,其中有一个错误令我印象深刻,

    sql = "select  姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

    一开始如下,运行时,一直报错。最后发现了错,少了 联系人表.姓名

    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

     

    (5)调试好所有的错误之后,我为了使界面美观,又从网上下载了Windows 窗体背景图片,并加入进去

     

    (6)最后完成了实验报告

     

    (7)这次的数据里课程设计,说心里话,我真的收获很多,首先,我对VS 2012 C# 这门语更加熟悉了,其次,我对数据库也更加熟悉了

     

    参考文献

    [1] 王珊 萨师煊.数据库系统概论.第四版.北京.高等教育出版社.2006年

    [2] 王超,潘杨.Visual C# 通用范例开发金典.北京.电子工业出版社.2008年

    [3] 马骏.c#程序设计及应用教程.第二版.北京.人民邮电出版社.2009

    [4] 陈向群,陈鸣,戴葵等.高等院校计算机课程设计指导丛书.北京.机械工程出版社.2012

     

     

     

    附录.源代码

    1.publicclass类源程序

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Data;

    using System.Data.SqlClient;

    using System.Threading.Tasks;

     

    namespace Course_Design_of_Database

    {

        class publicclass

        {

            public static SqlConnection createconn()

            {

                string connStr = @"Data Source=DESKTOP-KD4V0Q1\SQLEXPRESS;Initial Catalog=DatabaseTongxunlu;Integrated Security=True";

                SqlConnection conn = new SqlConnection(connStr);

                return conn;

            }

     

            public static DataTable gettable(string sql)

            {

                SqlConnection conn = createconn();

                SqlDataAdapter da = new SqlDataAdapter(sql, conn);

                DataTable dt = new DataTable();

                da.Fill(dt);

                return dt;

            }

     

            public static bool zhixingSQl(string sql)

            {

                SqlConnection conn = createconn();

                SqlCommand cmd = new SqlCommand(sql, conn);

                if (conn.State != ConnectionState.Open)

                {

                    conn.Open();

                }

                if (cmd.ExecuteNonQuery()>0)

                {

                    return true;

                }

                else

                {

                    return false;

                }

                conn.Close();

            }

            public static bool checkUser(string userName, string passWord)

            {

                string sql = "select 密码 from users where 用户名= '" + userName + "'";

                DataTable dt = gettable(sql);

                if (passWord == dt.Rows[0]["密码"].ToString().Trim())

                {

                    return true;

                }

                else

                {

                    return false;

                }

            }

        }

    }

    2. welcome界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class welcome : Form

        {

            public welcome()

            {

                InitializeComponent();

            }

     

            private void Welcome_Load(object sender, EventArgs e)

            {

     

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                login lo = new login();

                lo.Show();

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                login1 lo1 = new login1();

                lo1.Show();

            }

        }

    }

     

    3. login 界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class login : Form

        {

            public login()

            {

                InitializeComponent();

            }

     

            private void buttonok_Click(object sender, EventArgs e)

            {

                if (textBoxname.Text.Length != 0 && textBoxpwd.Text.Length != 0)

                {

                    if (publicclass.checkUser(textBoxname.Text.Trim(), textBoxpwd.Text.Trim()))

                    {

                        main formMain = new main();

                        formMain.Show();

                    }

                    else

                    {

                        MessageBox.Show("用户名或密码不正确", "提示");

                    }

                }

                else

                {

                    MessageBox.Show("用户名或¨密码不能¨为空", "提示");

                }

            }

     

            private void buttoncancel_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

     

            private void login_Load(object sender, EventArgs e)

            {

     

            }

        }

    }

    4.login1 界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class login1 : Form

        {

            public login1()

            {

                InitializeComponent();

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                if (textBoxname.Text.Length != 0 && textBoxpwd.Text.Length != 0)

                {

                    if (publicclass.checkUser(textBoxname.Text.Trim(), textBoxpwd.Text.Trim()))

                    {

                        main1 formMain = new main1();

                        formMain.Show();

                    }

                    else

                    {

                        MessageBox.Show("用户名或密码不正确", "提示");

                    }

                }

                else

                {

                    MessageBox.Show("用户名或¨密码不能¨为空", "提示");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

        }

    }

    5.main界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class main : Form

        {

            public main()

            {

                InitializeComponent();

            }

     

            private void 插入ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                insert forminsert = new insert();

                forminsert.Show();

            }

     

            private void main_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 联系人表");

                dataGridView1.DataSource = dt;

            }

     

            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                string sql = "delete 联系人表 where 姓名='" + name + "'";

                if (MessageBox.Show("是否要删除", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)

                {

                    if (publicclass.zhixingSQl(sql))

                    {

                       

                        MessageBox.Show("删除成功|");

                        group formgroup1 = new group();

                        formgroup1.Show();

                    }

     

                    else

                    {

                        MessageBox.Show("删除失败");

                    }

                }

            }

     

            private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                modify formmodify = new modify(name);

                formmodify.Show();

            }

     

            private void 添加分组ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group formgroup = new group();

                formgroup.Show();

            }

     

            private void 查询ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string sql;

                if (textBoxname.Text.Length != 0)

                {

                    sql = "select * from 联系人表 where 姓名= '" + textBoxname.Text.Trim() + "'";

                }

                else

                {

                    sql = "select * from 联系人表";

                }

                DataTable dt = publicclass.gettable(sql);

                dataGridView1.DataSource = dt;

            }

      private void button1_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

        }

    }

    6.main1界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    //using Excel = Microsoft.Office.Interop.Excel;

    using System.Data.OleDb;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class main1 : Form

        {

            public main1()

            {

                InitializeComponent();

            }

     

            private void 查询ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string sql;

                if (textBox1.Text.Length != 0)

                {

                    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

                }

                else

                {

                    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where  联系人表.姓名=分组信息.姓名";

                }

                DataTable dt = publicclass.gettable(sql);

                dataGridView1.DataSource = dt;

            }

     private void button1_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

     

            

        }

    }

    7.insert界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class insert : Form

        {

            public insert()

            {

                InitializeComponent();

            }

     

            private void in_insert_Click(object sender, EventArgs e)

            {

                if (in_name.Text.Length != 0  && in_phone.Text.Length != 0 &&

                     in_email.Text.Length != 0 && in_datatime.Text.Length != 0 &&

                    comboBox1.SelectedItem != null)

                {

                     string sql = "insert into 联系人表 (姓名,性别,出生日期,email,电话号码)values('" +

                        in_name.Text.Trim() + "','" + comboBox1.SelectedItem.ToString() + "','" + in_datatime.Text.Trim() +"','" + in_email.Text.Trim() + "','" + in_phone.Text.Trim() + "')";

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("插入成功");

                        this.Close();

                    }

                    else

                    {

                        MessageBox.Show("插入失败");

                    }

                }

                else

                {

                    MessageBox.Show("请完整填写信息");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

            }

     

            private void insert_Load(object sender, EventArgs e)

            {

                try 

                {

                    comboBox1.Items.Add("man");

                    comboBox1.Items.Add("woman");

                }

                catch(Exception ex)

                    {

                        MessageBox.Show(ex.Message);

                    }

     

            }

        }

    }

    8.modify界面源程序

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class modify : Form

        {

            string _name;

            public modify(string name)

            {

                InitializeComponent();

                _name = name;

            }

     

            private void mo_modify_Click(object sender, EventArgs e)

            {

                if (mo_name.Text.Length != 0 && mo_phone.Text.Length != 0 &&

                     mo_email.Text.Length != 0 && mo_datetime.Text.Length != 0 &&

                    mo_sex.Text.Length != 0)

                {

                    string sql = "update 联系人表 set 性别= '" + mo_sex.Text.Trim() + "',出生日期 = '" +

                        mo_datetime.Text.Trim() + "',email='" + mo_email.Text.Trim() + "' ,电话号码='" + mo_phone.Text.Trim() + "' where 姓名= '" + _name + "'";

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("修改成功");

                        this.Close();

                    }

                    else

                    {

                        MessageBox.Show("修改失败");

                    }

                }

                else

                {

                    MessageBox.Show("请完整填写信息");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

            }

     

            private void modify_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 联系人表 where 姓名 = '" + _name + "'");

                mo_name.Text = _name;

                mo_sex.Text = dt.Rows[0][1].ToString().Trim();

                mo_datetime.Text = dt.Rows[0][2].ToString().Trim();

                mo_email.Text = dt.Rows[0][3].ToString().Trim();

                mo_phone.Text = dt.Rows[0][4].ToString().Trim();

            }

        }

    }

    9.group界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class group : Form

        {

            public group()

            {

                InitializeComponent();

            }

     

            private void group_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 分组信息");

                dataGridView1.DataSource = dt;

            }

     

            private void 添加ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group1 formgroup1 = new group1();

                formgroup1.Show();

            }

     

            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                string sql = "delete 分组信息 where 姓名='" + name + "'";

                if (MessageBox.Show("是否要删除", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)

                {

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("删除成功");

                    }

                    else

                    {

                        MessageBox.Show("删除失败");

                    }

                }

            }

     

            

     

            private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group_Load(null, null);

            }

     

            private void 修改ToolStripMenuItem_Click_1(object sender, EventArgs e)

            {

                string gr_name;

                int index = dataGridView1.CurrentRow.Index;

                gr_name = dataGridView1["姓名", index].Value.ToString().Trim();

                group1 modgr = new group1(gr_name);

                modgr.Show();

            }

     private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                this.Close();

            }

        }

    }

    10.group1界面源程序

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class group1 : Form

        {

            public group1()

            {

                InitializeComponent();

            }

            public group1(string gr_num)

            {

                InitializeComponent();

                this.Text = "修改";

                this.gr_name1.Text = gr_num;

                this.gr_name1.Enabled = false;

                this.button1.Text = "修改";

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                if (this.Text != "修改")

                {

                    if (gr_name1.Text.Length != 0 && gr_name.Text.Length != 0 && gr_add.Text.Length != 0)

                    {

                        string sql = "insert into 分组信息(姓名,分组名称,工作地点) values('" +

                            gr_name1.Text.Trim() + "','" + gr_name.Text.Trim() + "','" + gr_add.Text.Trim() + "')";

                        if (publicclass.zhixingSQl(sql))

                        {

                            MessageBox.Show("插入成功");

                            this.Close();

                        }

                        else

                        {

                            MessageBox.Show("插入失败");

                        }

                    }

                    else

                    {

                        MessageBox.Show("请完整填写信息");

                    }

                }

                else

                {

                    if (gr_name1.Text.Length != 0 && gr_name.Text.Length != 0 && gr_add.Text.Length != 0)

                    {

                        string sql = "update 分组信息 set 工作地点='" + gr_add.Text.Trim() + "',分组名称 = '" +

                            gr_name.Text.Trim() + "' where 姓名= '" + gr_name1.Text.Trim() + "'";

                        if (publicclass.zhixingSQl(sql))

                        {

                            MessageBox.Show("修改成功");

                            this.Close();

                        }

                        else

                        {

                            MessageBox.Show("修改失败");

                        }

                    }

                    else

                    {

                        MessageBox.Show("请完整填写信息");

                    }

                }

            }

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

           } 

     }  

     }

    展开全文
  • 最近写完了数据库课程设计,想把整个源码的编辑过程发出来。程序很简单,需要有很多完善的地方,在这里,我想和大家分享写这个程序的心路历程。 首先,在开始写程序之前。我们需要先写一些工具类,来辅助完成整个...
    
     

    最近写完了数据库的课程设计,想把整个源码的编辑过程发出来。程序很简单,需要有很多完善的地方,在这里,我想和大家分享写这个程序的心路历程。

    首先,在开始写程序之前。我们需要先写一些工具类,来辅助完成整个程序的构建,在这里我把连接jdbc的代码放在了一个包下面。

    如下图:

    在这里我们先来写最基本的类,jdbcDrive,这是负责和数据库进行连接,并且执行语句的类

     

    public class jdbcDrive {
    	public static Connection connection;
    	public static Statement statement;
    	public static ResultSet  resultset;
    	public static void jdbcConnection(){
    		try {
    		    connection = DriverManager.getConnection(jdbc.dbURL, jdbc.userName,jdbc.userPwd);
    			System.out.println("连接数据库成功!");
    			} catch (Exception e) {
    			System.out.print("SQL Server连接失败!");
    			}
    	}
    	
    	public static void jdbcConnectionClose(){
    		try {
    			connection.close();
    			System.out.println("数据库连接成功关闭");
    		} catch (SQLException e) {
    			System.out.println("数据库连接关闭失败");
    		}
    	}
    	
    	public static void jdbcExecuteUpdate(String s) throws SQLException{
    		jdbcConnection();
    		statement=connection.createStatement();
    		statement.executeUpdate(s);
    	}
    	
    	public static void jdbcExecuteQuery(String s) throws SQLException{
    		jdbcConnection();
    		statement=connection.createStatement();
    		resultset=statement.executeQuery(s);
    	}
    	public static void main(String [] args) {
    	}
    }
    

    在这里我选择的是SQL SERVER 2014,它的jdbc版本已经不需要加载数据库了,可以直接进行连接,在这里分为四个方法。其中两个是负责,数据库的连接和释放。jdbcExecuteUpdate负责传递SQL的增加,修改,删除,不需要有结果集的语句。jdbcExecuteQuery负责进行jdbc的查询,将查询的结果放在resultset里面。Connection类是负责进行数据库的连接,Statement 负责传递查询语句。resultset是结果集,负责保存储存的信息。

     

     

    在进行数据的连接的时候,需要向数据库传递参数。我把参数放在了一个接口里面。

     

    public interface jdbc {
        String dbURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Dormitory";
    	String userName = "sa";
    	String userPwd = "123456";
    }

    写完基本的jdbc类之后,我们在进行整个系统的界面搭建。

     

    设计主界面的时候,用到以下几个类,第一个是用于放置菜单选项的JMenuBar,它是放置JMenu的容器,而JMenu是房子JMenuItem的容器。具体的构建过程就是,在JFrame里添加JMenu,用来表示要放置的菜单选项,在JMenu里面放置JMeunItem用来表示菜单的子选项。其中,用了JLabel来存放图片。各个JMenuItem的监听事件放在了一个单独的包里面。具体的搭建界面如下:

     

     

    public class Login extends JFrame {
    	private JButton loginButton,exitButton;
    	private JLabel userNameLabel,passwordLabel;
    	private JTextField userNameText;
    	private JPasswordField passwordText;
    	private HandleAction handleAction;
    	private static JPanel loginPanel;
    	private ManagementUi MainUi;
    	private Toolkit toolKit=null;
    	private Dimension screenSize=null;
    	public static personManage nowPeople;
    	public  Login(){
    		Init();
    	}
    	
    	public void Init(){
    		//获取当前窗口,并且获取屏幕的尺寸
    		toolKit=Toolkit.getDefaultToolkit();
    		screenSize=toolKit.getScreenSize();
    		//加载封装了图片的Panel子类,并添加到当前JFrame容器里面
    	    loginPanel=new LoginPanel();
    		loginPanel.setLayout(null);
    		add(loginPanel);
    		//将整个图框居中
         	setBounds(screenSize.width/2-loginPanel.getWidth()/2
         			,screenSize.height/2-loginPanel.getHeight()/2
         			,loginPanel.getWidth(),loginPanel.getHeight());
    		handleAction=new  HandleAction();
    		this.setIconImage(new ImageIcon("resource/picture.png").getImage());
    		//向loginPanel容器加入两个Jlabel,两个按钮,一个文本框,一个密码框
    		userNameLabel=new JLabel("用户名");
    		userNameLabel.setBounds(100, 120, 200, 18);
    		loginPanel.add(userNameLabel);
    		
    		userNameText=new JTextField();
    		userNameText.setBounds(150, 120, 150, 18);
    		loginPanel.add(userNameText);
    		
    		passwordLabel=new JLabel("密码");
    		passwordLabel.setBounds(100, 180, 200, 18);
    		loginPanel.add(passwordLabel);
    		
    		passwordText=new JPasswordField();
    		passwordText.setBounds(150, 180, 150, 18);
    		loginPanel.add(passwordText);
    		
    		loginButton=new JButton("登录");
    		loginButton.setBounds(150, 230, 60, 18);
    		loginPanel.add(loginButton);
    		
    		exitButton=new JButton("退出");
    		exitButton.setBounds(230, 230, 60, 18);
    		loginPanel.add(exitButton);
    		
    		exitButton.addActionListener(handleAction);
    		loginButton.addActionListener(handleAction);
    		setTitle("宁悦宿舍管理系统");
    		this.setResizable(false);
    		setVisible(true);
    		setDefaultCloseOperation(this.EXIT_ON_CLOSE);
    	}
    	private class HandleAction implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			if(e.getSource()==loginButton){
    				String pass=new String(passwordText.getPassword());
    				if(jdbcLogin.Judge(userNameText.getText(),pass)){
    					nowPeople=new personManage(userNameText.getText(),null,null,pass);
    					MainUi=new ManagementUi();
    					Login.this.setVisible(false);
    				}else{
    					JOptionPane.showMessageDialog(Login.this,"不是系统的合法用户或密码错误" );
    				}
    				
    			}else if(e.getSource()==exitButton) {
    				Login.this.dispose();
    			}
    		}
    	}
    	
    	public static void main(String [] args){
    		Login in=new Login();
    	}
    }
    
    class LoginPanel extends JPanel {
    	protected ImageIcon icon = new ImageIcon("resource/login.jpg");
    	public int width = icon.getIconWidth(), height = icon.getIconHeight();
    	public LoginPanel() {
    		super();
    		setSize(width, height);
    	}
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		Image img = icon.getImage();
    		 g.drawImage(img, 0, 0, icon.getIconWidth(),
    			      icon.getIconHeight(), icon.getImageObserver());
    	}
    }

    搭建完界面之后,我们按这个顺序来进行代码编码,首先,编写管理员的登录界面,然后写学生的管理界面,在写宿舍的管理界面,最后写调宿的管理界面。

     

    下面先来看登录界面的的截图:

     


     

    下面是整个登录界面的源代码:

     

    public class Login extends JFrame {
    	private JButton loginButton,exitButton;
    	private JLabel userNameLabel,passwordLabel;
    	private JTextField userNameText;
    	private JPasswordField passwordText;
    	private HandleAction handleAction;
    	private static JPanel loginPanel;
    	private ManagementUi MainUi;
    	private Toolkit toolKit=null;
    	private Dimension screenSize=null;
    	public static personManage nowPeople;
    	public  Login(){
    		Init();
    	}
    	
    	public void Init(){
    		//获取当前窗口,并且获取屏幕的尺寸
    		toolKit=Toolkit.getDefaultToolkit();
    		screenSize=toolKit.getScreenSize();
    		//加载封装了图片的Panel子类,并添加到当前JFrame容器里面
    	    loginPanel=new LoginPanel();
    		loginPanel.setLayout(null);
    		add(loginPanel);
    		//将整个图框居中
         	setBounds(screenSize.width/2-loginPanel.getWidth()/2
         			,screenSize.height/2-loginPanel.getHeight()/2
         			,loginPanel.getWidth(),loginPanel.getHeight());
    		handleAction=new  HandleAction();
    		this.setIconImage(new ImageIcon("resource/picture.png").getImage());
    		//向loginPanel容器加入两个Jlabel,两个按钮,一个文本框,一个密码框
    		userNameLabel=new JLabel("用户名");
    		userNameLabel.setBounds(100, 120, 200, 18);
    		loginPanel.add(userNameLabel);
    		
    		userNameText=new JTextField();
    		userNameText.setBounds(150, 120, 150, 18);
    		loginPanel.add(userNameText);
    		
    		passwordLabel=new JLabel("密码");
    		passwordLabel.setBounds(100, 180, 200, 18);
    		loginPanel.add(passwordLabel);
    		
    		passwordText=new JPasswordField();
    		passwordText.setBounds(150, 180, 150, 18);
    		loginPanel.add(passwordText);
    		
    		loginButton=new JButton("登录");
    		loginButton.setBounds(150, 230, 60, 18);
    		loginPanel.add(loginButton);
    		
    		exitButton=new JButton("退出");
    		exitButton.setBounds(230, 230, 60, 18);
    		loginPanel.add(exitButton);
    		
    		exitButton.addActionListener(handleAction);
    		loginButton.addActionListener(handleAction);
    		setTitle("宁悦宿舍管理系统");
    		this.setResizable(false);
    		setVisible(true);
    		setDefaultCloseOperation(this.EXIT_ON_CLOSE);
    	}
    	private class HandleAction implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			if(e.getSource()==loginButton){
    				String pass=new String(passwordText.getPassword());
    				if(jdbcLogin.Judge(userNameText.getText(),pass)){
    					nowPeople=new personManage(userNameText.getText(),null,null,pass);
    					MainUi=new ManagementUi();
    					Login.this.setVisible(false);
    				}else{
    					JOptionPane.showMessageDialog(Login.this,"不是系统的合法用户或密码错误" );
    				}
    				
    			}else if(e.getSource()==exitButton) {
    				Login.this.dispose();
    			}
    		}
    	}
    	
    	public static void main(String [] args){
    		Login in=new Login();
    	}
    }
    
    class LoginPanel extends JPanel {
    	protected ImageIcon icon = new ImageIcon("resource/login.jpg");
    	public int width = icon.getIconWidth(), height = icon.getIconHeight();
    	public LoginPanel() {
    		super();
    		setSize(width, height);
    	}
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		Image img = icon.getImage();
    		 g.drawImage(img, 0, 0, icon.getIconWidth(),
    			      icon.getIconHeight(), icon.getImageObserver());
    	}
    }


    在的登录的时候,需要连接数据库,在登录模块,我专门为它建立了一个数据库的连接类,来进行数据库的建立。

     

     

     

    public class jdbcLogin {
    	private static HashMap<String,String> people=new HashMap<String,String>();
    	public static boolean Judge(String user,String pass){
    		String SQL = "SELECT * FROM personManage";
    		boolean flag=false;
    		try {
    			jdbcDrive.jdbcConnection();
    			jdbcDrive.statement=jdbcDrive.connection.createStatement();
    			jdbcDrive.resultset=jdbcDrive.statement.executeQuery(SQL);
    		    while (jdbcDrive.resultset.next()) {
    		    	people.put(jdbcDrive.resultset.getString(1).trim(),jdbcDrive.resultset.getString(4).trim());
    		    }
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}finally{
    			jdbcDrive.jdbcConnectionClose();
    		}
    		if(people.containsKey(user)){
    			if(people.get(user).equals(pass)){
    				flag=true;
    			}
    		}else{
    			flag=false;
    		}
    		return flag;
    	}
    }
    


    如果数据库存在对应的账号,则返回true,让用户登录,否则返回false。

     

    数据库建立好了之后,需要进行管理人员的创立,修改,删除。

     

    管理员的界面用表的形式,来进行相应的管理,管理的过程中,点击表中的数据,会相应的显示在下面的文本框里,在这里进行增删改查。每次完成曾删改查,都需要点击查询进行刷新,下面是整体的代码。

     

     

    public class personManageUi {
    	private JFrame mainJframe;
    	private Container con;
    	private JScrollPane JSpane;
    	private MyJTable DataTable;
    	private String [] names={"管理员账号","管理员姓名","管理员性别","管理人员密码"};
    	private JButton btn_Query,btn_Modify,btn_Add,btn_Delete;
    	private JPanel jpn;
    	private JPanel messageJpn;
    	private JTextField nameText,passText,sexText,idText;
    	private personManage personChange;//保存要修改的数据的信息
    	public personManageUi(){
    		mainJframe=new JFrame("管理员管理");
    		mainJframe.setSize(800, 600);
    		mainJframe.setVisible(true);
    		mainJframe.setResizable(false);
    		mainJframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
    		mainJframe.setLocation(screenSize.width/2-400, screenSize.height/2-300);
    		con=mainJframe.getContentPane();
    		con.setLayout(new GridLayout(3,1));
    		DataTable=new MyJTable();
    		DefaultTableModel df=new DefaultTableModel(names,0);
    		df.setRowCount(20);
    		DataTable.setModel(df);
    		DataTable.addMouseListener(new table_selectActionListener());
    		JSpane=new JScrollPane(DataTable);
    		con.add(JSpane);
    		messageJpn=new JPanel();
    		messageJpn.setLayout(new GridBagLayout());
    		setComponent(new JLabel("管理人员账号:"),0,0,1,1,false);
    		idText=new JTextField();
    		setComponent(idText,1,0,1,150,false);
    		setComponent(new JLabel("管理人员姓名:"),2,0,1,1,false);
    		nameText=new JTextField();
    		setComponent(nameText,3,0,1,150,true);
    		setComponent(new JLabel("管理人员性别:"),0,1,1,1,false);
    		sexText=new JTextField();
    		setComponent(sexText,1,1,1,150,false);
    		setComponent(new JLabel("管理人员密码:"),2,1,1,1,false);
    		passText=new JTextField();
    		setComponent(passText,3,1,1,150,true);
    		con.add(messageJpn);
    		jpn=new JPanel();
    		jpn.setLayout(new FlowLayout());
    		con.add(jpn);
    		btn_Add=new JButton("添加");
    		btn_Add.addActionListener(new btn_AddActionListener());
    		jpn.add(btn_Add);
    		jpn.add(new JLabel("     "));
    		btn_Query=new JButton("查询");
    		btn_Query.addActionListener(new btn_QueryActionListener());
    		jpn.add(btn_Query);
    		jpn.add(new JLabel("     "));
    		btn_Modify=new JButton("修改");
    		btn_Modify.addActionListener(new btn_ModifyActionListener());
    		jpn.add(btn_Modify);
    		jpn.add(new JLabel("     "));
    		btn_Delete=new JButton("删除");
    		btn_Delete.addActionListener(new btn_DeleteActionListener());
    		jpn.add(btn_Delete);
    	}
    	/*
    	 * 完成查询按钮的监听事件
    	 */
    	private class btn_QueryActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			// TODO Auto-generated method stub
    			jdbcPersonManage jp=new jdbcPersonManage(null);
    			personManage people;
    			try {
    				jp.personQuery();
    			} catch (SQLException e1) {
    				JOptionPane.showMessageDialog(mainJframe,"无法连接到数据库" );
    			}finally{
    				jdbcDrive.jdbcConnectionClose();
    			}
    			ArrayList<personManage> personlist=jp.getPersonlist();
    			for(int i=0;i<personlist.size();i++){
    				people=personlist.get(i);
    				String [] data={people.getPersonManageId(),people.getPersonManageName(),
    						people.getPersonManageSex(),"**********"};
    				for(int j=0;j<4;j++){
    					DataTable.setValueAt(data[j], i, j);
    				}
    			}
    			for(int i=0;i<4;i++){
    				DataTable.setValueAt("", personlist.size(), i);
    			}
    		}
    	}	
    	/*
    	 * 完成对修改按钮的监听事件
    	 */
    	private class btn_ModifyActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			jdbcPersonManage jpm=new jdbcPersonManage(null);
    			try{
    			if(personChange.getPersonManageName()!=nameText.getText()){
    					jpm.personModify(personChange.getPersonManageId(),
    							"personManageName",nameText.getText());
    			}
    			if(personChange.getPersonManageSex()!=sexText.getText()){
    				    jpm.personModify(personChange.getPersonManageId()
    				    		, "personManageSex", sexText.getText());
    			}
    			if(personChange.getPersonManagepassword()!=passText.getText()){
    				jpm.personModify(personChange.getPersonManagepassword()
    			    		, "personManagepassword",passText.getText());
    			}
    			JOptionPane.showMessageDialog(mainJframe,"修改成功" );
    			 idText.setText("");
                 nameText.setText("");
                 sexText.setText("");
                 passText.setText("");
    		}catch(Exception e1){
    			System.out.println("修改失败");
    			JOptionPane.showMessageDialog(mainJframe,"修改失败" );
    		}finally{
    			jdbcDrive.jdbcConnectionClose();
    		}
    	}
    	}
    	/*
    	 * 完成对表格的监听事件
    	 */
    	private class table_selectActionListener extends  MouseAdapter{
    		public void mouseClicked(MouseEvent event)
            {
                    int row = DataTable.rowAtPoint(event.getPoint());
                    if(row!=-1){
                    personChange=new personManage.personManageBuild()
                    		.addManageId((String) DataTable.getValueAt(row, 0))
                    		.addManageName((String) DataTable.getValueAt(row, 1))
                    		.addManageSex((String) DataTable.getValueAt(row, 2))
                    		.addManagePass((String) DataTable.getValueAt(row, 3))
                    		.CreateManageBuild();
                    idText.setText(personChange.getPersonManageId());
                    nameText.setText(personChange.getPersonManageName());
                    sexText.setText(personChange.getPersonManageSex());
                    passText.setText(personChange.getPersonManagepassword());
                    }
            }
    	}
    	/*
    	 * 完成对增加按钮的监听
    	 */
    	private class btn_AddActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			personManage p=new personManage
    					.personManageBuild()
    					.addManageId(idText.getText().trim())
    					.addManageName(nameText.getText().trim())
    					.addManageSex(sexText.getText().trim())
    					.addManagePass(passText.getText().trim())
    					.CreateManageBuild();
    			jdbcPersonManage jpm;
    			try {
    				jpm = new jdbcPersonManage(p);
    				jpm.personAdd();
    				idText.setText("");
    				nameText.setText("");
    				passText.setText("");
    				sexText.setText("");
    				JOptionPane.showMessageDialog(mainJframe,"添加成功" );
    			} catch (Exception e1) {
    				JOptionPane.showMessageDialog(mainJframe,"无法连接到数据库" );
    			}finally{
    				jdbcDrive.jdbcConnectionClose();
    			}
    		}
    	}
    	/*
    	 * 完成对删除按钮的监听
    	 */
    	private class btn_DeleteActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    	
    			personManage p=new personManage
    					.personManageBuild()
    					.addManageId(idText.getText().trim())
    					.CreateManageBuild();
    			jdbcPersonManage jpm=
    					new jdbcPersonManage(p);
    			try {
    				jpm.personDelete();
    				idText.setText("");
    				nameText.setText("");
    				passText.setText("");
    				sexText.setText("");
    				JOptionPane.showMessageDialog(mainJframe, "删除成功");
    			} catch (SQLException e1) {
    				e1.printStackTrace();
    				JOptionPane.showMessageDialog(mainJframe, "删除失败");
    			}
    		}
    	}
    
    	private void setComponent(JComponent component, int gridx, int gridy,
    			int gridwidth, int ipadx, boolean fill) {
    		final GridBagConstraints gridBagConstrains = new GridBagConstraints();
    		gridBagConstrains.gridx = gridx;
    		gridBagConstrains.gridy = gridy;
    		gridBagConstrains.insets = new Insets(10, 15, 3, 1);
    		if (gridwidth > 1)
    			gridBagConstrains.gridwidth = gridwidth;
    		if (ipadx > 0)
    			gridBagConstrains.ipadx = ipadx;
    		if (fill)
    			gridBagConstrains.fill = GridBagConstraints.HORIZONTAL;
    		messageJpn.add(component, gridBagConstrains);
    	}
    	public static void main(String [] args){
    		new personManageUi();
    	}
    }
    

    学生管理部分实现和这个差不多,需要说一下宿舍管理的部分,在宿舍管理的模块,借助树,来进行完整的修改。

     

     

    具体的代码如下:

     

     

    public class dormitoryUpdateUi extends JFrame{
    	private JScrollPane JSPane;
    	private JTree Tree;
    	private JPanel panel;
    	private DefaultMutableTreeNode tmpNode,root;
    	private DefaultTreeModel insert;
    	private ArrayList<Dormitory> dormitory;
    	private JTextField id;
    	private JTextField sex;
    	private JTextField ynumber;
    	private JTextField snumber;
    	private JTextField student;
    	private JTextField money;
    	private JTextField note;
    	private JButton btn_query,btn_Modify,btn_Delete;
    	private String attribute;
    	private String changeAttribute;
    	public dormitoryUpdateUi(){
    		this.setTitle("宿舍更新");
    		this.setVisible(true);
    		this.setSize(800, 600);
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		this.setLayout(new BorderLayout());
    		root=new DefaultMutableTreeNode("文赢13号楼                  ");
    		insert=new DefaultTreeModel(root);
    		Tree=new JTree(root);
    		Tree.addTreeSelectionListener(new treeSelectActionListener());
    		JSPane=new JScrollPane(Tree);
    		this.add(JSPane, BorderLayout.WEST);
    		panel=new JPanel();
    		//panel.setPreferredSize(getPreferredSize());
    		this.add(panel, BorderLayout.CENTER);
    		panel.setLayout(new GridBagLayout());
    		setComponent(new JLabel("宿舍号:"),0,0,1,1,false);
    		id=new JTextField();
    		id.addActionListener(new jf_ActionListener());
    		setComponent(id,1,0,3,1,true);
    		setComponent(new JLabel("住宿性别名:"),0,1,1,1,false);
    		sex=new JTextField();
    		sex.addActionListener(new jf_ActionListener());
    		setComponent(sex,1,1,3,150,true);
    		setComponent(new JLabel("应住人数:"),0,2,1,1,false);
    		ynumber=new JTextField();
    		ynumber.addActionListener(new jf_ActionListener());
    		setComponent(ynumber,1,2,3,150,true);
    		setComponent(new JLabel("实住人数:"),0,3,1,1,false);
    		snumber=new JTextField();
    		snumber.addActionListener(new jf_ActionListener());
    		setComponent(snumber,1,3,3,150,true);
    		setComponent(new JLabel("住宿费:"),0,4,1,1,false);
    		money=new JTextField();
    		money.addActionListener(new jf_ActionListener());
    		setComponent(money,1,4,3,1,true);
    		setComponent(new JLabel("舍长:"),0,5,1,1,false);
    		student=new JTextField();
    		student.addActionListener(new jf_ActionListener());
    		setComponent(student,1,5,3,1,true);
    		setComponent(new JLabel("备注"),0,6,1,1,false);
    		note=new JTextField();
    		note.addActionListener(new jf_ActionListener());
    		setComponent(note,1,6,3,150,true);
    		btn_query=new JButton("查询");
    		btn_query.addActionListener(new btn_queryActionListener());
    		setComponent(btn_query,0,7,1,1,false);
    		btn_Modify=new JButton("修改");
    		btn_Modify.addActionListener(new btn_ModifyActionListener());
    		setComponent(btn_Modify,1,7,1,1,false);
    		btn_Delete=new JButton("删除");
    		btn_Delete.addActionListener(new btn_DeleteActionListener());
    		setComponent(btn_Delete,2,7,1,1,false);
    	}
    	
    	private class btn_queryActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			jdbcDormitory jd=new jdbcDormitory();
    			HashMap<Integer,ArrayList<Dormitory> > number=new HashMap<Integer,ArrayList<Dormitory>>();
    			ArrayList<Dormitory> floordormitory;
    		    int temp;//统计楼数
    			try {
    				jd.dormitoryQuery("");
    				dormitory=jd.getDormitory();
    				for(Dormitory d:dormitory){
    					temp=Integer.parseInt(d.getDormitoryId().substring(2,3));
    					if(!number.containsKey(temp)){
    						floordormitory=new ArrayList<Dormitory>();
    						floordormitory.add(d);
    						number.put(temp, floordormitory);
    					}else{
    					  number.get(temp).add(d);
    					}
    				}
    				Object[] floors;
    				floors=number.keySet().toArray();
    				for(int i=0;i<floors.length;i++)
    				{
    					floordormitory=number.get(floors[i]);
    					tmpNode=new DefaultMutableTreeNode(floors[i]+"楼");
    					insert.insertNodeInto(tmpNode, root, 0);
    					insert.reload();
    					for(int j=0;j<floordormitory.size();j++){
    						tmpNode.add(new DefaultMutableTreeNode(floordormitory.get(j).getDormitoryId()));
    					}
    					floordormitory=null;
    				}
    			} catch (SQLException e1) {
    				e1.printStackTrace();
    			}finally{
    				jdbcDrive.jdbcConnectionClose();
    			}
    		}
    	}
    	private class treeSelectActionListener implements TreeSelectionListener{
    		@Override
    		public void valueChanged(TreeSelectionEvent e) {
    			if(e.getPath().getLastPathComponent().toString().length()==5){
    			Dormitory d=null;
    			String message=e.getPath().getLastPathComponent().toString();
    			for(Dormitory dor: dormitory){
    				if(dor.getDormitoryId().equals(message)){
    					d=dor;
    				}
    			}
    			 id.setText(d.getDormitoryId());
    			 sex.setText(d.getDormitorySex());
    		     ynumber.setText(d.getDormitoryPeople());
    			 snumber.setText(d.getDormitoryPeopleNow());
    			 student.setText(d.getStudentId());
    			 money.setText(d.getMoney());
    			 note.setText(d.getDormitoryNote());
    			}
    		}
    	}
    	
    	private class btn_ModifyActionListener implements ActionListener{
    
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			jdbcDormitory jd=new jdbcDormitory();
    			try{
    				jd.dormitoryModify(id.getText().trim()
    						, attribute,changeAttribute);
    			JOptionPane.showMessageDialog(dormitoryUpdateUi.this,"修改成功" );
    			id.setText("");
    			sex.setText("");
    		    ynumber.setText("");
    		    snumber.setText("");
    			student.setText("");
    		    money.setText("");
    			note.setText("");
    		}catch(Exception e1){
    			e1.printStackTrace();
    			System.out.println("修改失败");
    			JOptionPane.showMessageDialog(dormitoryUpdateUi.this,"修改失败" );
    		}finally{
    			jdbcDrive.jdbcConnectionClose();
    		}
    		}
    	}
    	
    	private class jf_ActionListener implements ActionListener{
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			HashMap<JTextField,String> change=new HashMap<JTextField,String>();
    			change.put(id, "Dnumber");
    			change.put(sex, "Dsex");
    			change.put(ynumber, "Dynumber ");
    			change.put(snumber, "Dsnumber ");
    			change.put(student, "Dstudent ");
    			change.put(money, "Dmoney ");
    			change.put(note, "Dnote");
    			attribute=change.get((JTextField)e.getSource());
    			changeAttribute=((JTextField)e.getSource()).getText().trim();
    		}
    	}
    	private class btn_DeleteActionListener implements ActionListener{
    
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			Dormitory d=new Dormitory
    					.DormitoryBuilder()
    					.addDormitoryId(id.getText().trim())
    					.CreateDormitory();
    			jdbcDormitory js=new jdbcDormitory();
    			try {
    				js.dormitoryQuery("where Dnumber ="+"'"+""+d.getDormitoryId()+"'");
    				if(Integer.parseInt(js.getDormitory().get(0).getDormitoryPeopleNow())!=0){
    					JOptionPane.showMessageDialog(dormitoryUpdateUi.this, "宿舍有成员居住,无法删除");
    				}else{
    				js.dormitoryDelete(d);
    				id.setText("");
    				sex.setText("");
    				ynumber.setText("");
    				snumber.setText("");
    				money.setText("");
    				note.setText("");
    				student.setText("");
    				JOptionPane.showMessageDialog(dormitoryUpdateUi.this, "删除成功");
    				}
    			} catch (SQLException e1) {
    				e1.printStackTrace();
    				JOptionPane.showMessageDialog(dormitoryUpdateUi.this, "删除失败");
    			}
    		}
    		
    	}
    	private void setComponent(JComponent component, int gridx, int gridy,
    			int gridwidth, int ipadx, boolean fill) {
    		final GridBagConstraints gridBagConstrains = new GridBagConstraints();
    		gridBagConstrains.gridx = gridx;
    		gridBagConstrains.gridy = gridy;
    		gridBagConstrains.insets = new Insets(20, 20, 3, 1);
    		if (gridwidth > 1)
    			gridBagConstrains.gridwidth = gridwidth;
    		if (ipadx > 0)
    			gridBagConstrains.ipadx = ipadx;
    		if (fill)
    			gridBagConstrains.fill = GridBagConstraints.HORIZONTAL;
    		panel.add(component, gridBagConstrains);
    	}
    	public static void main(String [] args){
    		dormitoryUpdateUi d=new dormitoryUpdateUi();
    	}
    }
    

     

     

     

     

     

    下面是完整的源代码地址:

    链接:https://pan.baidu.com/s/1zM-sDtoxR07bKydHBh996A 
    提取码:anwn 
     

     

     

     

     

    展开全文
  • 一、 概述 本网上商城是一个综合性的B2C平台,可以在商城浏览商品、下订单、以及参加各种活动 管理员、运营可以在平台后台... 设计一个网购商城的数据库,以实现网购商城网站系统 2.12数据库选择 系统采用MyS...

    一、 概述
    本网上商城是一个综合性的B2C平台,可以在商城浏览商品、下订单、以及参加各种活动
    管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
    客服可以在后台管理系统中处理用户的询问以及投诉。
    不过,暂时可能技术还不够硬……
    二、需求分析
    2.1 数据库设计目的
    设计一个网购商城的数据库,以实现网购商城网站系统

    2.12数据库选择
    系统采用MySQL作为数据库
    2.13数据库编码
    数据库采用UTF-8编码格式

    2.2需要完成的功能

    功能描述:

    1. 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
    2. 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
    3. 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
    4. 订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
    5. 搜索系统:提供商品的搜索功能。
    6. 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

    2.3数据表设计

    2.30 E-R图的模型设计
    (1)实体集
    用户 商品 商品类目 订单
    (2)实体间联系
    用户与商品多对多关系
    商品与商品类目一对多关系(分类)
    用户与购物车一对一关系(用户只能拥有一购物车)
    用户与订单细节一对多关系
    购物车与商品一对多关系(一购物车可以存放多个商品)
    购物车与订单细节一对多关系

    (3)E-R图
    实体间联系E-R图
    这里写图片描述

    2.31商品表:

    CREATE TABLE `tb_item` (
      `id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
      `title` varchar(100) NOT NULL COMMENT '商品标题',
      `sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
      `price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
      `num` int(10) NOT NULL COMMENT '库存数量',
      `barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
      `image` varchar(500) DEFAULT NULL COMMENT '商品图片',
      `cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
      `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
      `created` datetime NOT NULL COMMENT '创建时间',
      `updated` datetime NOT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `cid` (`cid`),
      KEY `status` (`status`),
      KEY `updated` (`updated`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';
    

    2.32商品描述表:

    CREATE TABLE `tb_item_desc` (
      `item_id` bigint(20) NOT NULL COMMENT '商品ID',
      `item_desc` text COMMENT '商品描述',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`item_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品描述表';
    

    2.33商品类目表:

    CREATE TABLE `tb_item_cat` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
      `parent_id` bigint(20) DEFAULT NULL COMMENT '父类目ID=0时,代表的是一级的类目',
      `name` varchar(50) DEFAULT NULL COMMENT '类目名称',
      `status` int(1) DEFAULT '1' COMMENT '状态。可选值:1(正常),2(删除)',
      `sort_order` int(4) DEFAULT NULL COMMENT '排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数',
      `is_parent` tinyint(1) DEFAULT '1' COMMENT '该类目是否为父类目,1为true,0为false',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`),
      KEY `parent_id` (`parent_id`,`status`) USING BTREE,
      KEY `sort_order` (`sort_order`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1183 DEFAULT CHARSET=utf8 COMMENT='商品类目';
    
    

    2.34用户表:

    CREATE TABLE `tb_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL COMMENT '用户名',
      `password` varchar(32) NOT NULL COMMENT '密码,加密存储',
      `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',
      `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
      `created` datetime NOT NULL,
      `updated` datetime NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`) USING BTREE,
      UNIQUE KEY `phone` (`phone`) USING BTREE,
      UNIQUE KEY `email` (`email`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COMMENT='用户表';
    

    2.35内容表:

    CREATE TABLE `tb_content` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `category_id` bigint(20) NOT NULL COMMENT '内容类目ID',
      `title` varchar(200) DEFAULT NULL COMMENT '内容标题',
      `sub_title` varchar(100) DEFAULT NULL COMMENT '子标题',
      `title_desc` varchar(500) DEFAULT NULL COMMENT '标题描述',
      `url` varchar(500) DEFAULT NULL COMMENT '链接',
      `pic` varchar(300) DEFAULT NULL COMMENT '图片绝对路径',
      `pic2` varchar(300) DEFAULT NULL COMMENT '图片2',
      `content` text COMMENT '内容',
      `created` datetime DEFAULT NULL,
      `updated` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `category_id` (`category_id`),
      KEY `updated` (`updated`)
    ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
    

    2.36内容分类表:

    CREATE TABLE `tb_content_category` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
      `parent_id` bigint(20) DEFAULT NULL COMMENT '父类目ID=0时,代表的是一级的类目',
      `name` varchar(50) DEFAULT NULL COMMENT '分类名称',
      `status` int(1) DEFAULT '1' COMMENT '状态。可选值:1(正常),2(删除)',
      `sort_order` int(4) DEFAULT NULL COMMENT '排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数',
      `is_parent` tinyint(1) DEFAULT '1' COMMENT '该类目是否为父类目,1为true,0为false',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`),
      KEY `parent_id` (`parent_id`,`status`) USING BTREE,
      KEY `sort_order` (`sort_order`)
    ) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COMMENT='内容分类';
    

    2.37订单表:

    CREATE TABLE `tb_order` (
      `order_id` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '订单id',
      `payment` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分',
      `payment_type` int(2) DEFAULT NULL COMMENT '支付类型,1、在线支付,2、货到付款',
      `post_fee` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分',
      `status` int(10) DEFAULT NULL COMMENT '状态:1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭',
      `create_time` datetime DEFAULT NULL COMMENT '订单创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '订单更新时间',
      `payment_time` datetime DEFAULT NULL COMMENT '付款时间',
      `consign_time` datetime DEFAULT NULL COMMENT '发货时间',
      `end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
      `close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
      `shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称',
      `shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号',
      `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
      `buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言',
      `buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称',
      `buyer_rate` int(2) DEFAULT NULL COMMENT '买家是否已经评价',
      PRIMARY KEY (`order_id`),
      KEY `create_time` (`create_time`),
      KEY `buyer_nick` (`buyer_nick`),
      KEY `status` (`status`),
      KEY `payment_type` (`payment_type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    

    2.38订单项表:

    CREATE TABLE `tb_order_item` (
      `id` varchar(20) COLLATE utf8_bin NOT NULL,
      `item_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '商品id',
      `order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id',
      `num` int(10) DEFAULT NULL COMMENT '商品购买数量',
      `title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品标题',
      `price` bigint(50) DEFAULT NULL COMMENT '商品单价',
      `total_fee` bigint(50) DEFAULT NULL COMMENT '商品总金额',
      `pic_path` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品图片地址',
      PRIMARY KEY (`id`),
      KEY `item_id` (`item_id`),
      KEY `order_id` (`order_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    
    展开全文
  • 湖南科技大学计算机科学与工程学院 《数据库系统》 课 程 设 计 题 目: 教学管理系统 专 业:计算机科学与技术 年 级: 2017级 班 级: 计科三班 ...数据库系统课程设计是为了配合数据库原理及应用开发而...

    二话不说,先怼源码:
    gitHub源码地址

    题 目: 教学管理系统 专 业:计算机科学与技术
    作 者: 马志成
    完成时间:2019年1月3日

    一.实验目的

    数据库系统课程设计是为了配合数据库原理及应用开发而设置的,是计算机科学与技术、 网络工程、信息安全、物联网工程、软件工程等专业集中实践的教学环节,是将关系数据库 理论知识转化为解决实际问题能力的重要环节。数据库系统课程设计目的在于加深对关系数 据库理论知识的理解,通过使用具体的 DBMS,掌握一种实际的数据库管理系统并掌握其 操作技术,熟练掌握使用数据库前端开发工具(如 VB、C++、Java、Delphi、PowerBuilder 等),进一步提高同学们运用数据库技术解决实际问题的能力。

    二.实验平台

    数据库:Mysql
    页面及朱语句:java(),开发工具eclipse。

    三.实验内容

    目前市面上流行的数据库管理系统有:适合大型企业的Oracle,适合中小型企业的SQL SERCER,以及开源的Mysql。考虑到数据库管理系统的易操作性以及实验的实际情况,本次课程设计使用的是开源的Mysql。使用的数据库操作语言是java。将数据库操作SQL语言嵌入java语句中完成数据库各项增删改查等操作。同时用户操作界面也是使用java实现。Java加载MySQL的驱动,实现利用java操作数据库。利用两周的时间完成有关数据库的各项原型设计以及有关数据库的模型设计和实现。同时完成前端界面的编写,数据库与java的连接,数据库的安全性的测试,java操作数据库的测试和改善。在完成了对数据库中数据的基本增删改查的功能之后利用多余的时间完成其他操作,包括模糊查询等。本次课程设计的前端界面的编写可以使用任意的工具。可以使用安卓的AS,也可以使用eclipse的windoubuilder插件等等的各种工具。设计的界面采用菜单或对话框的形式,根据自己所选的课程设计题目给出系统分析,设计出概念模型,以及实现最后的运营以及维护。

    四.实验要求

    经典的桌面数据库应用开发是典型的 C/S 计算模式,即应用数据库前端开发工具编写客 户端程序,通过客户端程序来连接和访问后台数据库。考虑到同学们都学习过 Java,因此, 本次选用 Java 作为前台数据库开发工具(也可以选用 VB、Delphi、C/C++等)。 两周的课程设计要求同学们开发一个小型数据库管理信息系统。所设计的小型管理信息 系统应包含查询、插入、删除、修改、统计、用户权限管理等基本功能,界面采用菜单或对 话框的形式。根据同学们所选的设计课题,给出系统需求分析,设计出系统的概念模型、逻 辑模型,用 SQL 语言实现数据库的建立、应用和维护,最后写出详细的设计说明书。 本次课程设计要求同学们充分认识数据库系统课程设计对培养自己动手能力的重要性, 认真做好设计前的各项准备工作。虚心接受老师的指导,充分发挥自学能力和查找资料的能 力。结合课题,独立思考,努力钻研,勤于实践,勇于创新。独立完成规定的工作任务,不 得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。严格要求自己,按时、按质、按量 完成每天的课程设计任务。

    五.实验步骤

    1.系统需求分析

    1系统功能分析本系统主要有以下功能要求:课程设置,包括:增加、删除、查询和修改课程信息。 课程时间和教室的安排,以及课程清单打印输出。 l学生选课和学生课表的打印输出。 l课程学生名单的打印输出和期末成绩输入。 l成绩查询、报表。
    1.2系统功能模块设计系统各功能模块的关系如图 1 所示。 图 1、教学管理信息系统功能模块图 因为使用这套系统的人员不光是教务管理人员,还包括教师和学生。不同的身份对数据 库的操作权限也不同。为了避免管理的混乱,需要针对不同的角色分别设计客户端应用程序, 对同一个数据库进行合理的修改。页面流程图:
    1.3 与其他系统的关系教学管理信息系统同样是校园信息管理系统的一个有机组成部分。需要从学生信息管理 系统获取学生的个人信息,从教师信息管理系统获取任课教师的相关信息。同时,提供的成 绩单为其他系统提供必要的参考。
    1.4数据流程图教学信息管理系统的数据流程如图

    2.数据库设计

    2.1数据库需求分析根据我们前面的分析,教学信息管理系统需要以下数据项:课程:课程号、课程名称、讲课教师、学分、学时、上课时间、上课地点、简介、 课程状态。 l选课结果:记录编号、选课人、所选课程。成绩单:记录编号、学生、课程、成绩。所需的外部数据支持: l 学生:学号、姓名、班级。 l教师:员工号、姓名、课程院系。
    2.2数据库概念结构设计本系统所需数据的 E-R 模型图:
    2.3数据库逻辑结构设计需要3个基本信息表:教师信息、学生信息、课程信息。其中, 教师信息和学生信息在实际系统中是从其它信息管理系统的数据表中直接读取。学生的选课 信息需要用 1 个表来单独保存。由于每学期期末前都要进行选课,因此选课结束后要将这个 表的内容及时保存到成绩单数据表中。使用本系统的不光是教务处的管理人员和教师,每个 学生都需要登录到选课系统进行课程的选择。因此,需要对不同的登录人员进行密码认证和 权限的限制,防止出现越权行为。用户名、密码和权限单独保存在 1 个数据表中。另外需要 一个课程状态代码表,这 7 个数据表的结构如表 1 到表 7 所示(请设计者完成这 7 个数据表 的逻辑结构)。

    3.各个功能模块的设计与实现

    3.1功能说明本系统需要按照不同的用户分别创建 3 个工程:教师课程管理应用程序、教务课程调度 应用程序和学生选课应用程序。 首先,三个模块的用户的权限是有很大的差异的,教务处的用户的权限大于教师的用户权限,教师的用户权限大于学生的用户权限。所以登录不同的模块对于数据的操作的允许范围是不同的。

    一.教务课程调度应用程序功能说明。
    登录教务处权限的模块,可以对所有数据进行操作,包括学生的各项学习的查询。学生的课程的查询,教授的信息查询,教师设置课程的查询以及教师和学生的学习的的增删改查等等。同时此用户权限拥有对所有数据的掌握。
    
    二.教师课程管理应用程序功能说明。

    教师登录模块主要进行的是对于教师信息的修改查询以及对学生信息的查询和学生成绩的设置与查询。以及开设课程。

    三.学生选课应用程序功能说明。

    学生用户的权限较低,他只有对自己的信息的修改以及查询成绩,查询教师所开设课程和选课的去权利。四.实现了用户数据的导入导出。在实现了基本的增删改查的基础上对于自己完成的教务管理系统,新增加了数据导出为Excel格式和从Excel中读取数据至数据库中的新功能。
    3.2用户界面设计根据权限的不同,用户界面分为三类,登录选项也为三类,各模块的界面视图如图所示:
    1.教务管理系统用户权限界面如图,用户可以在界面内选择相应的群像进行登录。
    2.教务处用户登录界面,选择相应的用户权限之后进入相应的用户的登录界面。其它两个用户权限的登录界面与之类似,以下只展示一个登录界面。输入密码或者账号错误会有相应的提示框。
    3.教务处用户的登录后主操作界面。教务处用户登录后进行相应数据的操作。左侧为一个树目录结构,点击各个子节点可以进行各个表之间的转换。右面为各个子操作界面的展示,在子界面内进行各个数据的查看与操作。
    4.教师权限用户的主界面如图所示,教师可以在主界面完成相应的操作,包括学生信息的查询,成绩的添加修改,课程的设置与修改等。
    5.学生用户的登录主界面,进行查课,选课和成绩查询及个人信息修改等操作。教师登录后查询学生的成绩哥信息等,同时可以查询和修改自己的信息。同时在界面内设置和修改自己要开设的课程。
    6.数据库的建立。
    7.数据以Excel的形式导入导出。连接数据库之后可以实现数据的导入和导出为Excel形式。实现数据的导入导出要在java的驱动文件中加载。建立相应的导入导出数据的类,并进行定义,再链接数据库进行定义,就实现数据的导入导出。 导入导出的连接数据库的部分代码如图所示。其主要能容为建立一个workbook的工作部,在工作簿中完成导入导出的各项操作。
    8.代码目录结构的展示,基本文件的分类为是按照各个页面的分类来进行的,即一个页面为一个java文件,其它的辅助文件和数据库连接文件为一个java文件。
    4.1实验中的错误一、 写界面遇到的错误
    1、表格的表头无法显示 我一开始用的String类型的数组储存的表头,表格也是用的数组,表头无法显示;然后我百度发现,表格要先放入一个容器才能显示表头。我按照例子改用vctor类型储存我的表头,但是我一开始是用的add方法把表格加入容器的,所以表头还是无法显示,通过百度我才知道表头的数组显示方法才能让表头显示,而且容器的布局不能为null。然后表格就正常了2、登陆界面(不管我是否输入了信息,都可以正常地登陆)我一开始是用
    user.equals("")||user==null来判断的,没有去掉字符串前后的空格,所以不管怎么判断字符串其实是有空格的,所以不管怎么都可以成功登陆,二、写数据库的错误1、我的数据库一开始不能输入中文安装的时候没有注意Mysql的语言类型,默认的语言不是中文,所以不能输入中文,把每个表改成了utf8,改了之后虽然在navicat可以输入中文,但是如果在mysql里面打开后,发现全部用?替代了。然后就百度,根据百度的方法,我打开mysql查看发现除了一部分的字符属性改成了utf8,其余都没有变,然后把全部都改了以后,还是会乱码。后来我发现是我eclipes这边的代码还是之前的语言类型,然后就把全部都改了,就可以输入了中文。

    六.实验心得

    为期两周的数据库课程设计马上结束,在这两周里面收获颇丰。从课设开始的第一天,我们在老师的指导和阅读指导书的前提下自主完成了一个简单的数据库系统的编写。从系统的分析,到整体的设计,再到数据库的建立,以及java前端页面的编写。数据库驱动的加载。可以说整个的项目开发都是由一个人完成。这是在本学期学习了java课程和数据库课程之后的第一次也是在校的一次很宝贵的实战经验总结。之前对两门课程的学习只是简单的基础学习,没有设计到整个系统的开发。但是在这次的实践中对于整个系统开发有了更深的认识。从专业知识学习的角度说,首先我学会了作为一个系统的整个数据库的建立和完善。学会将SQL语句嵌入java中,对数据库进行操作。也学会了如何利用java的Mysql驱动连接数据库,这为之后的java的其他开发奠定了坚实的基础。其次数据库可课程设计更是提升了java的实战能力。在本次课设中,通过主函数中对其他各个累的调用和 其他设计,更深层次的了解或者说是掌握了java的面向对象这一概念。此次开发总共涉及了自己编写的大大小小的十几个java文件,但正是由于面向对象的思想,对于java的操作却没有想象的那么复杂。系统的维护和改动也只需要在相应的子文件里面做改动。本次实战中具有突出的是在java的主界面的编写中,为了对于各个子文件(子页面)的操作更加的简便,也为了主菜单格式的统一,我使用了树目录结构的方式,使得主界面的操作灵活方便。也使得各个操作在主界面的显示样式更加的统一方便好看。总体来说本次的数据库课程设计从整体上独立完成了一个系统的开发。为之后多项专业课的学习打下了坚实的基础,也是一个检验自己java与数据库知识掌握程度的机会,在此次课程设计中收获颇丰,再次有类似的学习事件机会。
    以下为本人的数据库课设的页面展示。希望对读者有所启迪。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    展开全文
  • 由于时间关系,里面许多图片都已经变形或错位  ...课程设计(学年论文)      题目:学生选课管理系统的设计与实现    系 院 计算机科学技术系 专 业 计算机科学与技术  班 级  姓 名  学 号
  • 数据库课程设计题目

    2010-12-01 13:09:00
    我从周六,11月27日开始做我的数据库课程设计。到现在,做到有点头晕~~~~~开始反省总结 本系列学习日志,将会以三到四天为间隔(或者每天一篇)的进度发表,主要有我在完成这个数据库课程设计中的一些...
  • sqlsever数据库课程设计,内含java(swing)工程+sqlsever数据库+开发文档,可直接食用
  • 数据库课程设计

    2018-09-23 09:38:02
    SqlServer数据库课程设计 假期刚回来就迎来一份数据库设计,好不容易花两个星期写完了,老师竟然说一个题目不能超过三个人,逼着我把需求给改了,难受的一匹 下面粘一下课设 资源下载地址 不知道为啥下载要一个积分...
  • 我从周六,也就是前天,11月27日开始做我的数据库课程设计。到现在,做到有点头晕~~~~~开始反省总结本系列学习日志,将会以三到四天为间隔(或者每天一篇)的进度发表,主要有我在完成这个数据库课程设计中的一些...
  • 数据库课程设计——学生宿舍信息管理系统 目录  1.设计目的... 2 2、任务与要求... 2 3、学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1....
  • 数据库课程设计总结

    2008-06-01 19:23:00
    为期两周的数据库课程设计终于完了,现在总结一下,以供自己和大家日后参考1 JSP乱码问题(详见上一篇博客) 不过后来又出新的乱码问题,就是从数据库里面拿出的信息放到JSP页面可以正常显示,但是JSP页面本身的 ...
  • 数据库课程设计具体要怎么做,准确地说是用SQLserver写语句建表等等时要怎么做
  • 这个程序是仓库管理系统的程序,刚刚课程设计完,把它拿出来晒晒... 和大家分享下... 算不上很好的美餐,但也能抵得住寒冷... 总会有需要的人,希望能为需要的人提供分参考资料... 仓库系统课程设计具体内容如下:...
  • 数据库课程设计,MFC,出版社信息管理系统
  • XXX大学 《数据库原理及应用课程设计》设计报告 ...
  • 1.需求分析 系统需求分析: 随着互联网的发展,计算机的软硬件不断的更新迭代,这时计算机已经可以管理超大规模...随着高校学生人数越来越多,课程越来越丰富,学生多老师少,迫切需要一个数据库管理系统来管理、...
  • 学生成绩管理系统+数据库课程设计学生成绩管理系统+数据库课程设计学生成绩管理系统+数据库课程设计
1 2 3 4 5 ... 20
收藏数 86,990
精华内容 34,796