VB课程设计诗词欣赏电子书Word文档下载推荐.docx
《VB课程设计诗词欣赏电子书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VB课程设计诗词欣赏电子书Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
二,设计要求:
(1)设计类似于所示的程序界面。
程序启动后,“目录”、“内容”、和“注释与题解”中均为空(不显示任何内容)。
单击“打开”按钮
,显示如图所示的“打开”对话框,此对话框只显示扩展名为“.cnt”的目录文件名。
从“打开”对话框中选择一个目录文件(如“毛泽东诗词.cnt”),单击“打开”后,程序打开此目录文件和与其同名但扩展名为“.text”的正文文件,显示电子书的目录与内容。
(2)打开诗词文件之后(如图),“目录”列表中显示诗词的目录,点击其中一条,则“内容”框和“注释与题解”框中分别显示此诗词的正文和注释与题解等内容。
(3)单击按钮
和
,程序自动显示目录中前一首或后一首诗词的内容。
(4)打开新的文件后,旧的文件自动关闭。
三,难点提示:
(1)本题提供了“毛泽东诗词”、“李白诗”和“杜甫诗”等3个电子书文件供读者调试程序使用。
也可以按规定格式自制诗词文件由本程序显示。
(2)一个电子书由两个文件保存,住文件名相同,扩展名分别为“.cnt”和“.text”。
例如毛泽东诗词是由“毛泽东诗词.cnt”和“毛泽东诗词.text”共同定义的,二者均为文本文件。
前者为目录文件,其中每一行是诗词的题目(如图所示)。
后者为正文文件,保存诗词的正文和注释与题解等内容。
同一个电子书的目录文件和正文文件的内容和顺序应相互对应。
(3)正文文件中保存了一组诗词的详细信息。
如图所示,存储格式为:
*
正文1
正文1的注释、题解、点评等内容
*正文2
正文2的注释、题解、点评等内容
……
正文n
正文n的注释、题解、点评等内容
可见,正文文件中,每首诗词总是有一个星号“*”引导,诗词的正文和注释、题解等内容之间也由一个星号“*”隔开。
如果一个电子书中有n首诗词,则其中会有2*n个星号“*”。
所以,正确地判断星号的位置是正确显示诗词内容的关键。
(4)本题应使用“公共对话框”控件(MicrosoftCommonDialogControl)来显示
(5)如图所示的“打开”对话框。
此控件的用法,请参阅有关ActiveX控件使用的书籍。
正文文件的保存格式
四,具体设计内容:
1,程序用到的主要控件:
窗体(form)、文本框两个(textbox)、框架三个(frame)、列表框一个(listbox)、命令按钮三个(commandbutton)
2,程序用到的主要控件属性,过程:
(1),窗体设置:
Caption属性命名为:
“诗词欣赏”;
Icon(图标属性)设置图标为:
“
”。
(2),列表框的应用:
用以显示打开的诗词名,其中style属性设为“0”
(3),文本框的应用:
用以显示与“*.cnt”相对应的“*.txt”文件,
其中multiline属性设为“true”,scrollbars属性设为“2”,Text属性为:
“空”
(4),Open命令按钮:
Style设为“1”,Picture设为“
”;
Up命令按钮:
Down命令按钮:
截图如下:
(6),框架分别命名为:
“目录”,“内容”,“注释与题解”。
截图如下:
整体界面截图如下:
五,具体程序代码及注释如下:
1,PublicstrNameAsString'
公共变量strName用于记录文件路径
2,PrivateSubCommondUp_Click()
IfList1.Text="
"
ThenExitSub'
若List1.Text为空字符则退出
Text1.Text="
'
将两文本框设为空字符
Text2.Text="
List1.ListIndex=List1.ListIndex-1'
选种条目号减一
IfList1.ListIndex<
0ThenList1.ListIndex=List1.ListCount-1
条目处于第一个时循坏到最后一个
EndSub
3,PrivateSubCommondDown_Click()
Dimint1AsInteger'
中间变量
int1=List1.ListIndex'
赋值
int1=int1+1'
变量加一
Ifint1>
List1.ListCount-1Thenint1=0
条目处于最后一个时循坏到第一个
List1.ListIndex=int1'
再赋值给List1.ListIndex激发List1_Click事件
4,PrivateSubCmdOpen_Click()
DimstrLAsString'
用于读取目录
CommonDialog1.Filter="
目录文件(*.cnt)|*.cnt"
设定文件类型
CommonDialog1.ShowOpen'
显示对话框
IfCommonDialog1.FileName="
若按取消键则退出
List1.Clear'
列表框清空
Form1.Caption=Mid(CommonDialog1.FileName,1,Len(CommonDialog1.FileName)-4)
'
使用Mid()函数改变窗体名称
strName=Mid(CommonDialog1.FileName,1,Len(CommonDialog1.FileName)-3)+"
txt"
使用Mid()函数将cnt文件改变为txt文件并作为字符串赋给strName
OpenCommonDialog1.FileNameForInputAs#1'
打开目录文件
DoWhileNotEOF
(1)'
读写条目
LineInput#1,strL
List1.AddItemstrL
Loop
Close#1'
关闭文件1
List1.ListIndex=0'
开始时选中条目一激发Click事件
5,PrivateSubList1_Click()
Dimbln1AsBoolean'
由于判断两种*无注释*语句
Dimstr1AsString'
用于读文件
Dimstr2AsString'
用于读"
*【注释】"
语句时将【注释】读出而不带*
DimiAsInteger'
用于记录*号数
Text2.Text="
OpenstrNameForInputAs#2'
读文本文件
DoWhileNotEOF
(2)'
读写内容及注释
LineInput#2,str1'
下面If语句用于记录*号数
Ifstr1="
*"
Then'
*单独一行
i=i+1
ElseIfstr1="
*【注释】样式
*(无注释)*"
Orstr1="
*(无注释)*"
*(无注释)*样式
bln1=True
i=i+2
EndIf
下面If语句用来写文件
Ifi=List1.ListIndex*2+1Then'
每一诗词开始前的*号数
Then
开始读诗时将Text1.Text清空
Else
Text1.Text=Text1.Text+str1+Chr(13)+Chr(10)
向Text1中增加诗词内容每加一句使用Chr()函数换行
EndIf
ElseIfi=List1.ListIndex*2+2Andstr1="
*【注释】样式
str2=Mid(str1,2,Len(str1)-1)'
将【注释】读出而不带*
Text2.Text=Text2.Text+str2+Chr(13)+Chr(10)'
向Text2中增加文本内容"
【注释】"
ElseIfi=List1.ListIndex*2+2Andstr1<
>
"
Text2.Text=Text2.Text+str1+Chr(13)+Chr(10)
向Text2中增加*【注释】行之后的语句
ElseIfbln1Then'
开始对两种*无注释*语句进行判断
Ifi=List1.ListIndex*2+3Andstr1="
*(无注释)*样式
Text2.Text=Mid(str1,2,Len(str1)-2)
ElseIfi=List1.ListIndex*2+3Andstr1="
Loop
Close#2'
关闭文件2
EndSub
六,程序的调试和要困难的解决方法:
在程序的编译及调试过程中遇到的最大困难既是如何利用源文件中的*号进行诗词的标示及读写。
由于三个诗词文件中并非都是以单个*为一行,不同的样式其判断语句也有相应的变化。
最终的编成语句如程序代码所示。
另一个问题是单击右移命令按钮时所激发的Click事件中若直接使用List1.ListIndex属性值进行条目相加时运行出错,解决方法是定义一个整型过程级变量int1作为中间量先将List1.ListIndex属性值赋给int1,在对int1进行加减判断后再将int1值赋给List1.ListIndex从而又一次激发列表框的Click事件
七,经验心得:
在进行课程设计时首先要对各个控件的常用属性有初步了解及一些属性值的应用条件。
其次在编写程序代码时应细心书写,每一个语句的微小错误都有可能使程序无法正常运行而出错。
在进行VB程序设计的前期,我因为对某些控件的各个属性不很熟悉,只能每每参照教科书,但通过书以及同学老师的帮助,像诗词欣赏电子书这样比较简单的程序设计,使我从中受益非浅,开阔了程序设计的思路,完备了VB的知识体系,并培养了自己不断探索的劲头,而且渐渐对VB产生了兴趣。
八,参考文献:
1,VisualBasic程序设计(第二版)————吴昌平主编人民邮电出版社。
2,VisualBasic课程设计题目精选————王栋、王芳主编东南大学出版社。