户籍管理系统设计 Java.docx
- 文档编号:4306905
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:21
- 大小:1.56MB
户籍管理系统设计 Java.docx
《户籍管理系统设计 Java.docx》由会员分享,可在线阅读,更多相关《户籍管理系统设计 Java.docx(21页珍藏版)》请在冰豆网上搜索。
户籍管理系统设计Java
Java
户籍管理系统
绪论
随着时代的发展、科学的进步,信息时代已经遍布全球,计算机已广泛地深入各行各业,起着越来越巨大的作用。
它运算速度快,体积小,可靠性高,通用性与灵活性强,以及很高的性能价格比等特点,把人们带入了一个一切都离不开计算机的新时代。
本文介绍的系统是户籍管理系统,包括登陆界面,户籍管理主界面,开户登记界面,新增人口界面,删除人口界面,修改户籍信息界面,用户管理界面,分别有增、删、查、改的功能。
1.1项目开发背景
近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入了信息时代,随着人口的不断增长,户籍管理部门也应得到良好的发展,利用现代化管理工具使其变成半自动化必定会提高其工作效率。
1.2项目开发目的
户籍管理系统是针对户籍管理部门而开发的,为其改变人口信息仍需要手动处理和查询,个人的信息在处理中丢失或者不明确等现象而设计的。
通过这个户籍管理系统,可以让户籍管理部门提高工作质量和效率,从而达到更快捷、更准确、更方便的目的。
开发平台简介
此系统的开发平台是WindowsXP,前台使用JBuilder2005开发,后台数据库为SQLServer2000,下面对使用的软件做一下简介。
1.3JBuilder2005
JBuilder是Borland公司开发的针对java的开发工具,使用JBuilder将可以快速,有效的开发各类java应用,它使用的JDK与sun公司标准的JDK不同,它经过了较多的修改,以便开发人员能够像开发Delphi应用那样开发java应用。
JBuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB(EnterpriseJavaBeans)的应用。
用户可以自动地生成基于后端数据库表的EJBJava类,JBuilder同时还简化了EJB的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言InterfaceDefinitionLanguage)和控制远程对象。
JBuilder能用Servlet和JSP开发和调试动态Web应用。
JBuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持各种JDK版本,包括J2ME/J2SE/J2EE。
JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发。
1.4Java语言的特点
Java是目前最流行的软件开发语言之一,由SunMicrosystem公司推出,称为网络上的“世界语”。
Java适合开发基于多媒体、与平台无关、用面向对象的方法进行基于Internet、Intranet、Extranet的Applet和应用程序。
Java建立在C和C++基础之上,使熟悉C和C++的程序员能很方便地进行Java编程。
但Java摈弃了C和C++中许多不合理的内容。
它具有简单高效、面向对象、不依赖于机器结构的特点,支持多线程、分布和并发机制。
用Java开发的应用软件在可移植性、健壮性、安全性等方面大大优于已存在的其他编程语言。
Java提供了丰富的类库,能最大限度地利用网络。
Java可广泛用于面向对象的事件描述、处理面向对象的企业型的应用开发,还应用于Internet系统管理、Web页面设计、Internet可视化软件开发等方面。
1.5SQLServer2000
SQL全称是“结构化查询语言(StructuredQueryLanguage)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。
SQL不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。
它以记录集合作为操纵对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语言可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。
系统分析
1.6需求分析
1.6.1系统功能设计分析
对应用系统项目的开发,首先要对程序要实现的功能和目标进行整体分析和规划,确保在后期开发中不会出现遗漏或重大缺陷。
因此在软件开发中,要严格按照软件工程的流程进行系统的分析和设计。
1.6.2主要功能
在本系统中主要包含以下功能模块:
1.登陆模块
该模块的功能主要是对用户的ID和密码进行审核,如果正确进入系统,否则提示密码错误,且分为两种权限:
一是普通用户,该用户只能浏览人口的户籍信息和修改自己的密码,而不能对户籍进行增加、删除、修改的功能;二是管理员,该用户可以完成整个系统的所有功能包括对户籍管理的增、删、查、改和对用户的管理。
2.主窗体
此模块将显示整个系统的总体功能以及菜单,可以使用户很容易适应本系统,也可以使用户很快捷的使用本系统。
3.户籍管理模块
该模块主要是实现对人口户籍的信息进行增、删、查、改的功能。
4.用户管理模块
此模块是完成对用户管理的增、删、查、改的功能。
1.7系统设计
1.7.1数据库设计
数据源名:
test,数据库名:
hj,共有3个数据表。
包括:
upeople表——用来存储帐号、密码及权限的记录。
(表3-1)
hjid表——用来存储户籍号、户籍类别、户主姓名及地址。
(表3-2)
hjxx表——用来存储户籍成员信息的表。
(表3-3)
表3-1upeople表
列名
数据类型
长度
说明
userid
char
10
用户ID(主键)
username
char
20
用户姓名(不可为空)
userpassword
char
20
密码(不可为空)
power
bit
1
权限*()
表3-2hjid表
列名
数据类型
长度
说明
户号
Int
4
主键
户别
char
20
户籍类别(不可为空)
户主姓名
char
10
不可为空
住址
varchar
50
不可为空
表3-3hjxx表
列名
数据类型
长度
说明
姓名
char
10
不可为空
户主或关系
char
10
不可为空
曾用名
char
10
允许为空
性别
char
4
不可为空
出生地
varchar
50
不可为空
民族
char
10
不可为空
籍贯
char
20
不可为空
出生日期
char
15
不可为空
续上表3-3hjxx表
列名
数据类型
长度
说明
其他住址
varchar
50
允许为空
宗教信仰
char
10
允许为空
身份证号
char
20
(主键)不可为空
身高
char
3
不可为空
血型
char
10
不可为空
文化程度
char
10
不可为空
婚姻状况
char
10
不可为空
兵役状况
char
10
允许为空
服务处所
char
50
允许为空
职业
char
10
不可为空
1.7.2系统功能结构图
图3-1系统功能结构图
系统的具体实现
1.8登陆
登陆窗体(Welcome)由标签、文本框、密码框以及按钮等控件组成。
图4-1登陆窗体
本系统分为两个权限,即:
管理员——本系统的管理者,能够进行所有操作,并且可以分配权限。
用户ID:
001,密码为:
111。
普通用户——屏蔽了系统的大部分功能,只能对登记和病历进行完全操作,其他功能只能够浏览。
用户ID:
002,密码为:
123。
输入用户ID、密码,单击“确定”后,如果用户ID和密码都正确会提示登陆成功并关闭本窗体显示主窗体,否则,提示信息:
用户名或密码错误请重新输入。
确定按钮代码如下:
dbconndb=newdbconn();
ResultSetrs=null;
Stringsql="";
Stringuid=jTextField1.getText();
Stringupassword=newString(jPasswordField1.getPassword());
booleanflag=false;
sql="select*fromupeoplewhereuserid='"+uid+
"'anduserpassword='"+upassword+"'";
try{
rs=db.Query(sql);
if(rs.next()){
flag=true;
id=jTextField1.getText();
N=rs.getString("username");
MYPOWER=rs.getInt(4);
}else{
JOptionPane.showMessageDialog(null,"用户/密码错误,请重新输入!
");
}
}catch(Exceptione2){
}
if(flag){
if(MYPOWER==1){
power="管理员";
…………//显示主窗体
}else{
…………//显示主窗体
}
}
db.close();
1.9主窗体
主窗体(MainUI)由菜单,标签组成。
图4-2主窗体
登陆成功后进入本窗体,根据不同身份会隐藏部分功能,为了更快捷的接受本系统,主窗体设有五个标签显示总体功能。
点击菜单会弹出相应窗体,相关代码如下:
Select1aa=newSelect1();
aa.setVisible(true);
aa.setSize(545,625);
intw=(WToolkit.getDefaultToolkit().getScreenSize().width-
aa.getWidth())/2;
inth=(WToolkit.getDefaultToolkit().getScreenSize().height-
aa.getHeight())/2;
aa.setLocation(w,h);
aa.validate();
1.10精确查询
精确查询(Select1)由标签、按钮、表格等控件组成。
图4-3精确查询窗体
精确查询(Select1)由标签、按钮、表格等控件组成。
单击查询按钮调用查询方法,相关代码如下:
publicvoidUpdateRecord(){
Vectorvec=newVector(1,1);
DefaultTableModelmodel=newDefaultTableModel();
JdbTablejdbTable1=newJdbTable(model);
tableScrollPane1.getViewport().add(jdbTable1);
model.addColumn("姓名");
model.addColumn("户主或关系");
……
dbconndb=newdbconn();
Stringa=jTextField1.getText();
Stringsql="";
if(jRadioButton1.isSelected()){
sql="select*fromhjxxwhere户号='"+a+"'";
}elseif(jRadioButton2.isSelected()){
sql="select*fromhjxxwhere身份证号='"+a+"'";
}
try{
ResultSetrs=db.Query(sql);
while(rs.next()){
vec=newVector();
vec.add(rs.getString("姓名"));
vec.add(rs.getString("户主或关系"));
……
model.addRow(vec);
}
}catch(Exceptionea){
ea.printStackTrace();
}
tableScrollPane1.getHorizontalScrollBar();
System.out.println(jdbTable1.getRowCount());
jdbTable1.setGridColor(Color.blue);
jdbTable1.setDragEnabled(true);
jdbTable1.setSelectionForeground(Color.red);
jdbTable1.setSelectionBackground(Color.green);
jdbTable1.setShowVerticalLines(true);
jdbTable1.setEditable(false);
jdbTable1.setAutoResizeMode(0);jdbTable1.setFont(newjava.awt.Font("Dialog",Font.PLAIN,14));
}
1.11模糊查询
模糊查询(Select2)由标签、按钮、表格等控件组成。
图4-2模糊查询窗体
本窗体功能实现同精确查询窗体类似,不做详细解释。
1.12开户管理
开户管理窗体(Addpeople)由标签、文本框、按钮、分页面板等控件组成。
图4-5开户管理窗体
进入主窗体后单击开户登记菜单可进入此窗体,通过该窗体可以对没有户口的成员进行开户操作。
登记按钮代码如下:
dbconndb=newdbconn();
Stringa=(String)jComboBox2.getSelectedItem();
Stringb=jTextField2.getText();
Stringsql="select姓名fromhjxxwhere户主或关系='"+a+"'and户号='"+b+"'";
ResultSetrs=null;
rs=db.Query(sql);
try{
if(rs.next()){
JOptionPane.showMessageDialog(null,"此关系人已经存在,请重新选择关系!
");
}
}catch(Exceptionee){
}
}
窗体初始化代码如下:
Addpeopleaa=newAddpeople();
aa.jTabbedPane1.setEnabledAt(1,false);
dbconndb=newdbconn();
ResultSetrs=null;
Stringsql="selectmax(户号)fromhjid";
rs=db.Query(sql);
intx;
try{
if(rs.next()){
x=rs.getInt
(1);
if(x<1000000){
x=1000000;
}else{
x=x+1;
}
aa.jTextField2.setText(""+x);
System.out.println(""+x);
}else{
x=1000000;
aa.jTextField2.setText(""+x);
System.out.println(""+x);
}
}catch(Exceptione3){
}
1.13删除人物
删除人物窗体(Dele)由标签、文本框、按钮、表格等控件组成。
图4-6删除人物窗体
进入主窗体后单击删除人物菜单进入此窗体,该窗体所完成的功能是删除人物,首先要先查询要删除的人物是否存在,如存在则可以删除,否则无法完成操作。
查询按钮代码如下:
dbconndb=newdbconn();
Stringa=jTextField1.getText();
Stringsql="select*fromhjxxwhere身份证号='"+a+"'";
ResultSetrs=null;
rs=db.Query(sql);
try{if(rs.next()){
this.queryDataSet1.close();
this.queryDataSet1.setQuery(newcom.borland.dx.sql.dataset.QueryDescriptor(
database1,sql,null,true,Load.ALL));
this.queryDataSet1.open();
jButton2.setEnabled(true);
}else{
JOptionPane.showMessageDialog(null,"此人不存在无法删除,请确认身份证信息是否正确!
");
}
}catch(Exceptionee){}
删除按钮代码如下:
this.queryDataSet1.close();
Stringa=jTextField1.getText();
Stringsql="select*fromhjxxwhere身份证号='"+a+"'and户主或关系='户主'";
dbconndb=newdbconn();
ResultSetrs=null;
rs=db.Query(sql);
try{
if(rs.next()){
JOptionPane.showMessageDialog(null,"此人身份为户主,请删除后为其户重新开户");
sql="deletefromhjidwhere户号=(select户号fromhjxxwhere身份证号='"+a+"'andhjid.户号=hjxx.户号)";
db.Update(sql);
this.queryDataSet1.setQuery(newcom.borland.dx.sql.dataset.QueryDescriptor(
database1,"select*fromhjxx",null,true,Load.ALL));
this.queryDataSet1.open();
}else{
sql="deletefromhjidwhere户号=(select户号fromhjxxwhere身份证号='"+a+"'andhjid.户号=hjxx.户号)";
db.Update(sql);
this.queryDataSet1.setQuery(newcom.borland.dx.sql.dataset.QueryDescriptor(
database1,"select*fromhjxx",null,true,Load.ALL));
this.queryDataSet1.open();
}
}catch(Exceptionee){
}
}
1.14新增人口登记
新增人口登记窗体(Addpeople2)由标签、文本框、按钮、分页面板等控件组成。
图4-7新增人口窗体
此窗体是对已有户籍的人员进行添加新成员,先查询到户籍是否存在,如存在则可以添加,否则无法完成此操作。
查询相关代码如下:
dbconndb=newdbconn();
ResultSetrs=null;
Stringsql="";
Stringa=jTextField2.getText();
if(a.equals("")){
JOptionPane.showMessageDialog(null,"户号不能为空,请重新输入!
");
}else{
sql="selecthjid.户号,户别,户主姓名,住址fromhjid,hjxxwherehjid.户号='"+
a+"'andhjxx.户主或关系='户主'";
rs=db.Query(sql);
try{
if(rs.next()){
jTextField18.setText(rs.getString("户别"));
jTextField1.setText(rs.getString("户主姓名"));
jTextField3.setText(rs.getString("住址"));
intz=JOptionPane.showConfirmDialog(null,
"请选择",
JOptionPane.YES_NO_OPTION,
JOptionPane.CLOSED_OPTION);
db.close();
if(z==JOptionPane.YES_OPTION){
jButton5.setEnabled(true);
}else{
jButton5.setEnabled(false);
}
}else{
JOptionPane.showMessageDialog(null,"对不起,户口不存在,请到添加界面为其开户!
");
}
}catch(Exceptionee){
}
}
1.15修改户籍信息
修改户籍信息窗体(Upd)由标签、文本框、按钮、下拉列表框等控件组成系统的具体实现。
图4-8修改户籍信息窗体
通过该窗体的查询、修改按钮可以对已有户籍人员的信息进行修改,先查询户籍信息是否存在才能修改,否则无法完成此操作。
查询按钮代码如下:
Stringa=jTextField1.getText();
dbconndb=newdbconn();
Stringsql="select*fromhjxxwhere身份证号='"+a+"'";
ResultSetrs=null;
rs=db.Query(sql);
try{
if(rs.next()){
JOptionPane.showMessageDialog(null,"恭喜您,可以修改!
");
jButton2.setEnabled(true);
}else{
JOptionPane.showMessageDialog(null,"无此人信息,请确认身份证号码是否正确!
");
}
}catch(Exceptionee){
}
修改按钮代码如下:
dbconndb=newdbco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 户籍管理系统设计 Java 户籍管理 系统 设计