Swing图形界面程序—同学通讯录系统(1)

一个简单的Swing程序(通讯录)

    来东软一个月了,前天学了一个上午的Swing,老师要求做一个通讯录图形界面程序,就试着做了做,还有许多不完善的地方,如果有时间的话,后面还会接着改的,开发工具是MyEclipse,数据库使用的是Oracle数据库。首先把界面都摆出来吧!

   登录界面

   1.用户界面

  2.用户添加自己同学信息

3.查询自己的同学信息

4.删除同学信息

5.修改个人密码

管理员界面

1.管理员添加用户

2.删除用户(非管理员用户)

接下来是数据库表的设计,就两张表,一个用户表,一个学生表

--用户信息表
create table user_info(
       userid number primary key,  --用户编号
       username varchar(10 char) not null, --用户姓名
       passwd varchar(32 char) not null,  --用户密码
       priv varchar(10) default 'common' not null check (priv in('common','director')), --用户权限  --1.admin 2.普通用户
       registertime date default sysdate not null,
       intime date default sysdate not null,
       outitme date default sysdate not null
);
create table u_student
(
       sno number primary key,
       sname varchar(10 char) not null,
       sex char(2) default '男' not null check (sex in('男','女')),
       birthday date,
       classno varchar(8 char) not null,
       tel varchar(20 char) ,
       email varchar(20 char),
       address varchar(40 char),
       userid number not null,
       foreign key (userid) references user_info(userid)    
);

这里就只要注意一下学生表的userid和用户的userid之间的关系,在用户删除那里要同时删除两张表中的数据,使用的是存储过程。

----存取过程----用来删除两张表中的数据---
create or replace procedure pro_s_u_userid(in_userid number) is
begin
  delete from u_student where userid = in_userid;
  delete from user_info where userid = in_userid;
end;


call pro_s_u_userid(1040);


对学生表的操作类:StudentService.class


package com.edu.services;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.edu.db.DBUtils;

public class StudentService {
	
	private Connection conn = null;
	private PreparedStatement pstm = null;
	private ResultSet rs = null;
	
