毕业论文
论文题目:基于VB的收据打印系统的开发
专业:
学号:
作者:
完成时间:2006年6月
目录
摘 要---------------------------------------------------------------------1
Abstract-----------------------------------------------------------------2
1.打印系统软件的详细描述---------------------------------------------3
1.1软件的打开-----------------------------------------------------------3
1.2主窗体功能的描述-----------------------------------------------------3
1.3子窗体汇票的功能以及属性---------------------------------------------3
1.4子窗体支票的功能以及属性---------------------------------------------4
1.5子窗体常用任务的功能以及属性-----------------------------------------4
1.6子窗体进帐单的功能以及属性-------------------------------------------5
1.7说明-----------------------------------------------------------------6
2.打印系统软件的开发------------------------------------------------6
2.1主窗体的创建(main.frm)-----------------------------------------------7
2.2创建子窗体汇票申请书(汇票.frm)---------------------------------------9
2.3创建子窗体支票的打印(支票.frm)---------------------------------------10
2.4创建子窗体常用任务(常用任务.frm)------------------------------------10
2.5创建子窗体进帐单(进帐单.frm)----------------------------------------11
3.公共部分的创建--------------------------------------------------------12
3.1数字转换为汉字繁体----------------------------- 5;---------------------13
3.2将窗体交打印机-------------------------------------------------------13
3.3关闭控件的编写-------------------------------------------------------13
3.4预览控件的编写-------------------------------------------------------13
#47;lable5空无宋体小五Lable6/lable6年无宋体小五
Lable7/lable7空无宋体小五
Lable8/lable8月无宋体小五
Lable9/lable9空无宋体小五
Lable10/lable10日无宋体小五
Lable11/lable11收款人无宋体小五
Lable12/lable12金额无宋体小五
Lable13/lable13用途无宋体小五
Lable14/lable14单位主管无宋体小五
Lable15/lable15会计无宋体小五
Lable16/lable16空无宋体小五
Lable17/lable17年无宋体小五
Lable18/lable18空无宋体小五
Lable19/lable19月无宋体小五
Lable20/lable20空无宋体小五
Lable21/lable21日无宋体小五
Lable22/lable22收款人无宋体小五
Lable23/lable23付款行名称无宋体小五
Lable24/lable24出票人帐号无宋体小五
Lable25/lable25人民币(大写)无宋体小五
Lable26/lable26万千百十个无宋体小五
Lable27/lable27上列款项请从我帐无宋体小五
户内支付出票人签章:
Text1/text1无空宋体10
等等等等等等等等.
Text17/text17无空宋体10
其中:
Lable5,lable7,Lable9,Lable16,lable18,Lable20的的属性BorderStyle为1-FixedSingle
Text1,text2,Text6--text10,text17的属性BorderStyle为0-None
1.5子窗体常用任务的功能以及属性
1.5.1创建文件任务.frm名称中的属性caption为常用任务.
1.5.2选择1个文本编辑框,将其Scrollbars属性值为3,Maltiline属性值为True.
1.5.3创建7个命令按钮,分别命名为打印,帮助,查找,编辑,排序,删除,加载.
1.5.4在文本框中内加两个列表框,分别命名为listbox1,listbox2,并将其值设置为列表任务,说明.
1.5.5常用任务可以运用某一数据库
文件/新建/项目windows应用程序,程序名称为sqsetver
窗体,text属性为sqlserver
添加一个oledbdataadapter控件
下一步
新建一按钮,输入sql服务器名称,选择一个数据为库
单击testconnection如果连接成功,则显示提示框,选择OK.
单击OK确定要连接的数据库.
下一步,选择查询的类型,选择类型为"SQL语句",然后单击下一步按钮.
指定SQL语句的内容.
单击"查询生成器,弹出的对话框中选择Employeet项并添加.
单击"关闭"按钮关闭"添加表"对话框,在第一个窗格中选中Employeeid.lastname,Fistname三项,则在第二窗格中显示被选中的项.
确定
单击"下一步",向导程序将自动生成对应的Sekect.insevtupdatae.delete命令与数据表对应,单击"完成".
这时窗体上将添加一个oledbdataAdapter控件和一个Oledbconnection控件.
1.5.6任务列表框中的记录显示
1)单击"文件"/"新建"/"项目"命令,新建一个windows应用程序.
2)选择窗体,设置它的text属性为"数据表".
3)单击工具箱中的"数据"按钮,从其面板中选择dataset控件,将其加到窗体上.
4)选择"非类型化数据集"选项,确定.
5)单击tablse属性右侧的按钮,单击添加,添加一个表.
1.6子窗体进帐单的功能以及属性
1.6.1进帐单
1.6.2子窗体进帐单的控件属性
默认名/设置的控件名标题(caption)文本属性(text)字体字体大小Commandbutton1/打印打印空黑体五号
Commandbutton2/预览预览空黑体五号
Commandbutton3/设置设置空黑体五号
Commandbutton4/关闭关闭空黑体五号
Lable1/lable1进帐单无黑体16
Lable2/lable2空无宋体小五
Lable3/lable3年无宋体小五
Lable4/lable4空无宋体小五
Lable5/lable5月无宋体小五
Lable6/lable6空无宋体小五
Lable7/lable7日无宋体小五
Lable8/lable8出票人无宋体小五
Lable9/lable9全称无宋体小五
Lable10/lable10帐号无宋体小五
Lable11/lable11开户行无宋体小五
Lable12/lable12收款人无宋体小五
Lable13/lable13全称无宋体小五
Lable14/lable14帐号无宋体小五
Lable15/lable15开户行无宋体小五
Lable16/lable16人民币(大写)无宋体小五
Lable17/lable17万千百十个无宋体小五
Text1/text1无空宋体10
等等等等等等等等.
Text13/text13无空宋体10
1.7说明:
1.7.1以上程序的编写借助VB6.0提供的通用对话框来实现,首先要把通用对话框添加到工具箱,选择"工程"菜单中的"部件"命令打开部件对话框,在部件对话框中选定MicrosoftCommondialogcontrol6.0,确定.然后通过用action和show方法激活而调出所需的对话框.
1.7.2主窗体与子窗体之间的调用(show),隐藏(hide).
1.7.3函数的调用:函数名(参数),可以在任何空间代码中进行.
2.打印系统软件的开发
2.1.主窗体的创建(main.frm)
2.1.1结构图一:
文件(F)编辑(E)设置(S)帮助(H)备份开票单位帐号帮助目录
恢复任务列表套打设置主页
打印设置常用任务往来业务单位注册提示
退出历史任务票据用途关于
开票:二级下拉菜单支票
汇票申请书
电汇凭证
委托收款凭证
收款单
进账单一
文件(F)编辑(E)设置(S)帮助(H)
2.1.2主窗体代码编写如下:main.frm
PrivateSubmuna4_Click()
UnloadMe
EndSub
PrivateSubmunb11_Click()
main.Hide
支票.Show
EndSub
PrivateSubmunb12_Click()
main.Hide
汇票.Show
EndSub
PrivateSubmunb16_Click()
main.Hide
进帐单.Show
EndSub
PrivateSubmunb3_Click()
main.Hide
常用任务.Show
EndSub
PrivateSub汇票c_Click()
main.Hide
汇票.Show
EndSub
PrivateSub进帐单c_Click()
main.Hide
进帐单.Show
EndSub
PrivateSub支票c_Click()
main.Hide
支票.Show
EndSub
2.2.创建子窗体汇票申请书(汇票.frm)
2.2.1.打开word文档编辑器,编辑如下窗体图形(图二)
打印系统汇票申请书
申请人
收款人
帐号或地址
帐号或地址
付款行
付款行
汇票金额
人民币
(大写)
万
千
百
十
个
备注:科目:
对方科目:
财务主管复核经办
2.2.2子窗体汇票申请书的代码编写如下:
PrivateSubForm_Load()
Label2.Caption等于Format(Now,"yyyy")
Label4.Caption等于Format(Now,"mm")
Label6.Caption等于Format(Now,"dd")
EndSub
PrivateSub打印_Click()
PrintForm
EndSub
PrivateSub关闭_Click()
main.Show
Me.Hide
EndSub
PrivateSub预览_Click()
Me.Show
EndSub
2.3.创建子窗体支票的打印(支票.frm)
2.3.1子窗体支票的打印结构图三:
银行转帐支票存根
科目:
对方科目:
单位主管:会计:
收款人
金额:
用途:
打印系统软件转帐支票
付款行名称:
收款人:出票人帐号:
人民币(大写)
万
千
百
十
个
上列款项请从
我帐户内支付
出票人签章:
2.3.2子窗体支票打印的代码编写如下:
PrivateSubCommand1_Click()
PrintForm
Printer.EndDoc
EndSub
PrivateSubCommand2_Click()
Me.Show
EndSub
PrivateSubCommand3_Click()
Me.Hide
jzhang.Show
EndSub
PrivateSubCommand5_Click()
main.Show
Me.Hide
EndSub
PrivateSubForm_Load()
Label1.FontName等于"宋体"
Label1.FontSize等于15
Label2.FontName等于"黑体"
Label2.FontSize等于20
Text3.Text等于Format(Now,"yyyy")
Text4.Text等于Format(Now,"m")
Text5.Text等于Format(Now,"dd")
Text6.Text等于Format(Now,"yyyy")
Text7.Text等于Format(Now,"m")
Text8.Text等于Format(Now,"dd")
EndSub
PrivateSubText11_Change()
Text11.Text等于Text18.Text
EndSub
PrivateSubText17_Click()
Text10.Text等于Text17.Text
Text17.FontName等于"黑体"
Text17.FontSize等于8
Text17 .Text等于ss(Text17.Text)
EndSub
PrivateSubText14_Change()
Text9.Text等于Text14.Text
EndSub
PrivateSubText18_Change()
Text11.Text等于Text18.Text
EndSub
2.4.创建子窗体常用任务(常用任务.frm)
2.4.1子窗体常用任务的结构图四:
常用任务
列表任务
说明
购原材料
管理费托收
分期每月付款到年底
每月20号前
2.4.2子窗体常用任务的代码编写:
(0)通用代码
PrivatesubDelete_click()
Lstbooks1.RemoveItem等于lstbooks1.listIndex.
Lstbooks2.RemoveItem等于lstbooks2.listIndex.
Endsub
Subcmdedit_click()
Txtitem1等于lstbooks1.text
TxtItem.setfocus
Cmdadd.enabled等于false
Cmddelete.enabled等于false
Cmdcancel.enabled等于false
Cmdedit.enabled等于true
Endsub
Subform_load()
Lstbooks1.additem"列表任务"
Lstbooks1.additem"购原材料"
Lstbooks1.additem"管理费托收"
Lstbooks2.additem"说明"
Lstbooks2.additem"分期每月付款到年底"
Lstbooks2.additem"每月20号前"
Endsub
(1)加载
Subcmdadd.click()
Lstbooks1.additemtxtitem1
txtitem1等于""
Lstbooks2.additemtxtitem2
Txtitem2等于""
Endsub
(2)打印对话框
subcmdprint_click()//打印对话框
mondialog1.action等于5
forI等于1tomondialog1.copies
printen.printtxtnoteedit.text
nextI
printer.enddoc
endsub
(3)帮助对话框
subcodDisplayhelp_click()//帮助
mondialog1.helponand等于cdutdpcontents
mondialog1.helpfile等于"C:\windows\help\ntepadhlp'
mondialog1.attion等于6
endsub
(4)排序则使用冒泡排序法(从小到大).
privatesubbutton1_click(byval.senderAs.system.objectbyval.eassystem.eventargs)
hendlesbuttow.click
dimarr(3)aosdoubule
arr(1)等于cdb(textbox1.text)
arr(2)等于cdb(textbox2.text)
arr(3)等于cdb(textbox3.text)
callbubblesort(arr1)
textbox1.text等于cstr(arr1)
textbox2.text等于cstr(arr2)
textbox3.text等于cstr(arr3)
endsub
subbubblessort(byvallist()asdouble)
Dim.first,last.tempAsDouble
DimI,j,asinteger
First等于lbound(list)'上界
Last等于ubound(list)'下界
ForI等于firsttolast-1
Forj等于I+1tolast
Iflist(i)>,list(j)Then
Temp等于list(j)
List(j)等于list(i)
List(i)等于temp
Endif
Next
Next
Endsub
(5)查找某个字符或字符串
privatesubbution1_click(byvalsenderassyetem.objectbyvaltassystem.Evenargs)
handlesbuton1.click
Dimstr1Asstring
Str1等于textbox1.text
Ifstr<,>,""then
Richtextbox1.text等于strRightpaht(richtextbox1.text.str1)
Else
Msgobx("没有查找到")
Endif
Endsub
Publicfunctionstrrightpart(byval.strenput.asstring.byval.strinputasstring)Asstring
DimtempAsstring
Dim.strinput1,strinputatrt1,I,count.chaplace.asinteger
Strinput等于len(strinput)
Strinputpart1等于lon(strinputpart)
ForI等于strinput1tostep-1
Temp等于Microsoft.visuatbasic.right(temp,strinputpart1)
Stinputpartthen
Exitfor
Count等于count+1
Next
Chrplace等于strinput1-count+1
Stvrightpart等于mid$(strinput,chrplace)
Endfunction
(6)列表显示
privatesubbutton2_click(balsenderAssystem.object,byvaleAssystemEventargs)Handlesbueton2.click
Dim.row1AsDatarow
Rdv1等于datatable1.text
Rdv1("列表任务")等于textbox1.text
Rdv1("说明")等于cint(textbox2.text)
Datatable1.rows.add(row1)
Datatable1.acceptchangex()
Endsub
private.subbutton1_click(byvalsenderAssyetem.object,byvaleAssystem.EventArgs,HardlesButton1.click
Oledbmand1.connectioniopen()//打开链接
Distr.Assystem.data.oledb.oledbdatareader等于oledbcmmand,extcutereader
Whilestr.read//读取数据
Richtextboxlitext等于richtextbox1.text
Endwhile
Str.closw()
Oledbcvmmand1.connection,close()
Endsub
2.5创建子窗体进帐单(进帐单.frm)
2.5.1进帐单的结构图五:
进帐单
出票人
全称
收款人
全称
帐号
帐号
开户行
开户行
人民币
(大写)
十万
万
千
百
十
个
2.5.2进帐单代码的编写:
PrivateSubCommand1_Click()
PrintForm
EndSub
PrivateSubCommand2_Click()
Me.Show
Me.MaxButton等于True
EndSub
PrivateSubCommand5_Click()
main.Show
Me.Hide
EndSub
PrivateSubForm_Load()
Label1.FontName等于"黑体"
Label1.FontSize等于15
Text3.Text等于Format(Now,"yyyy")
Text4.Text等于Format(Now,"m")
Text5.Text等于Format(Now,"dd")
Label10.FontName等于"黑体"
Label10.FontSize等于20
Text1.Text等于Format(Now,"yyyy")
Text2.Text等于Format(Now,"m")
Text6.Text等于Format(Now,"dd")
EndSub
PrivateSubText10_Change()
Text14.Text等于Text10.Text
EndSub
PrivateSubText11_Change()
Text12.Text等于Text11.Text
EndSub
PrivateSubText15_Change()
Text20.Text等于Text15.Text
EndSub
PrivateSubText16_Change()
Text16.FontName等于"黑体"
Text16.FontSize等于14
EndSub
PrivateSubText17_Click()
Text17.FontName等于"宋体"
Text17.FontSize等于14
Text17.Text等于ss(Text17.Text)
Text16.Text等于Text17.Text
EndSub
PrivateSubText24_Change()
Text21.Text等于Text24.Text
EndSub
PrivateSubText7_Change()
Text13.Text等于Text7.Text
EndSub
PrivateSubText8_Change()
Text18.Text等于Text8.Text
EndSub
PrivateSubText9_Change()
Text19.Text等于Text9.Text
EndSub
3.公共部分的创建
3.1.数字转换成汉字繁体的代码编写:
PrivateFunctionss(shuAsString)AsString
DimiAsInteger
DimintlenAsInteger
DimstrchAsString
DimstrengAsString
DimstrtempchAsString
Dimstrseqch1AsString
Dimstrseqch2AsString
Dimstreng2chAsString
streng 2ch等于"零壹贰叁肆伍陆柒捌玖"
strseqch1等于"拾佰仟拾佰仟拾佰仟拾佰仟"
strseqch2等于"万亿兆"
streng等于shu
intlen等于Len(streng)
Fori等于1Tointlen
strtempch等于Mid(streng2ch,Val(Mid(streng,i,1))+1,1)
Ifstrtempch等于"零"Andintlen<,>,1Then
IfMid(streng,i+1,1)等于"0"Or(intlen-i+1)Mod4等于1Then
strtempch等于""
EndIf
Else
strtempch等于strtempch&,Trim(Mid(strseqch1,intlen-i+1,1))
EndIf
If(intlen-i+1)Mod4等于1Then
strtempch等于strtempch&,Mid(strseqch2,(intlen-i+1)\4+1,1)
Ifi>,3Then
IfMid(streng,i-3,4)等于"0000"Then
strtempch等于strtempch等于Left(strtempch,Len(strtempch)-1)
EndIf
EndIf
EndIf
strch等于strch&,Trim(strtempch)
Next
ss等于strch
EndFunction
3.2将窗体交打印机
PrivateSubCommand1_Click()
PrintForm
Printer.EndDoc
EndSub
3.3关闭控件的编写
PrivateSubCommand5_Click()
main.Show
Me.Hide
EndSub
3.4预览控件的编写
PrivateSubCommand2_Click()
Me.Show
EndSub
结论:
经过几个月的设计和开发,收据打印系统的开发基本开发完毕.经测试和试运行,其功能基本符合需求.能实现,转账,汇票申请书,收款单,进账单等主要功能体现在,
同样系统还存在许多的不足.由于时间有限,还有交叉预订(公共课预订和专业课预订模块)和日志管理,数据备份没有完全实现.日志管理的函数部分已经实现,就是需要记录日志的页面还没有添加调用函数的代码,交叉预订的处理模式还值得深入研究.
致谢
在本次毕业设计中,我从XX老师身上学到了很多东西,无论在理论上还是在实践中,都给了我很大的帮助,尤其是指导我进行系统的需求分析,学习开发平台,技术和画数据流图,ER图和流程图,使我得到不少的提高,并且在百忙之中阅读我的论文提纲和论文,而且给了我很多有建设性的意见和建议.在此,感谢XX老师耐心的指导.也感谢与我同组的同学,谢谢他们给我的建议和帮助.
[参考文献]
[1]李廷文,专家门诊-----VisualBasic开发答疑300问.[北京].人民邮电出版社.2003
[2]龚沛曾,陆慰民,杨志强.VisualBasic程序设计教程(6.0版).[北京]高等教育出版社.2000
[3]胡海璐.VisualBasic.控件应用实例.[北京].电子工业出版社.2003
[4]蒋学锋,钟诚,许鸿川.软件工程.[重庆].重庆大学出版社.2002
[5]李迎春,朱诗兵.VisualBasic6.0网络编程.[北京].北京希望电子出版社.2001
[6]康博创作室,张红军,王虹.Visual.studio6.0应用系列-----VisualBasic6.0中文版高级应用与开发指南.[北京].人民邮电出版社.199