【本期導讀】完成病人資料登記模塊
          五一前真是太忙了,沒空研究這個系統,不過零零碎碎地有做一些,但上節計劃要做的字典維護模塊遇到一些技術問題,暫且放后處理,這周主要把
          病人資料登記模塊的核心業務做好了,截圖如下:
          病人資料登記.jpg
          字典維護模塊遇到的問題有:
          1.怎么用grid完成增加,更新及刪除記錄
          2.如何做成一個通用的模板應用在所有字典的維護上
          【下期提示】完成病人資料修改模塊
          posted @ 2006-04-28 13:41 水晶魚 閱讀(231) | 評論 (0)編輯 收藏
           
          【本期導讀】 主界面開發,確定基本模塊
          沉寂一整周了,今天終于把主界面做好了。
          最近7天特別忙,趕上公司項目發布最新版本,一大堆的測試任務不敢懈怠,當學習與工作沖突時還是應當以工作為重,學習暫放一邊,所以這次學習比計劃多花了幾天,不過雖然內容很少,但也遇到了幾個難題:
          1.如何給窗體加上一個背景圖片?
          2.如何使HtmlWindow內的鏈接正常打開?
          我想在窗體上顯示一張背景圖片,于是翻看wxPthon 的API文檔,想找找有沒有像VB里的frame的picture屬性,但出乎意料的時,wx.Window中并沒有這種屬性,雖然可以在此之上再放一個圖片控件,來達到同樣的效果,正在發愁,于是拿起《wxPython in Action 》(下文簡稱為PA)這本書快速探索一遍,終于找到辦法了,原來要實現這樣的效果,需要建立定制,參照里面的辦法寫了一個可以配置背景圖片的window類:
          ?1import?wx
          ?2
          ?3class?ImageBackGroundWindow(wx.Window):
          ?4????def?__init__(self,?parent,?image):
          ?5????????wx.Window.__init__(self,?parent)
          ?6????????self.photo?=?image.ConvertToBitmap()
          ?7????????self.positions?=?[(0,0)]
          ?8????????self.Bind(wx.EVT_PAINT,?self.OnPaint)
          ?9????def?OnPaint(self,?evt):
          10????????dc?=?wx.PaintDC(self)
          11????????brush?=?wx.Brush("sky?blue")
          12????????dc.SetBackground(brush)
          13????????dc.Clear()
          14????????for?x,y?in?self.positions:
          15????????????dc.DrawBitmap(self.photo,?x,?y,?True)
          主界面剩余的難題就是怎么組織代碼,UI編程最麻煩的就是這個了,再加上目前也沒搜到什么好的為Python量身定做的UI設計工具,只能自己一行一行地寫了,但這時就需要注意組織代碼了,不然一個復雜的界面寫出來都是一大堆難看懂的鎖碎代碼,我只是一個測試員,對開發接觸才剛起步,對這方面的意識暫時也沒有什么好的想法,但在《PA》一書中有講到怎么寫出一個漂亮簡潔的wxPthon界面代碼,有時間一定要好好研究一下。
          經過幾天的努力,主界面基本框架算是弄好了,剩下的就是各個業務模板的界面及具體業務實現了。我首先挑最容易的來處理,先做關于對話框,不過在做這個窗體時也遇到一個問題,即上述的第2個問題,后來發現是因為在htmlWindow類中少了這個方法:
          1def?OnLinkClicked(self,?linkinfo):
          2????????????import?webbrowser
          3????????????webbrowser.open(linkinfo.GetHref(),?1)

          主界面和關于窗體截圖如下:
          main.jpgabout.jpg
          【下期提示】 完成字典管理模塊
          posted @ 2006-04-18 19:27 水晶魚 閱讀(382) | 評論 (0)編輯 收藏
           
          【本期導讀】使用wxPthon開發界面,完成登錄模塊
          wxPthon是一個非常強大的界面制作模塊,下載地址是http://www.wxpython.org/。wxPython安裝包中附送了大量實例代碼,每個界面控件的使用方法都有介紹,同時還可以去查看在線api文檔http://www.wxpython.org/docs/api/wx-module.html,這個文檔的風格很像javadoc,習慣了java api 文檔的人一看就清楚,如果想系統地了解一下wyPython則可以下載官方推薦的《wxPython in Action 》一書。
          粗略瀏覽一下wyPtyhon Demo,便立即開始嘗試編寫ClinicOS的登錄模塊,首先確認一下界面表現力和功能:
          界面元素:
          1.一個登錄窗體
          2.帳號標簽及文本框,密碼標簽及文本框
          3.確定和取消按鈕
          功能:
          1.單擊『確定』按鈕時能驗證輸入的帳號和密碼是否正確,如果正確則顯示Clinic主界面(TODO,暫時讓它顯示一個成功消息框),否則提示“帳號或密碼錯誤”。
          2.單擊『取消』按鈕退出登錄模塊
          經過一番努力,終于把界面畫好了,暫時丑了點,待以后給它美容。
          登錄.jpg
          不過畫這點界面很不方便,得有點耐心,特別是控件的位置要全手工地調坐標,這對于缺乏方向和位置感的我來說更是痛苦,想找一個可以做界面用的IDE for python,卻始終沒找到,沒辦法,只好將痛苦忍受到底。
          以下是完整的代碼:
          其中53行中使用的utils.encrypt這個方法,是自己寫的一個md5加密方法,這在python里非常簡單,只需要3句:
          1.導入md5和base64:import md5,base64
          2.創建一個md5對象實例: md5.new("字符串").digest()
          3.將生成的md5串做個base64轉換:base64.b64encode(md5.new("字符串").digest()這個返回的就是加密字符串。

          【下期提示】逐步深入學習wxPython, 制作ClinicOS主界面
          posted @ 2006-04-11 14:11 水晶魚 閱讀(570) | 評論 (1)編輯 收藏
           
          【本期導讀】使用PySQLite連接SQLite遇到的問題與解決方法
          Python要操作SQLite可以使用Pyslqite模塊,最新的模塊可以去www.pysqlite.org下載,當初下載的時候順便簡單看了看usage-guide(http://initd.org/pub/software/pysqlite/doc/usage-guide.html),覺得挺簡單的,沒有仔細研究便開始考慮編寫,我考慮把sqlite的訪問寫成一個類,在類的初始化和銷毀時候分別建立連接和關閉連接,然后再添加一個執行sql語句的方法,由于傳入的sql可能沒有返回值也可能有返回值,而返回的值可能是單列值也可能是多條記錄,基于這種復雜情況,就讓這個方法返回一個列表,管它返回什么,通通加到列表中然后返回,我覺得在這一點上,python比其它語言方便多了。下面是這個類:
          #!/usr/bin/python
          #
          ?-*-?coding:?UTF-8?-*-
          #
          ?$Id:?dbconnect.py?8?2006-04-08?14:21:32Z?Administrator?$
          import?ConfigParser
          import?locale
          from?pysqlite2?import?dbapi2?as?sqlite

          class?SqliteConnection:
          ????
          ????
          def?__init__(self,dbname):
          ????????
          """
          ????????初始化數據庫連接
          ?????????
          """????????
          ????????self.conn?
          =?sqlite.connect(dbname)
          ????
          def?execute(self,sql):
          ????????
          """
          ????????執行傳入的sql語句,返回一個元組或者None
          ????????
          """
          ????????self.cu
          =self.conn.cursor()
          ????????self.cu.execute(sql)
          ????????self.conn.commit()

          ????????self.rows
          =[]
          ????????
          for?self.row?in?self.cu:
          ????????????self.rows.append(self.row)
          ????????
          return?self.rows
          ????
          def?__del__(self):
          ????????
          """關閉數據庫連接"""
          ????????self.conn.close()
          def?test():
          ????
          """測試方法"""
          ????config
          =ConfigParser.ConfigParser()
          ????config.read(
          'config')
          ????dbname
          =config.get('SQLiteDB','filename')
          ????
          ????test
          =?SqliteConnection(":memory:")
          ????test.execute(
          "create?table?person(lastname,?firstname)")
          ????test.execute(
          "insert?into?person(lastname,firstname)?values('三','張')")
          ????test.execute(
          "insert?into?person(lastname,firstname)?values('四','李')")
          if?__name__=='__main__':
          ????test()
          之前簡單試過一下訪問sqlite一切OK,可是當然運行一下這個類時,結果居然出錯了:
          Traceback (most recent call last):
          ? File "D:\source\dbconnect.py", line 49, in
          ?
          ??? test()
          ? File "D:\source\dbconnect.py", line 42, in
          test
          ??? temp=test.execute("select * from person")
          ? File "D:\source\dbconnect.py", line 22, in
          execute
          ??? self.cu.execute(sql)
          pysqlite2.dbapi2.OperationalError: Could not decode to UTF-8 column firstname wi
          th text 張
          既然出錯了,那么大概是這幾種情況:
          1.pysqlite不支持中文
          2.sqlite不支持中文
          3.代碼出了問題
          出錯之后,經過測試,排除第1和2兩種可能,
          于是我仔細簡單代碼,可還是沒有找到出錯原因,于是想查看pysqlite源代碼,可是他的代碼是封閉在一個pyd的二進制文件中的,沒辦法查看,于是去下載pysqlite的源代碼,拿到源代碼后在pysqlite-2.2.0\src\cursor.c這個代碼中找到了OperationalError錯誤類型,知道原來是字符轉換時出這個錯。于是我就試試將返回值轉為可是我弄了很久都沒有弄好,在網上google一下也沒有找到這方面的資料,找了一天了也沒有找到解決的辦法,無奈之下險些泄氣。雖然之前看過pysqlite文檔,但看得不仔細,只是簡單瀏覽,當時只是想這東西應該挺簡單的,例子也夠詳細就沒有花太多時間去看文檔,為得也是節省時間。現在遇到問題了,還是老老實實仔細看看pysqlite文檔吧。果然不枉我滴著眼藥水把它看完,終于找到原因了,原來pysqlite中有個con.text_factory可以解決這個問題,這個參數默認值是unicode ,現在只需要把它設置成str就可以了:
          至此總算解決了這個困擾我一天的問題了。
          【下期提示】開始學習wxPython,體驗一下它的強大界面表現力。
          posted @ 2006-04-09 22:13 水晶魚 閱讀(922) | 評論 (2)編輯 收藏
           
          【本期導讀】設計數據庫結構
          這兩天簡單瀏覽一下SQLite的相關文檔,發現這個東東確實還不錯,至少比Access好多了,能自動根據數據來分配相應空間,不會像Access那樣用著用著就變肥了。
          作為輕量級的本地數據庫,我所期望的功能都具備了:
          1.能否保存復雜數據,支持Blob。
          2.支持自動編號。但前提是將主鍵一定要是Integer類型。能自動根據當前記錄最大值向下繼續編號。
          3.支持標準SQL語句。對數據類型檢查不嚴格,能自動將數據類型轉成SQLite標準數據類型,這一點在腳本移植很管用,能將其它數據庫管理系統的腳本直接導入,但要注意避免使用SQLite暫不支持的命令。
          4.支持觸發器。這個功能不錯。什么時候支持存儲過程就更好了,^_^
          對SQLite了解還不是很深入,邊用邊學吧。
          開始著手建數據庫,搜索了一下數據庫模型工具,以前沒有用過什么這方面的工具,隨便搜到一個CASEStudio。用了一下,感覺功能還不錯,支持很多數據庫,能自動生成數據庫腳本,可惜不支持SQLite數據庫引擎。胡亂畫了一通,終于把ClinicOS數據庫E-R圖畫好了,
          ClinicDB.png
          也順便生成了數據庫腳本,經過零零散散的近5個小時的努力,數據庫結構總算搭建好了。
          【下期提示】準備學習Python了,先學習PySQLite,解決編寫數據庫讀寫問題
          posted @ 2006-04-07 21:09 水晶魚 閱讀(1458) | 評論 (1)編輯 收藏
           
          今天晚上去外面吃飯,剛吃完飯回來,坐車坐得頭暈暈的,回到電腦起,一看有個網友傳了一個文件過來,讓我接收,一看文件名"廣告.pif",問他是什么東東,說是他做的廣告圖片,心想還有圖片后綴名為"pif"的?心感怪異,不過我還是好奇地接了過來,看他到處想耍什么花招,保存到桌面,一看ICON卻是一個dos快捷方式,于是用記事本打開看看,發現開頭有"This program must be run under Win32",然后結尾處有"KERNEL32.DLL advapi32.dll oleaut32.dll shell32.dll shlwapi.dll user32.dll?? LoadLibraryA? GetProcAddress? ExitProcess?? RegCloseKey?? SysFreeString?? ShellExecuteA?? PathFileExistsA?? CharNextA?? "
          原來是一個Dos程序病毒,嘿嘿,小樣,還想黑我!趕緊對它來一個shift+delete.
          【以下為模擬截圖】
          ===========================================
          病毒演示01.JPG病毒演示02.jpg病毒演示03.jpg
          水晶魚 21:24:46
          呵呵,這是病毒
          ?
          水晶魚 21:24:52
          很讓你失望,害不到我
          ?
          芥蒂&~ 21:26:44
          ?小樣算你小命好
          水晶魚 21:25:49
          切,這種小case 拿去欺負那些不懂電腦的吧?
          ?
          芥蒂&~ 21:27:17
          是嗎,那你來點高級的?
          ?
          水晶魚 21:26:30
          賺錢要緊,沒空害人 ,年輕人,做人要厚道
          ?
          芥蒂&~ 21:28:04
          偶以為你是傻B所以發給你瞧瞧,,偶也不是這個號號的主人
          水晶魚 21:27:12

          ?
          芥蒂&~ 21:28:38
          ?要不要合作 ?
          水晶魚 21:27:33

          芥蒂&~ 21:28:43
          ?在打電話?
          水晶魚 21:27:39
          沒空合作,珊瑚蟲告訴我你的IP在揚州
          ,正在打電話通知揚州110。

          消息一出,此人已不在線......
          posted @ 2006-04-06 23:26 水晶魚 閱讀(620) | 評論 (3)編輯 收藏
           

          【本期導讀】 確定ClinicOS功能
          工作任務很重,沒什么時間學習,很不容易擠出一點時間來研究我的學習任務。
          這一節我把題目叫作《需求分析》實在......慚愧。沒有學過軟件工程,更沒有做過需求分析,只是在憑借自己的想當然來羅列功能,打算有空的時候去找本好書好好學學軟件工程。接下來還是羅列一下我的想法吧,我覺得這樣的一個小系統應該包括以下功能:
          一.病人病史檔案管理
          ?1.登記病人基本信息
          ?2.登記病人本次病歷
          ?3.登記本次病人癥狀、醫生處方、所用治療藥品
          ?4.打印病歷卡
          ?5.查詢病史檔案
          二.藥品管理
          ?1.藥品入庫登記
          ?2.入庫審核
          ?3.藥品出庫登記,包括報廢出庫及領藥出庫
          ?4.出庫審核
          ?5.物品狀態提醒:過期藥品警戒,庫存數量警戒
          ?6.入庫查詢及統計
          ?7.庫存查詢及統計
          ?8.出庫查詢及統計
          ?9.報廢藥品及統計
          三.財務結算
          ?1.病人收費登記:診斷費+藥品費
          ?2.藥品采購支出登記
          ?3.每日收支報表
          ?4.每月收支情況報表
          ?5.年度收支統計分析表

          【下期提示】要學習的東西很多,下來我想還是從簡單入手,先學Sqlite,不知道有沒有什么好用的用來寫Sqlite腳本的客戶端工具?

          posted @ 2006-04-05 17:01 水晶魚 閱讀(209) | 評論 (0)編輯 收藏
           

          雖然單元測試用例已經全部寫完了,但有一個問題一直困擾著我,在寫Junit(我這里用的是spring的Junit框架:AbstractTransactionalSpringContextTests)測試用例時,想在BTestCase類中調用ATestCase中的某個public 的方法a,但是又不能把ATestCase中的a方法提出到另一個類中,因為這個a方法也必須繼承AbstractTransactionalSpringContextTests類,
          例如:
          測試基類MyTest
          ///import 略
          public class MyTest extends AbstractTransactionalSpringContextTests {
          ???????????? //略
          }

          測試類A
          ///import 略
          public class A extends MyTest {
          ????????????public void a() {
          ??????????????????//略,注意,此處有一些需要繼承MyTest?才能訪問的方法
          ???????????????????
          ????????????}
          ????????????public void testA(){
          ???????????????????//略
          ????????????}
          }

          測試類B
          ///import 略
          public class?B extends MyTest {
          ????????????
          ????????????public void testAFromClassA(){
          ????????????????????A aFromClassA=new A();
          ????????????????????aFromClassA.a();
          ????????????????????aFromClassA.testA();

          ???????????????????//略
          ????????????}
          }
          B類肯定會出錯的,這里只是描述我想達到的效果,不知道哪位大位知道處理這類問題

          posted @ 2006-04-04 22:30 水晶魚 閱讀(659) | 評論 (2)編輯 收藏
           

          【本期導讀】 實例學 Python
          去年大約11月一位牛人同事鼓勵我去掌握一門腳本語言并推薦使用Python,
          我是從那時開始接觸它的,雖然一度用它解決不少文本處理的小問題,但總覺得學習得不刻深入,
          所以想系統地學習一下Python,并決定通過一個綜合的實例dive into python。
          學習背景說完了,該談正題了,我決定做一個診所管理系統ClinicOS,呵呵,這種軟件滿大街都是,
          但是像我這么無聊,決定用Python實現的跨平臺的版本應該還沒出現吧?題目定了,開始著手開發吧,
          首先準備工具,除了必要的Python2.4外還需要準備以下幾個模塊:
          1.wxPthon2.6。用于做界面。
          2.py2exe0.6.3。用它打包,把python程序轉成exe。
          3.pySqlite2.1.3。由于數據庫選擇用sqlite,所以選它作為sqlite開發接口。
          4.Sqlite。用作數據存儲。
          看來要學的東西很多,不過在開始開發前,先給這個學習定一個deadline吧,爭取4月23日
          之前提交一個可用版本。
          【下期提示】接下來要確定一下軟件需求了,不知道各位路過的大俠能否提供一些建議?或者期望這個小軟件提供什么功能?

          posted @ 2006-04-04 15:09 水晶魚 閱讀(242) | 評論 (0)編輯 收藏
           

          三年以來,做筆記一直都用筆和紙,所以沒有打算過要用Blog,
          最近一個月莫名其妙不見了三支筆,筆記本(非電子版)也用光了,
          嘿嘿,找不到筆和紙,只好寫blog了......

          posted @ 2006-04-03 22:56 水晶魚 閱讀(215) | 評論 (0)編輯 收藏
          僅列出標題
          共3頁: 上一頁 1 2 3 
           
          主站蜘蛛池模板: 花莲县| 津南区| 台中县| 图木舒克市| 新田县| 资中县| 定兴县| 龙江县| 长岭县| 隆尧县| 德钦县| 库尔勒市| 思茅市| 永兴县| 肥西县| 故城县| 牟定县| 肇源县| 读书| 海阳市| 麦盖提县| 临清市| 行唐县| 开平市| 塔城市| 定陶县| 康定县| 时尚| 吴桥县| 东海县| 浮梁县| 名山县| 合水县| 泊头市| 抚远县| 襄汾县| 伊通| 铜梁县| 阳谷县| 武乡县| 台北市|