	public boolean del(String sno,String userid) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			String sql = "DELETE FROM U_STUDENT WHERE SNO = ? AND USERID = ?";
			pstm = conn.prepareStatement(sql);
			pstm.setString(1, sno);
			pstm.setString(2, userid);
			return pstm.executeUpdate() > 0;
		} finally{
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	/**
	 * 通过sno查询
	 * @param sno
	 * @return
	 * @throws Exception
	 */
	public List<String []> queryForDel(String sno,String userid) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
				.append("SELECT S.SNO,S.SNAME,S.SEX,S.BIRTHDAY,S.CLASSNO,")
				.append("		S.TEL,S.EMAIL,S.ADDRESS  FROM U_STUDENT S ")
				.append(" WHERE USERID = ? ");
			if (sno != null && !sno.equals("")) {
				sql.append(" AND S.SNO = ? ");
			}
			sql.append(" ORDER BY S.SNAME");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setString(1, userid);
			if (sno != null && !sno.equals("")) {
				pstm.setString(2, sno);
			}
			rs = pstm.executeQuery();
			List<String []> list = new ArrayList<String[]>();
			String val [] = null;
			int count = 0;
			while(rs.next()){
				val = new String [] {
						String.valueOf(++count),
						rs.getString(1),
						rs.getString(2),
						rs.getString(3),
						rs.getString(4),
						rs.getString(5),
						rs.getString(6),
						rs.getString(7),
						rs.getString(8)
				};
				list.add(val);
			}
			return list;
		} finally{
			DBUtils.close(rs);
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	
	
	/**
	 * 模糊查询姓名
	 * @param username
	 * @return
	 * @throws Exception
	 */
	public List<String []> query(String username,String userid) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
				.append("SELECT S.SNAME,S.SEX,TO_CHAR(S.BIRTHDAY,'YYYY-MM-DD'),S.CLASSNO,")
				.append("       S.TEL,S.EMAIL,S.ADDRESS")
				.append("  FROM U_STUDENT S")
				.append(" WHERE USERID = ? ");
			if (username != null && !username.equals("")) {
				sql.append(" AND S.SNAME LIKE ?");
			}
			sql.append(" ORDER BY S.SNAME");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setObject(1, userid);
			if (username != null && !username.equals("")) {
				pstm.setObject(2, "%" + username + "%");
			}
//			System.out.println("SQL : " + sql.toString());
			rs = pstm.executeQuery();
			
			List<String []> list = new ArrayList<String[]>();
			String val [] = null;
			int count = 0;
			
			while(rs.next()){
				val = new String []{
					String.valueOf(++count),
					rs.getString(1),
					rs.getString(2),
					rs.getString(3),
					rs.getString(4),
					rs.getString(5),
					rs.getString(6),
					rs.getString(7)
				};
				list.add(val);
//				System.out.println("list of service : " + list);
			}
			return list;
		} finally{
			DBUtils.close(rs);
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	/**
	 * 添加
	 * @param val
	 * @return
	 * @throws Exception
	 */
	public boolean add(String...val) throws Exception{
		try {
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
				.append("INSERT INTO U_STUDENT(SNO,SNAME,SEX,BIRTHDAY,CLASSNO")
				.append("						,TEL,EMAIL,ADDRESS,USERID)")
				.append(" 			   VALUES (S_U_STUDENT_SNO.NEXTVAL,?,?,TO_DATE(?,'YYYY-MM-DD'),")
				.append("						?,?,?,?,?)");
//			System.out.println("SQL :" + sql.toString());
			pstm = conn.prepareStatement(sql.toString());
			int size = val.length;
			for (int i = 0; i < size; i++) {
				pstm.setObject(i + 1, val[i]);
			}
			return pstm.executeUpdate() > 0;
		} finally{
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}

}

对用户表的操作类:UserInfoService.class

package com.edu.services;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.edu.db.DBUtils;

public class UserInfoServices {
	
	private Connection conn = null;
	private PreparedStatement pstm = null;
	private ResultSet rs = null;
	private CallableStatement cstm = null;
	
	public String queryPriv(String userid) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
			.append("SELECT PRIV")
			.append("  FROM USER_INFO U")
			.append(" WHERE U.USERID = ?");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setObject(1, userid);
//			System.out.println("-" + userid + "-");
			rs = pstm.executeQuery();
			String priv = null;
			if(rs != null){
				while(rs.next())
				{
					priv = rs.getString(1);
				}
			}
			return priv;
		}finally{
			DBUtils.close(rs);
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	public void delUser(String userid) throws Exception{
		try {
			conn = DBUtils.getConnectiOn();
			String sql = "{call pro_s_u_userid(?)}";
			cstm = conn.prepareCall(sql);
			cstm.setString(1, userid);
			cstm.execute();
		} finally{
			DBUtils.close(cstm);
			DBUtils.close(conn);
		}
	}
	
	public boolean addUser(String username,String passwd,String priv) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
			.append("INSERT INTO USER_INFO(USERID,USERNAME,PASSWD,PRIV,REGISTERTIME)")
			.append("       VALUES (S_USER_INFO_USERID.NEXTVAL,?,?,?,SYSDATE)");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setString(1, username);
			pstm.setString(2, passwd);
			pstm.setString(3, priv);
			return pstm.executeUpdate() > 0;
		} finally{
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	public boolean updatepwd(String userid,String pwd,String newpwd) throws Exception{
		try{
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
			.append("UPDATE USER_INFO U")
			.append("   SET U.PASSWD = ?")
			.append(" WHERE U.USERID = ?")
			.append("   AND U.PASSWD = ?");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setString(1, newpwd);
			pstm.setString(2, userid);
			pstm.setString(3, pwd);
			return pstm.executeUpdate() > 0;
		} finally{
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
	/**
	 * 用户登录
	 * @param username
	 * @param passwd
	 * @param priv
	 * @return
	 * @throws Exception
	 */
	public String login(String username,String passwd,String priv) throws Exception{
		try {
			conn = DBUtils.getConnectiOn();
			StringBuilder sql = new StringBuilder()
				.append("SELECT U.USERID ")
				.append("  FROM USER_INFO U ")
				.append(" WHERE U.PASSWD = ? ")
				.append("   AND U.PRIV =? ")
				.append("   AND U.USERNAME = ? ");
			pstm = conn.prepareStatement(sql.toString());
			pstm.setObject(1, passwd);
			pstm.setObject(2, priv);
			pstm.setObject(3, username);
			rs = pstm.executeQuery();
			String userid = null;
			while(rs.next()){
				userid = rs.getString(1);
			}
			return userid;
		} finally{
			DBUtils.close(rs);
			DBUtils.close(pstm);
			DBUtils.close(conn);
		}
	}
	
}
接下来只需要在对应的按钮执行对应的方法就行了!

一个简单的Swing程序就完成了!

源码链接:源码下载

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现了以下要求说明的功能: 1.要求使用GUI,采用 Swing 技术数据存储采用文件系统(可以是文本 文件、xml 文件、vCard 文件或其他自定义格式文件,但不能是 Excel 文件)。不 使用数据库。 2. 通讯录中每个项目包括: ( 1)基本信息:姓名、手机号码、电子邮箱、生日、所属组、备注、像片。 ( 2)工作单位:国家、省份、城市、地址、工作单位、所属部门、职位、 邮编、电话、传真 ( 3)网络信息:个人主页、即时通信工具及号码、备用邮箱 ( 4)家庭资料:国家、省份、城市、地址、邮编、电话 3 .通讯录数据的录入功能:输入并存储新的通讯录数据,输入时如果有同 名或同电话号码时,应该给出提示。 4 .通讯录数据的查询功能: ( 1)默认列出所有条目。 ( 2)模糊查询,可以按:姓名、电话号码、手机、姓名的汉语拼音的声母 或全拼查询。支持模糊查询即输入部分数据后,可以查询出符合条件的全部条目。 如:输入“张”,列出所有名字中有“张”的条目;输入“ 2645”列出电话中有 该 4个数字的所有条目;输入“xl ”,列出声母为该 2 个字母的所有条目 ( 3)指定分组后,列出某分组的所有条目 说明:查询结果如果有多个条目,应按照姓名排序,并使用姓或姓的第一 个汉语拼音的字母分类。 5 .删除和修改功能:查询到一个条目后,可以删除该条目或修改条目内容。 6 .通信录内容的导入和导出功能。要求能够以CSV 格式和 vCard 格式导入 和导出通讯录的全部内容。并能够与主流手机或其他通讯录软件交换数据。 7 .通讯录显示设置,可以设置在显示查询结果时,一个条目可以显示或不 显示哪些内容。 注意:本系统实现了读取和保存csv文件,同时csv文件中只保存了图片的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值