自由编写一个Java程序(类)

要求每一行代码均提供注释!!!!!!
随便写个就行

我给你提供一个全面的。

目标:能够掌握一大半java的核心。
问题:看起来代码多,但有助于入门甚至达到高手级别。这个应该算是个精典。
建议:把所有代码复制粘贴。
要求:必须连接数据库。

第一个包bean包中的类:
//这个是自动生成的包,表示本包
package bean;

//映射数据库类,方便管理数据
public class UserBean {

//私有字段
private int userId;//学生id
private String userName;//学生姓名
private String userPass;//学生密码

//封装成公共属性,(把私有字段全选中,右键——源代码——生成get与set方法)
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}

//空构造函数
public UserBean()
{

}
//初始化参数时用的构造函数
public UserBean(String name,String pass)
{
this.userName= name;
this.userPass = pass;
}

}

第二个包support包中的类:
package support;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;//导入连接驱动包
import java.sql.*;//导入数据库包

//这个类是用来连接数据库的,在些之前要先加载驱动

public class DBConn {

//连接数据库方法,类型为连接类
public Connection getConn()
{
//定义一个连接对象
Connection conn = null;
try {
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("加载驱动成功!");

//连接数据库
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=myt85","sa","123456");
System.out.println("数据库连接成功!");

} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败!");
}
return conn;
}

