软件课程设计.docx
- 文档编号:10406329
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:18
- 大小:975.56KB
软件课程设计.docx
《软件课程设计.docx》由会员分享,可在线阅读,更多相关《软件课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
软件课程设计
软件课程设计
1、设计目的
2、设计内容
3、设计思想
4、源程序(VB.NET)
5、执行演示
6、总结与体会
姓名:
王昂
学号:
110901412
班级:
自动化1104班
东华大学信息科学与技术学院
一、设计目的
通过本课程设计实习,使学生在下列方面有所了解和提高:
1.掌握VisualBasic进行程序设计的基本思路和方法
2.能利用VisualBasic编程实现简单的任务
3.结合控制系统理论用VB进行计算机控制仿真
二、设计内容
实现各种函数发生器并显示
1.基本要求:
实现下列函数发生器,正弦函数、方波函数、锯齿函数、三角函数,函数的生成参数都可以通过菜单设定,并且将生成的函数以图形方式实时显示在窗口中。
2.附加功能:
将系统的历史波形进行保存,并可将系统的历史波形重现。
使用Teechart控件作为显示输出。
三、设计思想
本课程设计基于VisualBasic.NET,与传统的VisualBasic6.0有一定的区别。
利用VisualBasic.NET界面实现函数信号发生器的设计,主要包括正弦函数、方波函数、锯齿函数、三角函数。
函数的生成参数都可以通过菜单进行设定,并将生成的函数以图形方式进行显示,本设计利用Teechart控件进行函数波形显示。
为实现函数信号发生器的各个功能,总体设计了五个窗体,其中一个主窗体,四个子窗体。
主窗体主要实现各种函数功能的选择,子窗体进行具体设计,包含显示函数波形以及函数参数设定等功能。
设计要求重现历史波形,由于对MicrosoftAccess毫无所知并且VisualBasic.NET也是从零开始学的,所以并没有用较复杂的数据库方法保存和重现历史波形,而是在程序中进行简单设计以实现该功能。
四、源程序(VB.NET)
主窗体程序:
PublicClassForm1
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
Form2.Hide()
Form3.Hide()
Form4.Hide()
Form5.Hide()
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
Form2.Show()
EndSub
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click
form3.show()
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
Form4.Show()
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
Form5.Show()
EndSub
EndClass
子窗体程序:
正弦波子程序
ImportsSystem.Math
PublicClassForm2
Dimx(100),y(100)
Dima,w,b,cAsDouble
Dima1,w1,b1,c1AsDouble
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
If(TextBox1.Text=""OrTextBox2.Text=""OrTextBox3.Text=""OrTextBox4.Text="")Then
MsgBox("函数参数未完全设置,请设置",0,"提醒")
Else
a1=a:
b1=b:
c1=c:
w1=w
a=Val(TextBox1.Text)
w=Val(TextBox2.Text)
b=Val(TextBox3.Text)
c=Val(TextBox4.Text)
Fori=1To100Step1
x(i)=i
y(i)=a*Sin(w*i+b)+c
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndIf
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
a=1
w=0.2
b=0
c=0
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
x(i)=i
y(i)=a*Sin(w*i+b)+c
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
x(i)=i
y(i)=a1*Sin(w1*i+b1)+c1
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
EndClass
三角波子程序
ImportsSystem.Math
PublicClassForm3
Dimx(100),y(100)
ConstPIAsDouble=3.141592653
DimA,W,s,A1,W1AsDouble
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
A=2
W=0.2
s=0
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=s+(1/n^2)*Cos(n*W*i)
Next
y(i)=A/2+4*A/(PI^2)*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
If(TextBox1.Text=""OrTextBox2.Text="")Then
MsgBox("函数参数未完全设置,请设置",0,"提醒")
Else
A1=A:
W1=W
A=Val(TextBox1.Text)
W=Val(TextBox2.Text)
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=s+(1/n^2)*Cos(n*W*i)
Next
y(i)=A/2+4*A/(PI^2)*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndIf
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
s=0
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=s+(1/n^2)*Cos(n*W1*i)
Next
y(i)=A1/2+4*A1/(PI^2)*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
EndClass
方波子程序
ImportsSystem.Math
PublicClassForm4
Dimx(100),y(100)
ConstPIAsDouble=3.141592653
DimA,w,s,n,A1,w1AsDouble
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
If(TextBox1.Text=""OrTextBox2.Text="")Then
MsgBox("函数参数未完全设置,请设置",0,"提醒")
Else
A1=A:
w1=w
s=0
A=Val(TextBox1.Text)
w=Val(TextBox2.Text)
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=1/n*Sin(n*w*i)+s
Next
y(i)=4*A/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndIf
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
s=0
A=2
w=0.2
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=1/n*Sin(n*w*i)+s
Next
y(i)=4*A/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
Fori=1To100Step1
x(i)=i
Forn=1To10000Step2
s=1/n*Sin(n*w1*i)+s
Next
y(i)=4*A1/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
EndClass
锯齿波子程序
ImportsSystem.Math
PublicClassForm5
Dimx(100),y(100)
ConstPIAsDouble=3.141592653
DimA,w,s,k,A1,w1AsDouble
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
DimnAsInteger
s=0
k=1
A=2
w=0.2
Fori=1To100Step1
x(i)=i
Forn=1To10000Step1
s=k/n*Sin(n*w*i)+s
k=-k
Next
y(i)=2*A/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimnAsInteger
If(TextBox1.Text=""OrTextBox2.Text="")Then
MsgBox("函数参数未完全设置,请设置",0,"提醒")
Else
A1=A:
w1=w
s=0
k=1
A=Val(TextBox1.Text)
w=Val(TextBox2.Text)
Fori=1To100Step1
x(i)=i
Forn=1To10000Step1
s=k/n*Sin(n*w*i)+s
k=-k
Next
y(i)=2*A/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndIf
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
DimnAsInteger
s=0
Fori=1To100Step1
x(i)=i
Forn=1To10000Step1
s=k/n*Sin(n*w1*i)+s
k=-k
Next
y(i)=2*A1/PI*s
s=0
Next
WithAxTChart1
.Series(0).Clear()
Fori=1To100Step1
.Aspect.View3D=True
.Panel.Gradient.Visible=False
.Series(0).Add(y(i),x(i),0)
Next
EndWith
EndSub
EndClass
五、执行演示
主界面
子界面(参数未完全设置出现提示对话框)
正弦波子界面
三角波子界面
方波子界面
锯齿波子界面
六、总结与体会
这真是一个很独特的课程设计,什么都没有教直接布置课程设计题目回去做。
而之前又从没学过VB,无疑使得课程设计的难度大大提升。
不过也没什么,考研大学生自学能力的时候到了,学习终究还是要靠自己的。
从零开始,先是从网上下载了VisualStudio2010在电脑上装好,然后大概花了一天时间看VisualBasic.NET程序设计的书,并且一边摸索VisualStudio2010软件的用法。
之后便慢慢开始尝试设计了,一边设计一边学习,像Teechart控件的用法等等。
大概用了两三天时间才大致完成了。
当然,粗陋的设计还是存在一些问题的。
由于时间短促,这也是无法避免的。
像利用数据库实现历史波形的存储和重现就毫无头绪了,不得不使用简单的程序来进行替代。
由于各个函数波形是利用傅里叶级数展开来近似的,所以频率参数的改变有一定的范围,参数设置不合理可能导致函数波形失真,这是有待改进的地方。
但是完全从头开始学起,到最后能大致设计完成,觉得还是挺有成就感的,实在是不容易。
课程设计的收获还是挺大的,学会了怎样从头来自学一门语言以及软件,对VB.NET语言也有了大致的了解。
只能说这只是个开端,想要学好想要精通还有很长的路要走,慢慢努力吧。
谢谢审阅!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 课程设计