freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

面向對象課程設計---工資管理系統(tǒng)(編輯修改稿)

2025-02-14 15:56 本頁面
 

【文章內容簡介】 框輸入提示(工號)顯示用戶信息文本框,用來顯示將要刪除的用戶信息:圖10 刪除模塊的設計,新建一個叫DeletePanel的java類,布局設計同上。刪除容器中加入了一個子容器select,Panel select中加入了提示輸入工號的標簽、工輸入框、空標簽和刪除按鈕;下方是一個和select平級的文本框,用來顯示用戶刪除的員工的信息。功能和實現都非常簡單,沒有超出前面設計的范圍,故簡略說明,窗口顯示如圖11所示。 圖11 該模塊幾個模塊中事件處理最簡單的一個模塊,其中需要說明的就是刪除操作只能按工號刪除。當用戶輸入工號后,點擊刪除按鈕是并未進行刪除操作,系統(tǒng)將準備刪除的員工信息打印在下方的顯示文本框中,當用戶點擊確認對話框中的確認時,系統(tǒng)才進行員工信息刪除。操作實例如圖12,關鍵代碼如下: if(()==刪除){ try { int a = (())。 HibernateOperate q = new HibernateOperate()。 (a,result)。 } catch (NumberFormatException e1) { (請輸入合法的整數??!)。 } y_n = new Dialog(,確定刪除?,true)。 Panel p1 = new Panel()。 Y = new Button(yes)。 (this)。 N = new Button(no)。 (this)。 (new Label(確認請按“yes”,撤銷請按“no”))。 (Y)。 (N)。 (Center,p1)。 ()。 (true)。 } if(()==Y){ ()。 id = (())。 HibernateOperate q = new HibernateOperate()。 if((id)){ success = new Dialog(,刪除成功 ,true)。 Panel p2 = new Panel()。 (new Label(刪除成功!))。 confirm = new Button(確認)。 (this)。 (confirm)。 (p2)。 ()。 (true)。 }else{ success = new Dialog(,刪除失敗 ,true)。 Panel p2 = new Panel()。 (new Label(該用戶不存在,刪除失??!))。 confirm = new Button(確認)。 (this)。 (confirm)。 (p2)。 ()。 (true)。 } }else if(()==no){ ()。 ( 刪除失敗!)。 success = new Dialog(,刪除失敗 ,true)。 Panel p2 = new Panel()。 (new Label(刪除失敗!))。 confirm = new Button(確認)。 (this)。 (confirm)。 (p2)。 ()。 (true)。 } if(()==確認){ ()。 }圖123 Hibernate重要配置根據本課題內容要求可知,該課題對數據庫表格的要求并不復雜,僅用一張表即可,并且能使數據的冗余度非常小,所以就一個數據庫,一張表即可滿足本課程設計的要求。(1)建立數據庫。在mysql命令行執(zhí)行語句create database coursedesign。后,建數據庫的工作將就完成了。(2)引入相關jar包,將下載好的hibernate、Junit、日志文件和mysql驅動類import到該課題的工程中,具體引入的jar包如下:(3)建立實體類。新建一個叫User的java類。加上hibernate的實體類的注解,并寫好員工的屬性。代碼如下:@Entitypublic class User { private int id。 private String name。 private int basicWage。 private int postWage。 private int bonus。} 寫好各個屬性的get和set方法,特殊一點是在主鍵id的get方法前加上注解@Id和@GeneratedValue,前者表示該屬性是主鍵,后者表示該屬性的數值自增類型,具體如下: @Id @GeneratedValue public int getId() { return id。 }此外,添加一個get方法,并注解為@Transient,表示不存入數據庫的,改方法的功能是用來獲取工資總額,具體如下: @Transient //不存入數據庫,只是為了方便查詢 public int getAllWage() { return ()+()+()。 }還有,必須重寫實體類的toString方法如下: public String toString(){ return ID: +getId()+ 姓名:+getName()+ 基礎工資:+getBasicWage() + 職務工資:+getPostWage()+ 獎金:+bonus+ 工資總額: +getAllWage()+\n\n。 }(4)配置好hibernate的配置文件。\documentation\manual\zhCN\html_single中參考,把配置文件copy過來,按自己的需要配置上。直觀起見,直接在配置文件中注釋了,每個語句都有注釋,即這里打算的寫的解釋。代碼如下: ! 加載mysql驅動 property name=/property ! 連接到本地的一個叫coursedesign的數據庫 property name=jdbc:mysql://localhost/coursedesign/property ! 數據庫用戶名 property name=root/property ! 數據庫用戶密碼 property name=root/property ! 配置數據庫方言 property name=dialect/property ! 配置數據庫連接池,這里單一訪問就配置為1 property name=1/property ! 配置線程 ! Enable Hibernate39。s automatic session context management property name=current_session_context_classthread/property ! Disable the secondlevel cache ! 不用hibernate的二級緩存 property name=/property ! Echo all executed SQL to stdout ! 配置在執(zhí)行過程中打印sql語句,方便查錯 property name=show_sqltrue/property ! 顯示格式化的sql語句 property name=format_sqltrue/property ! Drop and recreate the database schema on startup ! 配置為每次不先刪表再建表,否則每次都會刪除以前的數據 property name=update/property ! 配置自己寫的實體類 mapping class=/(5)配置日志文件。其作用是顯示hibernate執(zhí)行過程中的詳細情況,非常有必要步驟,對于查錯,測試修改非常重要的。直接去hibernate附帶的例子里copy就行。并將里面如下行的注釋解開:====%d{ABSOLUTE} %5p %c:%L %m%n=warn, stdout=debug4 后臺功能實現 四大功能的實現。增、刪、改、查功能的實現中大部分是通過hibernate訪問數據庫,進而對數據庫的操縱,但是某些操縱通過hibernate會得不償失,會占用大量內存,更有甚者,hibernate不能直接實現,這種情況下是通過jdbc連接訪問數據庫,并操縱的。為了便于測試,這些方法都是先新建一個測試類MyTest,再將方法改成相應的傳引用的方法封裝在一個叫HibernateOperate的java類,各種功能的實現均封裝在這個類中,在附錄里兩個類都有完整的代碼,下面將逐一介紹MyTest類中的方法。 新建測試類由于是在測試類中,所以每一個方法中都有重復的語句獲得session,所以先定義一個beforeclass 方法并注解為@BeforeClass,同時定義一個@AfterClass方法,并注解為@afterClass。在main方法 中調用beforeclass就可以了。以后每次執(zhí)行注解為@Test的方法時都會先調用beforeclass方法,結束時都會調用afterclass方法。代碼如下: @BeforeClass public static void beforeclass(){ sf = new AnnotationConfiguration().configure().buildSessionFactory()。 (sf)。 } @AfterClass public static void afterclass(){ ()。 } 存儲方法實例化一個User對象,在(1)的情況下,拿到session后,調用session的方法即可完成,具體如下: @Test public void testsave(){ User u = new User()。 (d但是)。 (5000)。 (2000)。 (1000)。 Session session = ()。//拿到當前內存中的session,如果沒有則創(chuàng)建一個 ()。//開始事物 (u)。//調用session的方法 ().mit()。//提交事務 } 查詢方法查詢全部時,用list來裝從數據庫拿到的對象,用迭代器Iterator來遍歷。如: IteratorUserusers=(from User).list().iterator()。,里面值得注意的是查詢語句from的后面不是表明,而是類名(實體類),是通過HQL拿到的,這點要與SQL語句分開。其余地方與儲存的一模一樣,不再贅述。在按工號和姓名查詢的過中和上述方法沒有重要區(qū)別,完全是SQL條件的差異,這里也省略了,詳情見附件。 查詢方法中區(qū)別較大的是在儲存員工時用到的查詢方法,因為mysql中有一特殊語句查詢最后插入的記錄,直接用hibernate的注解和擴展注解都不好用,所以我使用了hibernate的SQLQuery接口,在hibernate中使用原生態(tài)的sql,這樣使用起來就方便多了,使用方法如下:  對原生SQL查詢執(zhí)行的控制是通過SQLQuery接口進行的,()獲取這個接口。最簡單的情況下,我們可以采用以下形式:  Listcats = (select*fromcats).addEntity().list()。   這個查詢指定了:SQL查詢字符串和查詢返回的實體。所以查詢最后一條記錄的方法如下: @Test public void testQueyLast(){ Session session = ()。 ()。 String sqls = select * from user where id=(select max(id) from user)。 IteratorUser u = (sqls).addEntity(u, ).list().iterator()。 ().mit()。 while(()){ (())。 } } 數據更新方法 該課程設計中用到的數據更新有兩種,即更新某一條記錄的某一項和更新所有記錄的某一列,更新某一條記錄的某一項的時候,和前面講述的查詢基本相同,關鍵的不同的地方是 Query q = (update User u set =4555 where =3)。 ()。這里,這些通過hibernate的自帶文檔可以輕易得知。但是哎更新所以記錄的某一列時,hibernate會將這個數
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1