//关闭数据库方法
public void close(Connection conn,PreparedStatement pre)
{
try {
if(pre!=null)
{
pre.close();
}
//后面的判断是判断是否完全关闭
if(conn!=null||!conn.isClosed())
{
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭数据库失败!");
}
}

//重载关闭方法,加入了一个关闭读取流
public void close(Connection conn,PreparedStatement pre,ResultSet rs)
{
try {
if(rs!= null)
{
rs.close();
}
if(pre!=null)
{
pre.close();
}
//后面的判断是判断是否完全关闭
if(conn!=null||!conn.isClosed())
{
conn.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}

}

第三个包dao包中的类:
package dao;
import bean.UserBean;//映射数据库包
import support.DBConn;//连接数据库包
import java.util.*;//集合包
import java.sql.*;//数据库包

//这个类写了操作数据库里面数据的各种方法
public class UserDao {

//全局连接对象、预处理语句对象、结果集对象、连接类对象变量
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
DBConn dbc = new DBConn();

//根据id号查询
public UserBean getAllUsersByuserId(int id)
{
//实例化用户类对象
UserBean user = new UserBean();

//要执行的SQL语句
String sql = "select * from users where userid = ?";
try {
//先打开数据库连接
conn = dbc.getConn();

//获得执行SQL的命令
pre = conn.prepareStatement(sql);
pre.setInt(1, id);//传参

//把SQL命令执行的内容赋值给结果集,这个地方千万不能把顺序写反了
rs = pre.executeQuery();

//如果读取到了内容,就把值赋给user对象
if(rs.next())
{
//后面的字段要与数据库列名相同
user.setUserId(rs.getInt("userid"));
user.setUserName(rs.getString("name"));
user.setUserPass(rs.getString("userpass"));
}

} catch (Exception e) {
e.printStackTrace();
}
finally
{
//最后要关上数据库
dbc.close(conn, pre, rs);
}
return user;
}

//查询所有,返回类型是集合
public ArrayList getAlluser()
{
//实例化集合
ArrayList array = new ArrayList();
String sql = "select * from users";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
while(rs.next())
{
//把查询到的结果集添加到ArrayList集合中去,无论是字符串还是int,取出的值一定要与数据库对应
array.add("id号:"+rs.getString("userid"));
array.add("姓名:"+rs.getString(2));
array.add("密码:"+rs.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
dbc.close(conn, pre, rs);
}
return array;
}
//删除
public boolean deleteUser(int id)
{
boolean bool = false;
String sql = "delete users where userid = ?";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setInt(1, id);//这一步千万不要忘写或写错了顺序,很搞死人的
int count = pre.executeUpdate();//受影响的行数
if(count>0)
{
bool = true;
System.out.println("删除成功!");
return bool;//这一步是节省资源的办法,如果是正确的后面的就不执行
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("删除不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}

//增加,这里面的参数是一个用户
public boolean insertUser(UserBean user)
{
boolean bool = false;
String sql = "insert into users values(?,?)";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setString(1, user.getUserName());
pre.setString(2, user.getUserPass());
int count = pre.executeUpdate();
if(count>0)
{
bool = true;
System.out.println("插入成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("插入不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}

//修改
public boolean updateUser(UserBean user)
{
boolean bool = false;
String sql = "update users set username = ? where userid = ?";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setString(1, user.getUserName());
pre.setInt(2, user.getUserId());
int count = pre.executeUpdate();
if(count>0)
{
bool = true;
System.out.println("修改成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("修改不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}

//验证登陆,,这里面的参数是自定义的两个参数
public boolean getAllUsersByUserNameAnduserPass(String name,String pass)
{
boolean bool = false;

//要执行的SQL语句
String sql = "select * from users where username = ? and userpass =?";
try {
//先打开数据库连接
conn = dbc.getConn();

//获得执行SQL的命令
pre = conn.prepareStatement(sql);
pre.setString(1,name);//传用户名
pre.setString(2,pass);//传用户密码
rs = pre.executeQuery();
//如果读取到了东西,则进行下述操作
if(rs.next())
{
bool = true;
System.out.println("登陆成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("登陆不成功!");
}
finally
{
//最后要关上数据库
dbc.close(conn, pre,rs);
}
return bool;
}
//查询总的记录数
public int countUser()
{
//要执行的SQL语句,SQL语句用到了一个sd,是用来取值的
String sql = "select count(*) as ad from users ";
int count = 0;
try {
//先打开数据库连接
conn = dbc.getConn();

//获得执行SQL的命令
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
//如果读取到了东西,则进行下述操作
if(rs.next())
{
//获得ad的值,也就是总行数
count=Integer.parseInt(rs.getString("ad"));
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
//最后要关上数据库
dbc.close(conn, pre,rs);
}
//返回总行数
return count;
}

}

第四个包main包中的类:
package main;
import bean.UserBean;//映射数据库包
import support.DBConn;//连接数据库包
import java.util.*;//集合包
import java.sql.*;//数据库包
import dao.UserDao;//操作数据库方法包

//测试类
public class Test
{

public static void main(String args[])
{
//测试根据id号查询方法
UserDao ud = new UserDao();
// //用一个用户去接收ud方法中的值
// UserBean ub = ud.getAllUsersByuserId(1);
// //分别输出打印
// System.out.println("id号:"+ub.getUserId());
// System.out.println("姓名:"+ub.getUserName());
// System.out.println("密码:"+ub.getUserPass());
//
//
// //测试查询所有
// ArrayList array = ud.getAlluser();
// for(int i=0;i<array.size();i++)
// {
// //因为装进去的是字符串,所以也要定义相对的类型接收
// //array的取值也有不同用get()
// String s = array.get(i).toString();
// System.out.println(s);
// }
//
//
// //测试删除方法
// boolean b=ud.deleteUser(3);
//
// //测试插入方法,这个用到的是用户类的构造函数
// UserBean user = new UserBean("曹元","123");
// boolean bl =ud.insertUser(user);
//
//
// //测试修改方法,这个用到的是直接给类对象赋值方式
// UserBean userbean = new UserBean();
// userbean.setUserName("laoying");
// userbean.setUserId(4);
// boolean ble =ud.updateUser(userbean);

//测试验证方法
// boolean blea = ud.getAllUsersByUserNameAnduserPass("laoying", "123");

//测试查询的总行数
//用来接收总行数的变量
int i = ud.countUser();
System.out.println("查询到的总行数为:"+i);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-27
下面这个是比较完整的了,有属性,有构造。

public class HelloWorld {//定义一个HelloWorld类
private String str;//定义一个类私有的属性str
public HelloWorld(String str) {//HelloWorld类带参数的构造方法
this.str = str;
}
public HelloWorld() {//HelloWorld类不带参数的构造方法
}
public String getStr() {//返回获取str属性值
return str;
}
public void setStr(String str) {//设定str属性的值
this.str = str;
}
public static void main(String[] args) {//类里面的主方法,是程序的入口
HelloWorld hello = new HelloWorld("你好,张三!");//new一个HelloWorld类的对象hello
System.out.println(hello.getStr());//打印出hello对象的str属性
}
}
第2个回答  2008-12-27
一楼的答案其实才最能说明问题..........顶一楼

用你的现成代码

//这分好拿,一行代码的程序
/**定义一个类 H*/
public class H
{
public void print()
{
System.out.println("className is H") ;
}
}
第3个回答  2008-12-27
class People{ //声明一个类
int id; //声明一个成员变量
int age; //声明一个成员变量

PeoPle(int _id,int _age) /*声明一个带参数的构造方法,只要功能是初始化成员变量*/
{
id = _id; //为成员变量赋值
age = _age; //为成员变量赋值
}
void score(int s){ //声明一个带参数的方法(学生的成绩:分数)
System.out.println(s); //打印传递进来的成绩
}
public static void maia(String args){ //程序的入口函数,main方法
People student = new People(1234,20); //实例化一个对象:student
System.out.println(student.id); /*打印学生的学号,括号中是通过student这个对象调用它的成员变量(学号)id */
System.out.println(student.age); /*打印学生的年龄,括号中是通过student这个对象调用它的成员变量(年龄)age */

student.score(90); /*是通过student这个对象调用它的成员方法(分数)score() */
}
}
第4个回答  2008-12-27
楼上强人!呵呵

我刚发给别人的,
作业:
// Java 随便选择两个城市作为预先旅游目标。实现两个独立的线程分别显示10次
// 城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决
// 定去哪个城市。分别用Runnable接口和Thread类实现。
请写明注释,实现得好的,我再加分。急....

public class ThreadTest {
public static boolean flag=false;//结束标志,是否己找到该去城市
public class MyTask implements Runnable{//定义任务 Runnable
String city="";//城市
int counter=0;//数过几次
public MyTask(String c){//构造器
this.city=c;
}
public void run(){
Random ran=new Random();//随机产生器
while(!flag){//没结果不停止
counter++;//计数加一
System.out.println("去城市:"+city);
int time=ran.nextInt(1000);//产生睡随机数
time=Math.abs(time);//保证时间为正数;
System.out.println("睡时间:"+time);
if(counter>9){//己数到10次
if(!flag){//如果对方没先数到,判断我先数到
flag=true;
System.out.println("应该的城市:"+city); }
}
try {
Thread.sleep(time);//开始睡眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
MyTask task1=new MyTask("上海");//生成上海任务
MyTask task2=new MyTask("北京");//生成北京任务
Thread thread1=new Thread(task1);//通过上海任务生成线程
Thread thread2=new Thread(task2);//通过北京任务生成线程
thread1.start();//启动上海线程
thread2.start();//启动北京线程
}

}
第5个回答  2008-12-27
JAVA实现超长整数加法算法

public class MathAdd {

public static void main(String[] args){
String addA="30812";
String addB="208";
System.out.println(addA+"+"+addB+"="+strvalue(addA,addB));
}

public static String strvalue(String addA,String addB){
String strvalue="";
int lenA=addA.length();
int lenB=addB.length();
int templen=0;
//调整长度相同

if(lenA>=lenB){
templen=lenA-lenB;
addB=maxlen(addB,templen);
}else{
templen=lenB-lenA;
addA=maxlen(addA,templen);
}
char addcharA[]=addA.toCharArray();
char addcharB[]=addB.toCharArray();
int len=addcharA.length;
int valueC[]=new int[len];
for(int i=0;i<len;i++){

int a=Integer.parseInt(String.valueOf(addcharA[i]));
int b=Integer.parseInt(String.valueOf(addcharB[i]));
valueC[i]=a+b;
}//每项相加存储
int tmp=0;
//处理进位
for(int i=valueC.length-1;i>=0;i--){
if(valueC[i]>=10){
strvalue=String.valueOf(valueC[i]+tmp-10)+strvalue;
tmp=valueC[i]/10; 软件开发网 www.mscto.com
}else{
strvalue=String.valueOf(valueC[i]+tmp)+strvalue;
tmp=0;
}
}
return strvalue;
}

//调整长度,使其长度一样
private static String maxlen(String str,int templen){
String strmax=null;
StringBuffer buff=new StringBuffer();
for(int i=0;i<templen;i++){
buff.append("0");
}
strmax=buff.toString()+str;
return strmax;
}
}
转自:http://www.9292i.com/newarticle/wlbc/sort21/show-6555.html

参考资料:http://www.9292i.com/newarticle/wlbc/sort21/show-6555.html

相似回答