
1前言
票據(jù)管理是指公司財務(wù)報銷工作中涉及的各種票據(jù)的日常管理,常見的票據(jù)有差旅費報銷單、費用報銷單、記賬憑證、現(xiàn)金支票以及進賬單等。這些票據(jù)的管理是公司財務(wù)工作中最為常見的工作,同時也是很煩瑣的工作。在工作量越來越大,而又不斷要求提高工作效率的實際工作中,傳統(tǒng)的手工票據(jù)管理工作方式已經(jīng)遠遠不能適應(yīng)工作需要。采用軟件系統(tǒng)來實現(xiàn)輔助辦公是高效率完成這項工作的有效方法之一,雖然通用的票據(jù)管理系統(tǒng)很多,但是都和實際工作存在一定差距,使用不便。因此開發(fā)一個適合中小型企業(yè)使用的票據(jù)管理系統(tǒng)是一個非常有實際意義的工作。本文針對現(xiàn)實中中小型企業(yè)財務(wù)票據(jù)管理的現(xiàn)狀,從實用角度介紹了一個使用Visual Basic 6.0開發(fā)的基于SQL Server 2008數(shù)據(jù)庫的票據(jù)打印軟件。
2軟件的模塊結(jié)構(gòu)
軟件的模塊結(jié)構(gòu)如圖1所示。
模塊是根據(jù)功能來劃分的,在用戶管理模塊中,系統(tǒng)管理員可以增加新的用戶名和密碼,每個用戶登錄后可以修改自己的密碼。在基本信息設(shè)置模塊中,系統(tǒng)管理員可以把本公司經(jīng)常來往的進賬單的出票人和收票人提前設(shè)置好,供后面的業(yè)務(wù)反復(fù)調(diào)用。在后面的各種票據(jù)中功能基本是相似的,本文以工商銀行的進賬單為例(見圖2):
對于出票人和收款人,將鼠標放在其全稱后面的空行處雙擊,就出現(xiàn)如圖3所示的界面。
如果挑選長城物資貿(mào)易有限責(zé)任公司,就雙擊該行,圖3的界面就關(guān)閉,回到圖2的界面,此時出票人的全稱和賬號就自動調(diào)用過來了;對于金額,只需要在小寫的文本框中寫數(shù)字,其大寫金額就自動生成出來,這樣用戶非常方便,可以降低原來手工書寫的錯誤率。
當(dāng)這些內(nèi)容填寫好以后,單擊保存,再單擊打印就可以定位打印到事先放在票據(jù)打印機中的進賬單上面,既快捷又準確,效果非常好。
3兩個關(guān)鍵技術(shù)
這個實用的票據(jù)打印軟件,有兩個技術(shù)需要解決:一是小寫轉(zhuǎn)大寫的算法,二是定位打印技術(shù)。
3 .1小寫轉(zhuǎn)大寫的算法SmallToLarge
Step 1設(shè)置變量并對其初始化;
Str(10):大寫金額數(shù)組,Str(0) = "零",Str(1) = "壹",……,Str(9) = "玖";
China:金額單位,初始化為"分角元拾佰仟萬拾佰仟億";
lnP:金額的長度;
Prc:金額的字符串表示;
Tmp:金額大寫的逆序;
Dx:單位,"分","角","元","拾",……,"億";
Xx:金額大寫,"零","壹","貳",……,"玖";
Zhen:判斷金額是否為整。
Step 2如果金額只有"角",去掉小數(shù)點并在"分"上加"0"即Prc = Replace(Prc, ".", "") + "0";如果金額只有"分",去掉小數(shù)點即Prc = Replace(Prc, ".", "");如果金額有"角"和"分",去掉小數(shù)點即Prc = Replace(Prc, ".", "");如果金額是整數(shù),則在"角分"位置上加"00"。
Step 3將金額以大寫方式逆序顯示,Tmp = Str(Mid(Prc, i, 1)) & Tmp。
Step 4將金額與單位相對應(yīng):取數(shù)字的大寫即Xx = Mid(Tmp, i, 1);取對應(yīng)單位即Dx = Mid(China, i, 1);然后將數(shù)字的大寫與單位結(jié)合,如下:
(1)如果大寫數(shù)字不為"零",將大寫數(shù)字與單位結(jié)合即ZDX = Xx & Dx & ZDX;
(2)如果大寫數(shù)字為"零":若在"元"位置,則將單位"元"補上即ZDX = Dx & ZDX;若在"萬"位置,則將單位"萬"補上即ZDX = Dx & ZDX;若"角不為0,元為0,且高位有不為0的" 或者 "千不為0,萬為0且高位有不為0的"則將數(shù)字"零"補上即ZDX = "零" & ZDX。
Step 5如果金額為整數(shù)(沒有"角"和"分"),則在金額后加上"整"即ZDX = ZDX + "整";如果金額中含有"零元"或者"零萬",則分別替換為"元"、"萬",即ZDX = Replace(ZDX, "零元", "元")和ZDX = Replace(ZDX, "零萬", "萬")。
Step 6如果只有"分"且不為0,則只要金額和"分",ZDX = Right(ZDX, Len(ZDX) - 1)。
Step 7如果有"角"沒有"分",則在金額后加上"整"即ZDX = ZDX & "整"。
Step 8如果"角"不為0,"元"為0,且高位有不為0,則在"元"后面加上"零",ZDX = Replace(ZDX, "元", "元零")。
Step 9將大寫金額顯示在金額欄的表格中,結(jié)束。
3.2 定位打印技術(shù)
為了打印信息定位準確,每一類票據(jù)采用兩個窗體來進行定位,如下:
一個窗體(Form 1)做成票據(jù)的樣式,不需打印的信息直接顯示出來,需要打印的信息填寫到文本框TextBox控件中;
另外一個窗體(Form 2)設(shè)置參考位置作為打印機的打印初始位置,該窗體只使用文本框TextBox控件,對這些文本框控件的位置進行不斷調(diào)整與測試,使其與Form 1窗體中相關(guān)的TextBox控件位置相對應(yīng),其他不需打印的位置上不使用控件;
當(dāng)用戶單擊Form 1窗體中“打印”按鈕的時候, 將Form 1中需要打印的文本框TextBox控件信息傳遞給Form 2的對應(yīng)文本框,然后使用Form 2窗體的 PrintForm 方法打印窗體,即可將指定的內(nèi)容準確地定位到要打印的位置,并且打印出來。
4 軟件實施后的效果
(1)對于票據(jù)上應(yīng)有的金額,只需要在小寫的文本框中寫數(shù)字,其大寫金額就自動生成出來,這樣用戶非常方便,可以降低原來手工書寫的錯誤率,而且節(jié)省時間,提高了工作效率。
(2)打印信息定位準確。當(dāng)打印內(nèi)容填寫好以后,就可以打印到事先放在票據(jù)打印機中的進賬單上面,既快捷又準確,票據(jù)單看上去既清晰又整潔,效果非常好。
(3)減輕了工作人員的勞動強度。在沒有使用打印軟件之前,工作人員要花很大的精力來填寫各種紙質(zhì)票據(jù)材料,在操作過程中重復(fù)填寫信息,工作非??菰锖托量唷T摯蛴≤浖O大地減輕了他們填寫票據(jù)資料的工作量,為企業(yè)節(jié)省了大量資金和時間。
5結(jié)束語
本軟件已經(jīng)在安徽工業(yè)大學(xué)財務(wù)處等單位使用,并已在中國版權(quán)局軟件著作權(quán)登記,具有很好的推廣價值。
主要參考文獻
[1]李德文.通用報表打印程序的設(shè)計與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,1995(2):27-30.
[2] 孫家廣,胡事民.計算機圖形學(xué)基礎(chǔ)教程[J].北京:清華大學(xué)出版社,2005:31-39.
[3][美]R F岡薩雷斯,等.?dāng)?shù)字圖像處理[M].第2版.阮秋琦,阮宇智,譯.北京:電子工業(yè)出版社,2005.
[4]于英民,等.計算機接口技術(shù)[M]. 北京:電子工業(yè)出版社,2004.
[5]羅鴻.ERP原理·設(shè)計·實施[M]. 北京:電子工業(yè)出版社,2003:12-22.
[6]劉炳文.Visual Basic程序設(shè)計例題匯編[M].北京:清華大學(xué)出版社,2006:97-119.
[7]劉天惠.Visual Basic程序設(shè)計教程[M].北京:清華大學(xué)出版社,2006:29-78.