1、装订线 课程设计纸课 程 设 计 说 明 书1、研究背景随着城市人口规模的扩大和公安部门对城市及农村人口管理工作规范性的逐渐增强,户籍管理工作的业务量急剧增大。传统的手工方法,存在效率低、易出错等缺点,已经难以满足当前户籍管理工作的要求。因此,结合当前日益成熟的计算机相关技术,开发一个专门针对户籍管理的系统已经非常必要了。户籍管理信息系统是公安部门不可缺少的一部分,更是适应现代户籍制度并推动户籍管理走向科学化、规范化、自动化的必要条件。该管理系统能够为用户提供充足的信息和快捷的查询手段,以帮助用户了解户籍工作的情况。它大大改善了公安部门管理、查询户籍的基础工作环境,在一定程度上反映出户籍管理的
2、现代化管理模式。因此人口户籍管理信息系统的开发迫在眉睫。2、 需求分析需求收集和分析是数据库设计的第一个阶段,这个阶段的一个重要而困难的任务是收集将来应用所涉及到的数据。必须把所有可能用到数据都考虑进去,要确定基本数据、数据结构处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础,在仔细调查企业户籍管理系统的基础上,通过与本单位户籍管理人员、相关领导的多次沟通与测试,得到本系统所处理的数据流程。如图2.1户籍信息处理过程迁入、落户户口注销户口迁出查询修改存档图 2.1数据流程图确定了户籍管理系统需要实现的功能:(1)实现户口迁入、落户。(2)迁出。(3)注销录入的全过程。(4)查询和维
3、护户籍信息的档案数据。(5)实现户口信息的保存3、系统概要设计3.1 系统的各功能模块通过系统功能需求分析,得到如图所示的系统功能模块图。如图3.1.1。户籍管理系统 登陆户籍管理居民管理系统管理增删改查户籍增删改查居民增删改查用户修改密码图 3.1.1 系统功能模块图3.2 系统的数据库设计3.2.1 ER图。图3.2.1注销库户口注销存档查询修改户籍库户籍科迁入落户户口迁出迁出库图 3.2.1 ER图3.2.2数据表设计表1 户口信息表HK列名说明数据类型约束Hno户号定长字符串,长度为20 非空,主键Hname户主姓名定长字符串,长度为20非空ID身份证号定长字符串,长度为20非空Nat
4、ion民族定长字符串,长度为20非空Add住址不定长字符串,长度为20非空Indate何时迁入Datetime非空wherein何地迁入不定长字符串,长度为20非空Outdate迁出日期Datetime可空Whereout迁往何地不定长字符串,长度为20可空表2 人口信息表RK列名说明数据类型约束Rname姓名定长字符串,长度为20非空Rsex性别定长字符串,长度为2非空ID身份证号定长字符串,长度为20非空,主键Nation民族定长字符串,长度为20非空Province籍贯定长字符串,长度为20非空Birdate出生日期Datetime非空Birpace出生地不定长字符串,长度为20可空Ad
5、dress住址不定长字符串,长度为20可空 表3 管理员信息表GL列名说明数据类型约束Name姓名定长字符串,长度为20非空Number职工编号定长字符串,长度为20非空,主键Sex性别定长字符串,长度为2可空Password密码不定长字符串,长度为20非空 表4 人口迁入信息表 RIN列名说明数据类型约束Hno户号定长字符串,长度为20非空,主键Relation与户主关系定长字符串,长度为20非空ID身份证号定长字符串,长度为20非空,主键Indata何时迁入Datetime可空wherein迁入地不定长字符串,长度为20可空Out是否迁出定长字符串,长度为20可空户号引用户口信息表,ID引
6、用自人口信息表,两者均为外键 4、系统详细设计和实现4.1 连接数据库public class DBOperation private Connection con;public Connection getConnection()tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);con = DriverManager.getConnection(jdbc:odbc:HR);catch (Exception e) e.printStackTrace(); return con;4.2 登陆界面设计输入用户名、密码:private JPanel get
7、JContentPane() if (jContentPane = null) jLabel2 = new JLabel();jLabel2.setBounds(new Rectangle(0, 0, 600, 400);/jLabel2.setIcon(new ImageIcon(getClass().getResource(/DengLu.jpg);jLabel2.setText();jLabel1 = new JLabel();jLabel1.setBounds(new Rectangle(167, 198, 58, 23);jLabel1.setText(密 码:);jLabel =
8、new JLabel();jLabel.setBounds(new Rectangle(167, 158, 58, 23);jLabel.setText(用户名:);jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJButton(), null);jContentPane.add(getJButton1(), null);jContentPane.add(getJButton2(), null);jContentPane.add(jLabel, null);jContentPane.add
9、(get用户名(), null);jContentPane.add(get密码(), null);jContentPane.add(jLabel1, null);jContentPane.add(jLabel2, null);return jContentPane;创建登陆按钮对象并创建事件,实现登陆功能:private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(169, 227, 70, 23);jButton.setMnemonic(Key
10、Event.VK_ENTER);jButton.setToolTipText(输入用户名、密码登陆);jButton.setText(登录);jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) String user=用户名.getText(); String password=new String(密码.getPassword();if(user.equals()JOptionPane.showMessag
11、eDialog(null,用户名不能为空!);elseif(db.CheckUser(user, password)if(db.IsAdmin(user)MainMenu m= new MainMenu();m.setVisible(true);setVisible(false);elseMainMenuUser m= new MainMenuUser();m.setVisible(true);setVisible(false);elseJOptionPane.showMessageDialog(null,用户名不存在或密码错误! +剩余次数:+(2-i);i+;if(i=3)JOptionP
12、ane.showMessageDialog(null,用户名密码尝试次数已达3次,系统将退出!);System.exit(0););return jButton;登陆界面,如图4.2.1图 4.2.1创建退出按钮,实现退出功能:private JButton getJButton1() if (jButton1 = null) jButton1 = new JButton();jButton1.setBounds(new Rectangle(263, 227, 70, 23);jButton1.setToolTipText(退出系统);jButton1.setText(退出);jButton1
13、.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) System.exit(0););return jButton1;4.3 用户管理模块设计注册用户:private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(150, 211, 78, 27);jButton.setTex
14、t(注册);jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) String user=用户名.getText(); String password1=new String(密码.getPassword();String password2=new String(确认密码.getPassword();if(user.equals()JOptionPane.showMessageDialog(null,用户名不
15、能为空!);else判断两次密码输入的是否相同if(password1.equals(password2)判断用户名是否存在if(db.UserExist(user)JOptionPane.showMessageDialog(null,该用户名已被使用!);符合天剑则注册用户elsedb.AddUser(user, password1);JOptionPane.showMessageDialog(null,注册成功);用户名.setText();密码.setText();确认密码.setText();elseJOptionPane.showMessageDialog(null,两次输入的密码不
16、一样!););return jButton;查询用户名:private JTextField get用户名() if (用户名 = null) 用户名 = new JTextField();用户名.setBounds(new Rectangle(446, 174, 145, 25);return 用户名;删除用户:创建按钮事件private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(351, 269, 90, 30);jButton.setTo
17、olTipText(单击确定删除);jButton.setText(确定删除);jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) 得到用户名、密码String user=用户名.getText(); String password=new String(密码.getPassword();if(user.equals()JOptionPane.showMessageDialog(null,用户名不能为空!);
18、else判断是否存在用户if(db.UserExist(user)判断密码是否正确if(db.Admin(password)判断是否是管理员if(db.IsAdmin(user)JOptionPane.showMessageDialog(null,无法删除管理员!);符合条件则删除用户elsedb.Deluser(user);JOptionPane.showMessageDialog(null,删除成功!);用户名.setText();密码.setText();elseJOptionPane.showMessageDialog(null,管理员密码错误!);elseJOptionPane.sh
19、owMessageDialog(null,用户名不存在!););return jButton;查询用户:public Vector Searchu() Connection con = null; PreparedStatement ps = null; ResultSet rs = null; Vector v = new Vector (); String sqlquery =execute pro_Search_User ; try con = getConnection();ps = con.prepareStatement(sqlquery);rs = ps.executeQuery
20、();while(rs.next()v.add(rs.getString(users);v.add(rs.getString(type);ps.close();con.close();catch (SQLException e) e.printStackTrace(); return v;4.4 户口管理功能模块添加户口,如图4.4.1:数据库操作:public void AddHuKou(String huhao ,String huzhuname ,String select ,String huzhi ,String qianyi ,String dengji ) Connection
21、con = null; PreparedStatement ps = null; String sqlquery = pro_Add_Hukou +huhao+,+huzhuname+ ,+select+,+ huzhi+,+qianyi+,+dengji+ ;try con = getConnection();ps = con.prepareStatement(sqlquery);ps.executeUpdate();ps.close();con.close();catch (SQLException e) e.printStackTrace(); 添加户口界面:private JMenuI
22、tem get添加户口() if (添加户口 = null) 添加户口 = new JMenuItem(添加户口信息);添加户口.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) hidepane();addh=new AddH();jContentPane.add(addh,null);addh.setVisible(true);setTitle(添加户口信息);addh.setBounds(new Rectangle(
23、0, 0, 900,600););return 添加户口;图 4.4.1删除户口,如图 4.4.2:数据库操作:public void Delhukou(String huhao) Connection con = null; PreparedStatement ps = null; try String sqlquery =pro_Delhukou +huhao+;con = getConnection();ps = con.prepareStatement(sqlquery);ps.executeUpdate();ps.close();con.close(); catch (SQLExce
24、ption e) e.printStackTrace(); 界面设计:private JMenuItem get删除户口() if (删除户口 = null) 删除户口 = new JMenuItem(删除户口信息);删除户口.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) hidepane();delh=new DelH();jContentPane.add(delh,null);delh.setVisible(tru
25、e);setTitle(删除户口信息);delh.setBounds(new Rectangle(0, 0, 900,600););return 删除户口;图 4.4.2修改户口信息,如图4.4.3:数据库操作public void ChangeHuKou(String huhao ,String huzhuname ,String hubie ,String huzhi ,String qianyi ,String dengji ) Connection con = null; PreparedStatement ps = null; String sqlquery =pro_Change_
26、Hukou +huhao+ ,+huzhuname+ ,+hubie+,+huzhi+,+ qianyi+,+dengji+; try con = getConnection();ps = con.prepareStatement(sqlquery);ps.executeUpdate();ps.close();con.close();catch (SQLException e) e.printStackTrace(); 界面设计private JMenuItem get修改户口() if (修改户口 = null) 修改户口 = new JMenuItem(修改户口信息);修改户口.addAc
27、tionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) hidepane();changeh=new ChangeH();jContentPane.add(changeh,null);changeh.setVisible(true);setTitle(修改户口信息);changeh.setBounds(new Rectangle(0, 0, 900,600););return 修改户口;如图 4.4.3查询户口,如图 4.4.4:数据库操
28、作:浏览所以户口:public Vector Searchh() Connection con = null; PreparedStatement ps = null; ResultSet rs = null; Vector v = new Vector (); String sqlquery =execute pro_Search_H ; try con = getConnection();ps = con.prepareStatement(sqlquery);rs = ps.executeQuery();while(rs.next()v.add(rs.getString(DoorNum);
29、v.add(rs.getString(DoorName);v.add(rs.getString(Hubie);v.add(rs.getString(HuZi);v.add(rs.getString(MoveMessage);v.add(rs.getString(RecordData);ps.close();con.close();catch (SQLException e) e.printStackTrace(); return v;界面设计:private JMenuItem get查询户口() if (查询户口 = null) 查询户口 = new JMenuItem(查询户口信息);查询
30、户口.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) hidepane();search=new Search();jContentPane.add(search,null);search.setVisible(true);setTitle(查询户口信息);search.setBounds(new Rectangle(0, 0, 900,600););return 查询户口;4.5居民信息管理查询居民信息:查询全部居民信
31、息,如图 4.5.1public Vector Searchp() Connection con = null; PreparedStatement ps = null; ResultSet rs = null; Vector v = new Vector (); String sqlquery =execute pro_Search_P; try con = getConnection();ps = con.prepareStatement(sqlquery);rs = ps.executeQuery();while(rs.next()String temp1=rs.getString(ID
32、CardNum);String temp2=rs.getString(Name);v.add(temp2);v.add(temp1);/v.add(rs.getString(Name);/v.add(rs.getString(IDCardNum);v.add(rs.getString(Sex);v.add(rs.getString(Birthday);v.add(rs.getString(Nation);v.add(rs.getString(DoorNum);v.add(rs.getString(Relation);v.add(rs.getString(BirthPlace);v.add(rs
33、.getString(Origin);v.add(rs.getString(Education);v.add(rs.getString(MaritalStatus);v.add(rs.getString(Occupation);v.add(rs.getString(Political);v.add(rs.getString(MoveMessage);v.add(rs.getString(WorkPlace);ps.close();con.close();catch (SQLException e) e.printStackTrace(); return v; 图 4.5.1按身份证查询居民信息
34、,如图4.5.2public Vector Searchp_id(String id) Connection con = null; PreparedStatement ps = null; ResultSet rs = null; Vector v = new Vector (); String sqlquery =pro_Search_P_id +id+ ; try con = getConnection();ps = con.prepareStatement(sqlquery);rs = ps.executeQuery();while(rs.next()String temp1=rs.g
35、etString(IDCardNum);String temp2=rs.getString(Name);v.add(temp2);v.add(temp1);/v.add(rs.getString(Name);/v.add(rs.getString(IDCardNum);v.add(rs.getString(Sex);v.add(rs.getString(Birthday);v.add(rs.getString(Nation);v.add(rs.getString(DoorNum);v.add(rs.getString(Relation);v.add(rs.getString(BirthPlac
36、e);v.add(rs.getString(Origin);v.add(rs.getString(Education);v.add(rs.getString(MaritalStatus);v.add(rs.getString(Occupation);v.add(rs.getString(Political);v.add(rs.getString(MoveMessage);v.add(rs.getString(WorkPlace);ps.close();con.close();catch (SQLException e) e.printStackTrace(); return v;图 4.5.2修改居民信息,如图 4.5.3数据库操作public void ChangePeople(String name,String id ,String birthday ,String sex ,String nation
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922