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

2024-06-10 02:48

本文主要是介绍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
begindelete 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程序就完成了!

源码链接:源码下载

这篇关于Swing图形界面程序—同学通讯录系统(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1047016

相关文章

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc