第一篇:校園卡掌上管理系統(tǒng)編碼與測試報(bào)告-第十組
校園卡掌上管理系統(tǒng)
----編碼與測試報(bào)告
制作人:
曹 靜 崔 文
傅小江 李國明
1、編碼
1.1部分代碼
1.1.1數(shù)據(jù)庫實(shí)施階段任務(wù)
(1)建立數(shù)據(jù)庫(校園卡管理系統(tǒng))
create database campuscard;⑵建立數(shù)據(jù)表
1)用戶信息表的建立
Create table tb_admin(Id int(10)not null primary key,username varchar(32)
not null,password varchar(32)
not null,type smallint(1)not null,createdate
date not null);
2)校園卡信息表的建立
create table tb_card(Id int(10)not null primary key,Stuid varchar(10)
not null,cardid varchar(13)
not null,password varchar(32)
not null,balance double(5)not null,status int(1)not null,createdate
date not null);3)消費(fèi)信息表的建立
Create table tb_consumption(Id int(10)not null primary key,cardid varchar(13)
not null,money doublae(5)
not null,address varchar(32)not null,createdate
date not null);
4)轉(zhuǎn)賬信息表的建立
Create table tb_recharge(Id int(10)not null primary key,cardid varchar(13)
not null,money doublae(5)
not null,createdate
date not null);
5)學(xué)生信息表的建立
Create table tb_student(Id int(10)not null primary key, Stuid varchar(10)not null, Name varchar(32)not null,cardid varchar(18)
not null,bankcard varchar(19)not null,createdate
date not null);
1.1.2實(shí)體類
CardUsers類源代碼 package userGUI;public class CardUsers { public String UserID;//用戶編號 public String UserName;//用戶名; public String UserSex;public String UserPwd;public String UserType;public CardUsers(String UserID){ this.UserID = UserID;}
public CardUsers(String UserID, String UserName, String UserSex, String UserPwd, String UserType)throws PwdShortException { if(UserPwd.length()<6)throw(new PwdShortException());else{ this.UserID = UserID;this.UserName = UserName;this.UserSex = UserSex;this.UserPwd = UserPwd;this.UserType = UserType;} }
public String getUserID(){ return UserID;}
public void setUserID(String UserID){ this.UserID = UserID;}
public String getUserName(){ return UserName;}
public void setUserName(String UserName){ this.UserName = UserName;}
public String getUserPwd(){ return UserPwd;} public void setUserPwd(String UserPwd)throws PwdShortException { if(UserPwd.length()<6)throw(new PwdShortException());else this.UserPwd = UserPwd;}
public String getUserSdx(){ return UserSex;}
public void setUserSdx(String UserSdx){ this.UserSex = UserSex;}
public String getUserType(){ return UserType;}
public void setUserType(String UserType){ this.UserType = UserType;}
@Override public String toString(){ return “用戶編號=” + UserID + “, 姓名=” + UserName + “, 性別=” + UserSex + “, 密碼=” + UserPwd + “, 身份=” + UserType;} }
CardUseRecords類源代碼 package operationGUI;
public class CardUseRecords { private long CardNo;private String UseItems;private double money;private String UseTime;
public CardUseRecords(long cardNo, String item, double money, String time){ this.CardNo = cardNo;this.UseItems = item;this.money = money;this.UseTime = time;} public long getCardNo(){ return CardNo;}
public String getUseItems(){ return UseItems;}
public String getUseTime(){ return UseTime;}
public double getMoney(){ return money;}
@Override public String toString(){ return “卡號=” + CardNo + “, 名目=” + UseItems + “, 費(fèi)用=” + money + “, 時(shí)間=” + UseTime;} }
SchoolCard類源代碼 package cardGUI;import javax.swing.JOptionPane;public class SchoolCard { public int cardNo;//卡號
static int NextCardNo=111003200;//起始卡號 private String UserID;//卡所屬的用戶編號 private String password;private double balance;private boolean isUsing;
public SchoolCard(){ this.cardNo=NextCardNo++;} public SchoolCard(String UserID, String password){ this();this.UserID = UserID;this.password = password;this.balance=0;this.isUsing=true;} public static void setNextCardNo(int newStartNo){//設(shè)置起始卡號 SchoolCard.NextCardNo = newStartNo;} public int getCardNo(){ return cardNo;} public String getUserID(){//差卡的用戶號 return UserID;} public void setUserID(String uid){//設(shè)置卡的用戶號 this.UserID = uid;} public double getBalance(){//查詢余額 return balance;} public String getPassword(){ return password;} public void setPassword(String upwd)throws UseStateException{ if(check())this.password = upwd;else throw(new UseStateException());} public void deposit(double money)throws UseStateException{ if(check())this.balance=balance+money;else throw(new UseStateException());} public void consume(double money)throws UseStateException{ if(check()){ if(this.balance>=money)this.balance=balance-money;else JOptionPane.showMessageDialog(null,“卡上余額不夠消費(fèi),請先充值!”);} else throw(new UseStateException());} public boolean getCardState(){ return isUsing;} public void setState(boolean state){ this.isUsing = state;} public boolean check(){ if(this.isUsing)return true;else return false;} @Override public String toString(){ return “卡號=” + cardNo + “, 用戶號=” + UserID + “, 密碼=” + password + “, 余額=” + balance + “, 是否可用=” + isUsing;}
1.1.3實(shí)現(xiàn)數(shù)據(jù)庫連接
package operationGUI;import java.sql.*;public class DBAccess { private Connection conn=null;private Statement stmt=null;public ResultSet rs=null;private PreparedStatement prestmt=null;private String driver=“sun.jdbc.odbc.JdbcOdbcDriver”;private String url=“jdbc:odbc:CardConn”;//自定義數(shù)據(jù)源名 private String user=“jane”;private String pwd=“123456”;public String notes=“數(shù)據(jù)庫操作提示”;//實(shí)例方法:實(shí)現(xiàn)數(shù)據(jù)庫連接 public void dbconn(){ try{ Class.forName(driver);conn=DriverManager.getConnection(url, user, pwd);stmt=conn.createStatement();} catch(ClassNotFoundException ec){ System.out.println(ec);} catch(SQLException es){ System.out.println(es);} catch(Exception ex){ System.out.println(ex);} } //實(shí)現(xiàn)數(shù)據(jù)庫查詢并返回查詢記錄
public ResultSet dbSelect(String selString){ try{ rs=stmt.executeQuery(selString);} catch(SQLException es){ System.out.println(es);notes=“數(shù)據(jù)庫查詢出現(xiàn)異常”;} return rs;} //數(shù)據(jù)庫更新
public String dbUpdate(String updateString){ try{ prestmt=conn.prepareStatement(updateString);prestmt.executeUpdate();notes=“記錄更新成功”;} catch(SQLException es){ System.out.println(es);notes=“數(shù)據(jù)庫更新出現(xiàn)異常”;} return notes;} //插入數(shù)據(jù)
public String dbinsert(String insertString){ try{ prestmt=conn.prepareStatement(insertString);prestmt.executeUpdate();notes=“插入記錄成功”;} catch(SQLException es){ System.out.println(es);notes=“數(shù)據(jù)庫插入出現(xiàn)異常”;} return notes;} //刪除
public String dbDelete(String delString){ try{ prestmt=conn.prepareStatement(delString);prestmt.executeUpdate();notes=“刪除成功”;} catch(SQLException es){ System.out.println(es);notes=“數(shù)據(jù)庫刪除現(xiàn)異常”;} return notes;} //關(guān)閉數(shù)據(jù)庫
public void dbclose(){ if(conn!=null){ try{ rs.close();stmt.close();conn.close();} catch(Exception e){} } } } 1.2 系統(tǒng)主界面的截圖。
校園卡管理界面
校園卡管理主要功能是對校園卡信息進(jìn)行查詢,開戶銷戶等功能的操作。
圖1登錄界面
1.3系統(tǒng)部分功能界面的截圖。
圖2 個(gè)人信息查詢界面
圖3 修改密碼界面
圖4 開戶界面
圖5銷戶界面
圖6 丟失界面
圖7 補(bǔ)辦界面
圖8 校園卡信息查詢界面
2、測試
2.1測試分析 用戶登錄界面
//確定按鈕代碼
private void jBtnOKActionPerformed(java.awt.event.ActionEvent evt){ if(jRadioButtonp.isSelected())chtype=“普通用戶”;else chtype=“管理員”;db.dbconn();sql=“select * from CardUsers”;db.dbSelect(sql);try { while(db.rs.next()){System.out.println(“b”);//如果用戶號,密碼,身份相符
if(txtUID.getText().equals(db.rs.getString(“UserID”))&& String.valueOf(txtPWD.getPassword()).equals(db.rs.getString(“UserPwd”))&& chtype.equals(db.rs.getString(“UserType”))){ //顯示用戶名,并新建當(dāng)前用戶對象,存儲(chǔ)有關(guān)信息。currentuser=new CardUsers(txtUID.getText());currentuser.UserPwd= String.valueOf(txtPWD.getPassword());currentuser.UserID=txtUID.getText();currentuser.UserType=chtype;currentuser.UserName=db.rs.getString(“UserName”);jlbnote.setText(“歡迎你:”+currentuser.UserName+“!”);System.out.println(“b”);new SchoolCardMainGUI(currentuser).setVisible(true);System.out.println(“c”);//主界面
this.dispose();db.dbclose();} else jlbnote.setText(“賬號,密碼,身份不符,請檢查輸入信息是否正確!”);} } catch(SQLException e){ System.err.print(e.toString());} db.dbclose();}
主界面
用戶信息錄入界面
//添加用戶代碼
private void jbtnAddActionPerformed(java.awt.event.ActionEvent evt){ try { Connection con=DriverManager.getConnection(“jdbc:odbc:CardConn”,“jane”,“123456”);java.sql.Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs=sql.executeQuery(“SELECT * FROM CardUsers”);while(rs.next()){ if(rs.getString(1).equals(jtxtUserID.getText())){ break;} } if(rs.isAfterLast()==false){ JOptionPane.showMessageDialog(this,“已經(jīng)添加此用戶!”);} else{ m.removeAllElements();CheckValiddate ck=new CheckValiddate(jtxtUserID);if(ck.check(0)){ String uid=jtxtUserID.getText();String uname=jtxtUserName.getText();String upwd=jtxtPwd.getText();try{ user=new CardUsers(uid,uname,usex,upwd,utype);//userlist.add(user);m=new DefaultListModel();} catch(PwdShortException e){} userlist.add(user);for(int j=0;j 修改密碼 //確定按鈕響應(yīng)事件代碼 private void jbtnOKActionPerformed(java.awt.event.ActionEvent evt){ CheckValiddate ck=new CheckValiddate(txtPwdnew);if(ck.check(0)&& txtPwdnew.getText().length()>=6){ if(txtPwdnew.getText().equals(txtPwdNA.getText())){ db.dbconn();String sql=“update CardUsers set UserPwd='”+txtPwdnew.getText()+“'where UserID='”+currentuser.UserID+“'”;db.dbUpdate(sql);db.dbclose();jlbnote.setText(“修改密碼成功!”);// JOptionPane.showMessageDialog(this, “chenggong”, “tishi”,JOptionPane.WARNING_MESSAGE);} else jlbnote.setText(“兩次輸入密碼不一致!”);} } 2.2黑盒測試 void mima(){ char a[7],b[]={“533159”};int i,j;for(j=1;j<=3;j++)//for循環(huán)來控制密碼登陸次數(shù),次數(shù)為三次 {printf(“tt請輸入密碼:”);for(i=0;i<6;i++){ a[i]=getch();if(a[i]==8){i=i-2;printf(“b b”);} else { if(a[i]==13)break;printf(“*”);} } a[i]='
主站蜘蛛池模板:
国产女人18毛片水真多1|
日韩av无码一区二区三区不卡|
国产精品成人网址在线观看|
久久99亚洲精品久久久久|
天天做天天爱夜夜爽毛片|
亚洲午夜av久久久精品影院色戒|
亚洲精品无码永久在线观看男男|
亚洲精品久久国产高清小说|
熟女人妻水多爽中文字幕|
无码男男做受g片在线观看视频|
蜜桃麻豆www久久囤产精品|
人妻被按摩到潮喷中文字幕|
午夜dv内射一区二区|
无码日韩av一区二区三区|
免费无遮挡在线观看网站|
四虎国产精品永久免费网址|
国产aⅴ精品一区二区三区尤物|
亚洲精品久久久久久久蜜桃臀|
一本丁香综合久久久久不卡网站|
免费的黄网站在线观看|
日韩精品亚洲人成在线|
国产 日韩 另类 视频一区|
亚洲精品中文字幕乱码4区|
av中文字幕潮喷人妻系列|
九九视频国产免|
乱码精品一区二区三区|
久久国产精品2020免费|
四虎成人欧美精品在永久在线|
综合精品欧美日韩国产在线|
久久精品国产72国产精|
日本卡2卡3卡4卡5卡精品视频|
综合色就爱涩涩涩综合婷婷|
精品国产av无码一区二区三区|
性荡视频播放在线视频|
亚洲成av人片在线观看|
无码人妻aⅴ一区二区三区日本|
国产精品99|
亚洲va在线va天堂xxxx中文|
国产日产欧产精品精品app|
免费精品国偷自产在线2020|
精品国产一区二区三区av 性色|