精华内容
下载资源
问答
  • 宿舍管理系统数据库设计
  • 自己做的数据库课程设计包括需求分析、逻辑结构设计、概念设计、物理结构设计数据库实施和维护、sql语句增删查改、存储过程触发器都有、还有各种图也画了
  • 第四章 系统总体设计 8 4.1 系统功能图 8 4.2 系统流程图 8 第五章 系统详细设计 10 5.1 用户模块设计 10 5.2 数据库设计 11 5.2.1数据库设计的原则 11 5.2.2数据库表的设计 11 第六章 系统实现 14 6.1 系统功能实现...
  • 数据库课程设计——学生宿舍信息管理系统

    万次阅读 多人点赞 2018-09-17 23:33:00
    数据库课程设计——学生宿舍信息管理系统 目录  1.设计目的... 2 2、任务与要求... 2 3、学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1....

    数据库课程设计——学生宿舍信息管理系统

    目录                                                                                             

    1.设计目的... 2

    2、任务与要求... 2

    3、学生宿舍管理系统课程设计... 2

    3.1 引言... 2

    3.2需求分析... 2

    3.2.1. 2

    3.2.2. 3

    3.3概念设计... 6

    3.4逻辑设计... 10

    3.5物理结构设计... 12

    3.6数据库实施... 14

    3.6.1数据库表的定义... 14

    3.6.2视图的定义:... 15

    3.6.3索引:... 16

    3.6.4触发器的定义:... 17

    3.6.5用户的定义:... 18

    3.6.6 对数据的管理:... 18

    3.7系统调试和测试... 19

    4.系统评价... 20

    4.1我的系统特色:... 20

    4.2 系统不足及改进... 21

    5.设计心得... 21

     

    1.设计目的

    《数据库系统原理》课程设计是软件工程和计算机科学与技术专业集中实践性环节之一,旨在让我们自身加深对数据库基础理论和基本知识的理解,掌握设计数据库管理系统的基本方法,锻炼运用知识解决实际问题的动手能力。

    2、任务与要求

    要求学生们从给定的设计题目中进行选择,进行需求分析,概念设计、逻辑设计,数据库的设计过程,表结构、表之间的关联,给出视图的定义、触发器的定义、索引,安全性的实现,用SQL语句等在SQL Server 2008系统中实现数据库的数据输入,查询,更新和输出;给出实现效果截图及部分测试结果。

     

    3、学生宿舍管理系统课程设计

    3.1 引言

     

    随着社会的发展以及教育水平的提高,当今社会在校生的数量越来越庞大。与此同时,使用曾经的手工的方式对学生的信息进行管理效率非常低下。在互联网技术高度发达的今天 ,使用数据库技术队对学生的住信息进行管理能够使学校对学生信息的管理更加的高效,检索迅速,查找方便,可靠性高存储量大。使用数据库技术的这些优点可以使得学生信息出错的发生。同时使用数据库技术可以使学生住宿信息长时间稳定地保存,也不容易丢失。开发出这样的一个数据库迫在眉睫。

    3.2需求分析

    3.2.1

     系统需求调查的方法为访谈法,通过对多个学校的宿舍管理人员进行交谈,从而得出系统的主要任务和特定的要求。系统的主要任务是能够对宿舍信息,学生信息,管理员信息,住宿信息进行登记,调整,并能进行各种查询以及信息的备份。

     

    完整性要求:防止不符合语义的数据进入数据库。

    安全性要求:需要防止客户对数据进行未经授权的访问。

    性能要求:最好能够实现并发访问,允许多个用户同时对数据库中的数据进行访问。

    一致性要求:防止数据库进入不一致状态。

    数据库要求:各种各样的故障都可能发生,出现意外时,,尽可能的确保任何数据在任何情况下都不会丢失。

    3.2.2

    系统的业务流程:

    学生入住和退宿时通过管理员进行登记;

    住宿产生的各种费用以及使用的各项物品由管理员进行登记;

    管理员将登记的各项信息上报给教务处;

    教务处将各项住宿信息进行统一管理;

    储存的所有数据供不同权限的客户进行访问;

     

     

    数据字典:

    学生基本信息

    编号

    属性名

    类型

    解释

    备注

    0001

    学号

    Varchar(15)

    0002

    姓名

    Varchar(10)

    0003

    性别

    Varchar(2)

    男、女

    0004

    年龄

    Int

    0……100之间

    0005

    手机号

    Varchar(15)

    手机号码

    0006

    专业

    Varchar(20)

     

    住宿费用信息:

     

     

    编号

    属性名

    类型

    解释

    备注

    0008

    表单编号

    Varchar(15)

    0009

    学号

    Varchar(15)

    0010

    宿舍号

    Varchar(6)

    不是门牌号

    0011

    水费

    Double(6)

    大于0

    0012

    电费

    Double(6)

    大于0

    0013

    维修费

    Double(6)

    大于0

    0014

    住宿费

    Double(6)

    大于0

    0015

    日期

    Date(8)

    0016

    合计

    Double(6)

    大于0

     

     

     

    物品管理信息:

     

    编号

    属性名

    类型

    解释

    备注

    0017

    员工号

    Varchar(15)

    0018

    宿舍号

    Varchar(15)

    0019

    桌子

    Int

    大于0

    0020

    椅子

    Int

    大于0

    0021

    Int

    大于0

    0022

    电扇

    Int

    大于0

    0023

    Int

    大于0

    0024

    窗户

    Int

    大于0

     

     

     

    宿舍信息

     

    编号

    属性名

    类型

    解释

    备注

    0025

    宿舍编号

    Varchar(15)

    0026

    楼号

    Varchar(15)

    0027

    区域

    Varchar(15)

    校园内

    ABCDEFG

    0028

    人数

    Int

    0……8

    0029

    房间类型

    Varchar(15)

    按人数分

    1(四人)2(六人)3(八人)

     

     

    管理员信息

     

    编号

    属性名

    类型

    解释

    备注

    0030

    员工号

    Varchar(15)

    0031

    姓名

    Varchar(10)

    0032

    性别

    Varchar(2)

    男,女

    0033

    年龄

    Int

    0……100

    0034

    手机号

    Varchar(15)

    11位

    0035

    楼号

    int

    0036

    区域

    int

    ABCDEFG

    0037

    职位

    Varchar(2)

    1(高级员工)2(普通员工)

     

     

    3.2.2 系统功能描述:

    对学生的信息进行管理;

    对宿舍信息进行管理;

    对管理员信息进行管理;

    对宿舍物品进行登记和管理;

    对住宿产生的各项费用进行登记和管理;

    对已经更改的学生和管理员信息进行保存

     

    在这幅图中,其中各项从左往右前5部分功能都包括各自信息的增删改查,第六项功能为学生和教师信息的备份,也就是已修改信息储存。

    3.3概念设计

    (说明使用数据库概念设计的基本思想和原理方法,设计出系统E-R图)

    基本思想:将需求分析得到的用户需求抽象为信息结构,分析数据字典中数据字典间内在语义关联,并将其抽象表示为数据的概念模式,从而能真实,充分地反应真实世界,包括事物和事物之间的联系,能满足用户对数据的处理需求,是现实世界的一个真实模型,易于理解,从而可以用它和不熟悉计算机的人交换意见,且易于更改。方法:首先分析整个系统中涉及到的实体,得到局部的ER图。然后分析这些实体之间的关系,进行连接从而得到

     

     

     

     

     

     

    3.4逻辑设计

    基本思想:首先整个系统一共可以划分出三个实体,分别是学生,管理员和宿舍,三者之间构成一个三角关系。同时,学生和宿舍之间的住宿关系衍生出一系列的住宿产生的费用,管理员和宿舍的管理关系衍生出一系列需要管理的物品,因此五张表相互关联生成完整的数据库系统。

    数据库关系图:

    学生的个人信息:学号,姓名,性别,年龄,手机号码,专业,管理员号

    student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,manager_num)

     

    宿舍费用信息:表单编号,水费,电费,维修费,住宿费,总费用,日期

    live(list_num,stu_num,dor_num,water,electric,service,lodge,total,date)

     

    宿舍物品信息:桌子,椅子,床,灯,

    tool(mana_num,dor_num,table,chair,bed,light)

     

    宿舍信息:宿舍编号,人数,房间类型,楼号,区域

    dormitory(dor_num ,prople_total,size, build_num,zone)

     

    宿舍管理人员信息:员工号,姓名,性别,年龄,手机号

    manager(mana_num,mana_name,mana_gender,mana_age,mana_tele)

      

      

    3.5物理结构设计

     

    物理设计的基本思想:根据逻辑设计出的逻辑模式,DBMS及计算机系统所提供的手段和施加的限制,设计数据库的内模式,即文件结构,各种路径,控件分配,记录的存取方式等,为逻辑数据结构选取一个最合适的应用环境的物理结构。

    学生基本信息表:

     

    属性名

    类型

    长度

    备注

    Stu_num

    varchar

    15

    Stu_name

    varchar

    10

    Stu_gender

    varchar

    2

    男、女

    Stu_age

    int

    4

    0……100之间

    Stu_tele

    varchar

    15

    Stu_spe

    varchar

    20

    住宿费用信息表:

     

    属性名

    类型

    长度

    备注

    List_num

    Varchar

    15

       Stu_num

    Varchar

    15

       Dor_num

    Varchar

    15

    water

    double

    6

    大于0

    Elect

    double

    6

    大于0

        Repaire

    double

    6

    大于0

    live

    double

    6

    大于0

    date

    date

    8

    指的是具体一年

    物品管理信息表:

     

    属性名

    类型

    长度

    备注

    Mana_num

    Varchar

    15

        Dor_num

    Varchar

    15

    Desk

    Int

    2

    大于0

    Chair

    Int

    2

    大于0

    Bed

    Int

    2

    大于0

    fan

    Int

    2

    大于0

    lighr

    Int

    2

    大于0

    window

    Int

    2

    大于0

    宿舍信息表:

    属性名

    类型

    长度

    备注

    Dor_num

    Varchar

    15

    Build_num

    Varchar

    2

    Zone

    Varchar

    2

    ABCDEFG

    People_total

    Int

    2

    0……8

    size

    varchar

    2

    1(四人)2(六人)3(八人)

    管理员信息表:

    属性名

    类型

    长度

    备注

       Mana_num

    Varchar

    15

    Mana_name

    Varchar

    10

    Mana_gender

    Varchar

    2

    男,女

    Mana_age

    Int

    4

    0……100

    Mana_tele

    varchar

    15

    11位

    Build_num

    int

    2

    zone

    varchar

    2

    ABCDEFG

    3.6数据库实施

    数据库的实施:数据库设计完成后,设计人员要用DBMS提供的数据定义语言和其他的使用程序将数据库逻辑结构设计和物理结构设计的结构用DDL严格描绘出来,成为DBMS可以接受的源代码,再经过调试产生目标模式。最后将数据装入数据库。

     

    3.6.1数据库表的定义

    创建学生信息表:

     Create table student

    (stu_num  varchar(15),

    Stu_name  varchar(10),

    Stu_gender  varchar(2)  check(stu_gender=’男’ or stu_gender=’女’),

    Stu_age  int  check(stu_age>0 and stu_age<100),

    Stu_tele  varchar(15),

    Stu_spe  varchar(20),

    Primary key (stu_num),

    );

     

    创建费用信息表:

     Create  table  live

    ( list_num  varchar(15),

    Stu_num  varchar(15),

    Dor_num  varchar(15),

    Water  float check(water>=0),

    Elect  float  check(elect>=0),

    Repair  float  check(repair>=0),

    Living  float  check(living>=0),

    statu  int default(1), 

    Date  date,

    Primary key(list_num),

    Foreign key (stu_num ) references  student(stu_num)

    on update cascade,

    Foreign key (dor_num ) references  dormitory(dor_num)

    on update cascade

    );

     

     

    创建物品信息管理表:

    Create  table tool

    ( mana_num  varchar(15),

    Dor_num  varchar(15),

    desk  int  check(desk>=0),

    Chair  int  check(chair>=0),

    Bed  int  check(bed>=0),

    Light  int  check(light>=0),

    Primary key (dor_num),

    Foreign key (mana_num ) references  manager(mana_num)

    on update cascade on delete set null

    );

     

    创建宿舍信息管理表:

     Create table dormitory

    (dor_num varchar(15),

    People_total  int  check(people_total>=0 and people_total<=8),

    Size   int check(size=1 or size=2  or size=3)

    );

     

    创建管理员信息表:

     Create table manager

    (mana_num  varchar(15),

    mana_name  varchar(10),

    mana_gender  varchar(2)  check(stu_gender='男' or stu_gender='女'),

    mana_age  int  check(stu_age>0 and stu_age<100),

    mana_tele  varchar(15),

    Primary key (mana_num)

    );

     

    3.6.2视图的定义:

    所有的信息汇总在一起:

    Create view allmass

    (stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dor_num,water,elect,repair,living,live_status,Date,people_total,size,dor_status,mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu)

    as select student.stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu,list_num,dormitory.dor_num,water,elect,repair,living,live_statu,Date,people_total,size,dor_statu,manager.mana_num,desk,chair,bed,light,tool_statu,mana_name,mana_gender,mana_age,mana_tele,mana_statu

    from student,lives,dormitory,tool,manager

    where student.stu_num=lives.stu_num

    and lives.dor_num=dormitory.dor_num

    and dormitory.dor_num=tool.dor_num

    and tool.mana_num= manager.mana_num ;

    学生信息视图:

    Select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,mana_name

    from allmass

    where stu_statu=1;

     

    管理员信息:

    create view manager_view

    as

    select manager.mana_num,mana_name,mana_age,mana_gender,mana_tele

    from manager

    where  mana_statu=1;

    宿舍信息:

    create view dormitory_view

    as

    select tool.dor_num,build_num,zone,people_total,size

    from tool,dormitory

    where tool.dor_num=dormitory.dor_num and dor_statu=1;

    物品信息:

    create view tool_view

    as

    select dor_num,mana_num, desk,chair,bed,light

    from tool

    where tool_statu=1;

    账单信息:

    create view lives_view

    as

    select list_num,stu_name,dor_num,water,elect,date,repair,living

    from lives,student

    where live_statu=1 and lives.stu_num=student.stu_num;

     

    3.6.3索引:

    每一张表通过主键的列产生索引,从而加快查询时的进度。

    拿学生信息表进行举例:

    Create index stu_index on student(stu_num);

    当然可以通过数据库自动生成。

     

    3.6.4触发器的定义:

    在学生表上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

    create trigger on_pre_stu

    on student

    for update

    as

    begin

    declare @stu_num varchar(15)

    declare @pre_stu_name varchar(10)

    declare @pre_stu_gender varchar(2)

    declare @pre_stu_age int

    declare @pre_stu_tele varchar(15)

    declare @pre_stu_spe  varchar(20)

    select  @stu_num = stu_num from deleted

    select @pre_stu_name =stu_name from deleted

    select @pre_stu_gender =stu_gender from deleted

    select @pre_stu_age = stu_age from deleted

    select @pre_stu_tele =stu_tele from deleted

    select @pre_stu_spe = stu_spe from deleted

    insert into pre_stu(stu_num,pre_stu_name,pre_stu_gender,pre_stu_age,pre_stu_tele,pre_stu_spe )

    values(@stu_num,@pre_stu_name,@pre_stu_gender,@pre_stu_age,@pre_stu_tele,@pre_stu_spe)

    end

     

    在管理员上建立触发器,记录被修改的信息。在原表中通过一个状态属性标示是否被删除,因此数据并不会真正被删除,只需要记录被修改的信息。

     

    create trigger on_pre_mana

    on manager

    for update

    as

    begin

    declare @mana_num varchar(15)

    declare @pre_mana_name varchar(10)

    declare @pre_mana_gender varchar(2)

    declare @pre_mana_age int

    declare @pre_mana_tele varchar(15)

    select  @mana_num = mana_num from deleted

    select @pre_mana_name =mana_name from deleted

    select @pre_mana_gender =mana_gender from deleted

    select @pre_mana_age = mana_age from deleted

    select @pre_mana_tele =mana_tele from deleted

    insert

    into pre_mana(mana_num,pre_mana_name,pre_mana_gender,pre_mana_age,pre_mana_tele)values(@mana_num,@pre_mana_name,@pre_mana_gender,@pre_mana_age,@pre_mana_tele)

        end

    3.6.5用户的定义:

    create user dba for login dba with default_schema=dbo

    exec sp_addrolemember 'db_owner' ,'dba'

     

    3.6.6 对数据的管理:

    对数据的管理主要是由增删改查组成,以学生信息的管理为例,

    增加:

    insert into

    student(stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe,stu_statu)

    values('201677H0555','刘飞达','男',19,14646646465,'软工',1);

     

    删除:值得注意的是我删除信息用的是更新信息语句,只需要更改状态值即可标示数据是否被删除,数据不会真的被删除,做好了别分工作。

    update student set stu_status=0 where stu_num=’201677H0522’;

    修改:

    update student set stu_name='刘豪' where stu_num='201677H0522';

     

    查询:值得注意的是查询的条件是数据行的状态值是1,也就是被标示未被删除。

    select stu_num,stu_name,stu_gender,stu_age,stu_tele,stu_spe from student where stu_statu=1;

     

    分别查询每一个宿舍的总费用,并且按照宿舍号进行排序(使用的是分组求和的思想):

    select dor_num , sum(w   ater+elect + repair +living) from lives group by dor_num order by dor_num ;

    在sql代码执行的过程中,会自动生成存储过程,将有价值的存储过程进行储存。

     

    3.7系统调试和测试

     

    在对数据库的备份功能进行测试的过程中,我在原表中对数据进行修改,从而触动触发器将被删除的信息储存在备份表中。执行语句update student set stu_name='刘豪' where stu_num='201677H0522'; 然后查看备份表中的信息,验证之后正确。

     

    把数据库总所有的信息联合起来,形成一张非常大的表,生成一个视图,测试之后,可以成功生成,满足要求。

    在安全性方面,我创建了用户并且进行了授权:

    create login dba with password='123456', default_database=stu_dor_manage;

    create user dba for login dba with default_schema=dbo

    exec sp_addrolemember 'db_owner' ,'dba'

    执行以后,成功生成了一个用户:测试成功!

    4.系统评价

    4.1我的系统特色:
    A、数据结构化 ,数据之间具有联系,面向整个系统。
    B、数据的共享性高,冗余度低,易扩充 。
    C、数据独立性高 。
    D、数据由DBMS统一管理和控制。

    4.2 系统不足及改进

    在对数据库进行设计的过程中,结构比较简单,不能够应对是否能复杂的情况,只能对学生住宿的简单信息进行操作。另外,在安全性方面做得也不够完善,主要原因在于设计的重点是功能的正常执行,而不是在每一个细节做到完美。另外,执行虚度方面没有做出专门的优化。因此,这个数据库系统需要我在以后相信的去完成每一个细节。

    5.设计心得

    在设计数据库的过程中我遇到过非常多的问题:

    首先,在设计阶段有非常多的数据项,当时觉得不好分类和处理,而且有很多的数据项和许多实体都有关系。最后通过查看课本例题,问同学等方式将各个数据项进行归类,对于和多个实体之间都有关系的数据项可以建立一个关系表,从而完成归类。

    接着,在添加数据的过程中,我忽略掉了数据的参照完整性,导致许多数据不能够正常加入。后来经过同学的提示,我将数据进行了统一分析,保持所有的数据一致,最后数据可以正常输入。

    最后,每个表中的数据更改完成之后,更改后的数据会丢失找不到了。对于这个问题就解决办法为加入触发器,记录表中信息的修改前的值,成功解决问题。

    收获:对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。

     

     

     

     

    展开全文
  • 本系统用简洁使用的方式,完成了一个具有高度伸缩性,灵活性,稳定性及可扩充性,易维护的java EE学生宿舍管理系统,实现了宿舍信息管理、学生入住管理、宿舍管理员管理、系统辅助等功能。在设计方面,本系统使用的...
  • 本项目是一套基于SSM的学生宿舍管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都...
  • 纯文档的数据库宿舍管理系统课设,不含数据库代码,适合你们参考
  • 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
  • 功能齐全,可以直接运行,实现学生离返校、住宿、报修等信息查询
  • 学生宿舍管理系统数据库的课程设计,包括需求分析说明书,E-R图,建库源码,总结等各种课程设计所需.... 学生宿舍管理系统数据库的课程设计,包括需求分析说明书,E-R图,建库源码,总结等各种课程设计所需....
  • 数据库课设学生宿舍管理系统源码,直接将项目拖入eclipse就可以用,有视频教程。
  • 学生宿舍管理系统数据库模板,包括系统管理员,宿舍管理员,学生,报修维护表,考勤记录表,学生宿舍楼管理表,宿舍管理表
  • Java+SQL server 学生宿舍管理系统 数据库课程设计 简单控制台输出功能 增删查改统计
  • C#和Microsoft sql server 数据库实现学生宿舍管理系统。里面有全部工程文件和使用说明.txt
  • 学生宿舍管理系统的开发主要包括前台用户界面的开发和后台数据库的开发,对于后台数据库的建立和维护要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于前端应用程序的开发则要求应用程序能提供强大的...
  • 数据库课程设计 学生宿舍管理系统 包括前后台源程序 代码和一份完整文档
  • 数据库课程设计-宿舍管理系统

    万次阅读 多人点赞 2017-06-17 15:02:35
    最近写完了数据库的课程设计,想把整个源码的编辑过程发出来。程序很简单,需要有很多完善的地方,在这里,我想和大家分享写这个程序的心路历程。 首先,在开始写程序之前。我们需要先写一些工具类,来辅助完成整个...
     

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

    首先,在开始写程序之前。我们需要先写一些工具类,来辅助完成整个程序的构建,在这里我把连接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 
     

     

     

     

     

    展开全文
  • 数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系...Java web 课程设计宿舍管理系统数据库部分。
  • 自己写的数据库设计系统,数据库设计是SOL server2000 宿舍管理系统如果需要可以下去看啊看,可以参照自己再做一遍也行,水平有限,考虑的不够全面
  • 学生宿舍管理系统数据库设计案例 一个完整的数据库设计案例。对设计过程有详细的分析过程。
  • python学生宿舍管理系统
  • 这是一个比较完善的毕业设计管理信息系统,采用J2EE语言和MYSQL数据库编写,里面包括源代码、数据库、等所需材料
  • 基本的登录增删改的功能
  • C语言实现,基于mysql、visual studio 的 学生管理系统,分为 管理员、老师、学生三个用户,包含宿舍管理、学生管理、班级管理三大功能模块。压缩包中包含说明书、联系方式(问题咨询)。
  • 这是数据库课程设计学生公寓管理系统的实现代码,包含数据库课中的存储过程、触发器、视图、函数以及系统需要用到的数据、表的sql脚本,一键导入。
  • 数据库系统-课程设计报告
  • 系统功能方便实用,好的软硬件环境,友好的流程化界面、向导性的简易操作,实现了对宿舍信息数据的远程浏览、查询、编辑和管理等基本数据库操作。但由于时间的原因,本系统还有很多不足。系统没有实现要达到的所有...
  • 主要内容: (1)了解目前宿舍管理的现状以及SQL Server 2000的功能和特点。 (2)通过实地调查和问答-记录的方式了解宿舍管理的工作业务流程,并记录和处理相关的数据。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,359
精华内容 1,743
关键字:

学生宿舍数据库管理系统设计