1、淮阴师范学院毕业设计摘要:竞赛打分系统软件是一个简单的信息接收与管理系统,对于此系统要求功能完备,操作简单。关键字: Visual Basic 、串行通讯、竞赛Abstract:The competition hits subsystem software is a simple informationreceive and the management system management system, regarding thissystem requirement function complete, the operation is simple.Key words: Visual B
2、asic, serial communication, competition目 录1 引言 32 单片机介绍 33 软件开发工具介绍 44打分系统44.1 分终端与主机(微机)的通信方式542 打分终端设计643 软件设计75.软件的实现 851系统功能框图85.2打分系统软件设计9参考文献 21结束语 22致谢231.引言在计算机的发展历史上,运算和控制一直是计算机功能实施的2条主线。其角色的转换也常常困扰着人们的认识思路和研发目标。这是一对矛盾,对于不同的课题或截然不同的2个方面,用相同的价值去衡量显然是不合适的。在20世纪70年代,半导体微电子专家为了绕开这个矛盾,深有远虑地另辟蹊径,
3、按照嵌入式微控器系统的发展思路,交一个微型计算核心部件集成在一个芯片上,这就形成最早的单片机。如今单片机的用途十分广泛,这次毕业设计的内容就是利用单片机与微机之间的数据传输和处理来实现竞赛打分系统。竞赛评分系统按照时下流行的评委打分方式设计,有比较完善的竞赛评分功能。通过大屏幕,给观众强烈的视觉感受,凝聚比赛现场气氛,体现评委公正裁决。该系统主要适用于企事业单位、学校、娱乐行业等组织的各类选拔赛、技能比武、运动会等活动,如:歌手大赛、演讲比赛、朗诵比赛、模特选拔赛、演员考试、技能演示等。使活动组织轻松且象电视节目一样专业。本评分系统操作简单,实用性强,是开展评委打分比赛的得力助手!本系统由计算
4、机、打分终端、显示终端等组成,采用总线结构,连线少、结构简单,便于扩展。2单片机介绍在20世纪70年代,半导体微电子专家按照嵌入式微控器系统的发展思路,交一个微型计算核心部件集成在一个芯片上,这就形成最早的单片机(single chip micrcomputer)。1974 年,美国仙童(Firchild)公司研制的世界第一台单片微型机F8.该机有两块集成电路芯片组成,结构奇特,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视.从此,单片机开始迅速发展,应用领域也在不断扩大。现已成为微型计算机的重要分支,单片机的发展过程通常可以分为一下几个发展过程。(1)第一代单片机(1974-
5、1976):这是单片机发展的起步阶段.在这个时期生产的单片机特点是,制造工艺落后和集成度低,而且采用了双片形式.典型的代表产品有Fairchild公司的F8和Mostek387公司的3870等.2)第二代单片机(1976-1978):这是单片机的第二发展阶段.这个时代生产的单片机随眼已能在单块芯片内集成CPU,并行口,定时器,RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广,典型的产品有Inrel公司的MCS-48系列机.(3)第三代单片机(1979-1982):这是八位单片机成熟的阶段.这一代单片机和前两代相比,不仅存储容量和寻址范围大,而且中断源,并行I/O口和定时器/计数器
6、个数都有了不同程度的增加,更有甚者是新集成了全双工串行通信接口电路.在指令系统方面,普遍增设了乘除法和比较指令。这一时期生产的单片机品种齐全,可以满足各种不同领域的需要。代表产品有Intel公司的MCS-51系列机,Motorola公司的MC6801系机,TI公司的TMS7000系列机,此外,Rockwell,NS,GI和日本松下等公司也先后生产了自己的单片机系列.(4)第四代单片机(1983年以后):这是十六位单片机和八位高性能单片机并行发展的时代,十六位机的特点是,工艺先进,集成度高和内部功能强,加法运算速度可达到1uS以上,而且允许用户采用面向工业控制的专用语言,如PL/MPLUS C和
7、Forth语言等.代便产品有intel公司的MCS-96系列,TI公司的TMS9900,NEC公司的783系列和NS公司的HPC16040等。然而,由于十六位单片机价格比较贵, 销售量不大,大量应用领域需要的是高性能,大容量和多功能新型八位单片机.这些单片机有Intel公司的88044(双CPU工作),Zilog公司的Super8(含DMA通道),Motorola公司的MC68CH11(内含E2prom及A/D电路)和WDC公司的65C124(内含网络接口电路),等等。目前,八位高性能单片机以成为主流,单片机发展具体体现在以下几个方面: 1.CPU功能增强;2.内部资源增多;3.引脚的多功能化
8、;4.低电压低功耗。3.软件开发工具介绍 Visual basic简称vb,它的功能强大,不仅仅在于他本身的变成能力,还在于它可以直接调用DLL,通过DLL程序员可以访问构成Windows操作系统的许多过程,例如窗口与图形的显示,内存管理。人们将这些过程称作Windows API。在这些API中还包含了成千上万的函数,例如,类型和常量定义,通过在visual basic程序中声明外部过程,能够访问并使用这些Windows API及其它外部DLL,调用他们的方法与调用visual basic 自己的过程相同。Active API控件的使用和OLE自动化是增强vb功能的另外一个途径,通过它们程序员
9、能够访问外部应用程序提供的大量对象。Vb允许选择和管理外接程序,这是对vb的扩充,这些扩充增强了vb开发环境的能力。自从1991年推出以来,vb已经成为最为流行的编程语言之一,vb即visual basic,visual是指可视化的编程方法,basic是指在原有basic语言的基础上发展起来的编程语言,visial basci继承了basic语言易学易用的特点,。什么是可视化的编程方法呢?采用这种编程方法,可以不必通过代码来描述界面上元素的外形和位置,只需要把事先建立的对象拖到屏幕上,再通过鼠标的调节他们的位置和尺寸。现在有了visual basic ,即使没有经过严格的程序设计培训,也能开发
10、出不错的程序,现在vb已经有了数百个语句,函数及关键词,其中有很多和windows GUI有直接关系。本打分系统采用了vb编程。4打分系统竞赛打分时通常有多个评委,每人一个终端,各个终端通过电缆与计算机相连,由计算机按照某种评分规则计算选手的最终得分,再显示的大屏幕上。所以,设计本系统首先要确定各个终端与计算机的通信问题。41 分终端与主机(微机)的通信方式(1)并行连接方式打分终端与主机的打印口相连接,采用总线方式,如下图所示:。打分终端打分终端数据线8位地址线3-4位并口大屏幕每个打分终端设置不同的地址,用地址译码器对地址线上的信号进行译码。主机采用查询方式读取第个打分终端上的数据。这种方
11、式软件和硬件设计简单,但连线多,另外,通信距离有限(数米内)。(2)采用单独连接的串行通信方式每一个打分终端单独用三根通信线与主机连接,主机需要有多串口卡。如下图所示:打分终端打分终端。多串口卡大屏幕这种方式软件设计简单,通信距离远(数十米),但连线多,另外,且主机需要有多串口卡。(3)采用总线结构的串行通信方式。打分终端打分终端串口显示终端 每个打分终端设置不同的地址,主机采用查询方式读取第个打分终端上的数据。这种方式必须采用RS-485通信,通信距离远(数十米),连线少,易于增减终端数量,但软件设计稍复杂。基于上述三种方式的优缺点,我们选用了第三种方式,即RS-485总线方式。42 打分终
12、端设计打分终端是一个单片机系统,包括显示器,键盘、RS485接口等部件。(1) 单片机 选用MCS51系列的AT89C51,该单片机芯片内含4KB的程序存储器,有四个8位的并行口和一个串行口,两个16位计数/定时器,5个中断源,这些内部资源完全可以满足本设计的需要。(2) 显示器 打分终端上应有显示器,用于显示分值,可选用数码液晶显示器或LED数码管,考虑到成本原因,本设计采用4个LED数码管作为显示器。为了简化设计,分值可为四位整数或小数。四个LED数码管采用动态扫描方式。(3) 键盘 有12个键,包括10个数字键、一个小数点键和一个确定键。12键连接成43的矩阵,占用单片机的7根并口线,软
13、件上采用反转法读取键盘。(4) 打分终端数量 为了简化硬件,本设计只制作了三个打分终端。(5)显示终端本应使用单片机控制大型LED数码管显示总得分,因条件限制,只使用4个小LED数码管作显示终端。43 软件设计竞赛打分系统主机负责对终端进行查询,读取分值,并进行统计、显示总分、存储等。基于打分终端与主机之间采用RS-485总线连接,主机上需连接RS-232到RS-485转换器,我们使用了商品化的转换器。竞赛打分时通常要去掉一个最高分和一个最低分,剩余的取平均值或总和。本课题中打分终端数量少,所以不能去掉最高分和最低分,采用求总分或求均分的方法。软件设计为在屏幕上显示一个表格,分别显示每个评委的
14、打分及统计的总分(或均分),如下表所示:XXX竞赛成绩统计表评委A评委B评委C总分参赛队员1参赛队员2软件除了统计成绩外,还应能够保存成绩,并可打开以往保存的比赛成绩。5.软件的实现51系统功能框图编辑姓名编辑比赛项目设置评分规则裁判人数打分系统主界面得分表文件名次返回打开保存另存为串行通讯 图 5.1.1从图5.1.1的框图可以分为两个主要的窗口,既打分系统的主界面和显示得分表的界面,在主界面我们主要是进行打分前的设置,例如比赛的名称,参赛选手的姓名,裁判的人数,采用何种记分规则等等。而第二个主要窗口是用来显示各选手的成绩表,在该窗口中可以对各位选手的成绩进行排序,并且可以按照预先设置好的记
15、分方式来显示各各裁判所打的分数,并且记录他们的总分或者是平均分数。并且在该窗口中可以记录保存选手的成绩或者调出以往选手的成绩。当系统收到评委的打分时,系统会根据打分终端的编号将数据显示主窗口对应的文本框中,同时填入成绩表对应的单元格中,保证两个窗口中数据的一致性。5.2 打分系统软件设计 本软件主要部分分为两部分,第一部分界面如图5.2.1该界面主要是显示裁判打分,并且显示选手姓名,编号和得分。而选手姓名的编辑和打分规则的设置如下图5.2.2和图5.2.3,图5.2.4图5.2.1图5.2.2 图5.2.3图5.2.41 主窗口部分在图5.2.1中有两个按钮“前一选手”和“下一选手”其实现功能
16、的代码如下。Private Sub Command1_Click() 下一选手按钮 If Index Form1.FG1.Rows - 1 Then Command2.Enabled = True Index = Index + 1 Call disp(Index) Else Command1.Enabled = False End IfEnd SubPrivate Sub Command2_Click() Index = Index - 1 Command1.Enabled = True Call disp(Index) If Index = 1 Then Command2.Enabled
17、= False Command1.SetFocus End IfEnd Sub 初始化全局变量Index = 1,指向表格中的第一选手,这时“前一选手”按键为不可用状态,既将其Enabled属性设置为False,“下一选手”按键的Enabled属性为Ture,当用户电击“下一选手”按键时,将Index + 1,同时将“前一选手”按键设置为可用,同时判断是否已达表格的最后一行,代码If Index Form1.FG1.Rows 1 Then 就实现了上面的判断功能,若已达最后一行,I则将该键设置为不可用,既语句Command1.Enabled = False按照新的Index值将相应编号选手的得
18、分情况显示在主窗体上。 当用户点击“前一选手”键时,先将“下一选手”键设置为可用,将变量Index - 1,显示相应选手得分情况,同时判断是否已经达到表格第一行,若已达到,则将该按钮设置为不可用。其判断语句为If Index = 1 Then Command2.Enabled = False Command1.SetFocus End IfEnd Sub通常情况下,要去掉一个最高分,一个最低分,然后计算最后得分,但本系统由于只有三个打分终端,因此无法实现上述功能。在本系统里计算选手最后得分要根据评分规则和评委人数,可以求总分或着求均分,其默认为求总分。图5.2.4就是设置求分方法的界面。其设置
19、求均分或者总分的代码如下:Public Sub Command1_Click() Dim I As Integer, N As Integer N = Combo1.Text For I = 0 To 7 先将8个格子全设置为不可操作 Form2.Text1(I).BackColor = &H80000000 灰色 Form2.Label3(I).Visible = False Next I For I = 0 To N - 1 再将 N 个格子设置为可操作 Form2.Text1(I).BackColor = &H80000005 白色 Form2.Label3(I).Visible = T
20、rue Next I If Option1 Then Form1.FG1.TextArray(10) = 总分 Else Form1.FG1.TextArray(10) = 平均分 End If Form3.Hide Form2.Enabled = TrueEnd Sub在设置求分方法后,我们并没有马上计算总分或者是均分,而是把这个工作放在了Timer1_Timer这个事件中,Timer1_Timer将在以后说明。在上面的程序里我门还能选择裁判人数,同时实现把没有被选择的裁判所在的格子变成灰色。在图5.2.1中左下角中那个电话形状的控件,那个是MSComm控件,它是用来控制pc机和单片机通信的
21、。其设置如图5.25图5.2.5在该控件中的设置串口1的波特率9600bps,没有校验码,8位数据位,1位停止位。由于接收数据是随机的,所以我们采用中断方式接收,在程序中建立了一个该控件的MSComm1_OnComm的事件过程,并将其设置为当收到第5个字符时开始中断,打分中断发送数据的格式为,终端编号4个字符,分数可以是一到五个字符(含一个小数点),再加上1个字节累加和,所以每次通讯至少6个字符最多10个字符。由于打分终端发送每个数据的字符个数不等,为了能够保证完整接收数据,在 MSComm1_OnComm 事件过程中没有立刻接收数据,而是启动了一个定时器 ,定时器的时间值设置为0.1秒,过0
22、.1秒后本次数据一定发送完毕,这时在定时器的Timer1_Timer事件过程中接收数据,因为传输率为9600bps,所以传输每个字符的时间大约为1.1毫秒,所以10个字符传输的时间最多为11毫秒。在Timer1_Timer事件过程中将接受到的数据一次性读入到字符型变量中,截取其前4个字符为裁判号,余下的字符为分值。把分值填入主窗体和表格的相应单元格中。 计算机采用中断方式接收打分键盘发过来的数据,当每次通信过程中收到5个字符时引发OnComm事件,在OnComm事件过程中并没有去接收数据,而只是启动定时器Timer1。下面是Timer1_Timer事件过程的原代码:Private Sub Ti
23、mer1_Timer()Dim L As Integer, N As Integer, S As Single, Sum As Single, I As IntegerTimer1.Enabled = False 禁止定时器Buf = MSComm1.Input 从串口缓冲区读数据 L = Len(Buf): If L 5 Then Exit Sub 不足5个字符则为错误,不予处理N = 0For I = 1 To L 1 除最后一个字符外,循环求前面各个字符的累加和 N = N + Val(Mid(Buf, I, 1)Next IN = N Mod 16 保留低4位If N Val(Righ
24、t(Buf, 1) ThenMSComm1.Output = Left(Buf, 4) & “R” 校验错,向该终端发重发命令 Exit Sub 退出,放弃本次收到的数据End IfN = Val(Left(Buf, 4) S = Val(Right(Buf, L - 4) Text1(N - 1).Text = S L = Val(Text4.Text) Form1.FG1.TextArray(L * Form1.FG1.Cols + N + 1) = S Sum = 0 For I = 0 To 7 Sum = Sum + Val(Text1(I).Text) Next IIf Form3
25、.Option2 Then Sum = Sum / Val(Form3.Combo1.Text) If Sum = 1 Then Text3.Text = CStr(Sum) Else Text3.Text = 0 & CStr(Sum) End IfForm1.FG1.TextArray(L * Form1.FG1.Cols + 10) = Sum Change = True End SubTimer1_Timer事件不但截取信号中的裁判号和所打的分数,而且实现了总分的计算和平均分的计算,(总分和平均分的设置在Command1_Click 设置里,既图5.2.4),Sum = Sum + V
26、al(Text1(I).Text)是计算总分的,Sum = Sum / Val(Form3.Combo1.Text)是用来计算平均分数的。同时判断得分是否小于1,若小于1 ,系统将在小数点前加零 ,代码如下Text3.Text = 0 & CStr(Sum) 。 点击“开始打分”按钮,启动定时器2(Timer2), 定时器2的时间常数是200毫秒,即每隔0.2秒向打分终端发送一条打分命令(T命令),发完自动禁止定时器。(初始状态Timer2.Enabled = False)Private Sub Command3_Click()启动定时器2Command3.Enabled = FalseTim
27、er2.Enabled = TrueEnd SubPrivate Sub Timer2_Timer()每隔0.2秒向1个打分终端发送1条T命令Static I as IntegerI = I + 1 If I Val(Form3.Combo1.Text) ThenI = 0Timer2.Enabled = FalseCommand3.Enabled = True Exit Sub发送完毕,关闭定时器2,退出 End IfMSComm1.Output = “000” & Chr(I + 64) & “T”End Sub2.记分表模块 图5.2.6记分表界面如图5.2.6,在记分表模块中我们使用了
28、MSFlexGrid控件,由于该控件不是VB6.0的默认控件,需要添加,点击VB“工程”菜单 ,在打开的“部件”对话框中选择“Microsoft FlexGrid Control 6.0”选中它并点击“确定”按钮即可。当系统启动时触发得分表Form_Load这个事件时,系统将将把该控件进行初始化设置,设置为21行,11列,其代码如下:FG1.Cols = 11 FG1.FixedRows = 1 FG1.Rows = 21 FG1.FontSize = 12其中一行为表头,其余为20个选手,当添加选手超过20行,表的行树将会自动扩展。而行的扩展是在选手姓名编辑过程中就完成了。其实现方法如下:D
29、o While I = Len(S) And K 0If J = Form1.FG1.Rows - 1 Then 若行数超过表的最后一行则扩展一行 Form1.FG1.Rows = J + 1 For K = 1 To Form1.FG1.Cols - 1 Form1.FG1.Row = J 设置当前单元格 Form1.FG1.Col = K Form1.FG1.CellAlignment = 4 该行各格文字居中中间对齐 Next K Form1.FG1.TextArray(J * Form1.FG1.Cols) = CStr(J) & 为该行加上编号 End IfK = InStr(I,
30、S, vbCrLf) 找回车符位置If K 0 Then C = Mid(S, I, K - I)ElseIf I = Len(S) Then C = Mid(S, I, Len(S) - I + 1)End IfForm1.FG1.TextArray(J * Form1.FG1.Cols + 1) = CJ = J + 1 行数加一I = K + 2 I 指针指向回车换行符后的字符Loop表的列数是固定的,不可扩展,最左边一列用于显示行号(即选手编号),其余各列用于显示选手姓名,各评委的打分和最后得分;表的行数据是可以扩展的,系统刚启动时默认21行,一行作表头,其余20可放20个选手的比赛成
31、绩,添加选手人数超过20人或打开的成绩文件中选手人数超过20人时,表的行数会看上去扩充。3.文件处理 为了保存和打开得分表文件,设计了文件处理模块,分为“保存”,“另存为”和“打开”三个模块。 对于未保存的新表格,用户点击“保存”命令,将自动打开“另存为”对话框,这时要求用户输入保存路径和文件名,实现以上功能的代码如下:Public Sub Save_Click() 保存文件 If Fname Then On Error Resume Next Open Fname For Output As #1 If Err 0 Then Err=0为无错误 MsgBox Error, 16 Fname
32、= Exit Sub End If A = Label1.Caption Write #1, A For I = FG1.FixedRows To FG1.Rows - 1 For J = FG1.FixedCols To FG1.Cols - 1 A = FG1.TextArray(I * FG1.Cols + J) Write #1, A Next J Next I Change = False Close Else Call SavAs_Click 转文件另存为 End If Caption = 比赛成绩表 & -文件名: & FnameEnd SubPrivate Sub SavAs_
33、Click() Dim A As String, I As Integer, J As Integer CommonDialog1.Filter = *.sco(比赛成绩文件)|*.sco CommonDialog1.Flags = 6 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件,隐藏只读复选框。 CommonDialog1.CancelError = True 当选取“取消”按钮时是出错 On Error Resume Next CommonDialog1.ShowSave If Err = cdlCancel Then Exit Sub End I
34、f Fname = CommonDialog1.FileName If Fname = Then Exit Sub On Error Resume Next Open Fname For Output As #1 If Err 0 Then Err=0为无错误 MsgBox Error, 16 Fname = Exit Sub End If A = Label1.Caption Write #1, A For I = FG1.FixedRows To FG1.Rows - 1 For J = FG1.FixedCols To FG1.Cols - 1 A = FG1.TextArray(I *
35、 FG1.Cols + J) Write #1, A Next J Next I Change = False Caption = 比赛成绩表 & -文件名: & Fname CloseEnd Sub对保存过的的得分表再进行保存时,不会出现对话框而是按照原来的路径和文件名保存。本系统中文件的格式采用顺序文件,纯文本方式,文件后缀为“.sco”,用Windows的记事本也可以打开,用记事本打开时第一行为比赛名称,其余每一行对应表格中的一个单元格,顺序为从左到右,从上到下的方式。 图5.2.7为了不遗忘保存数据,我们在系统设置了一个全局的逻辑型变量用作文件被修改标志,该逻辑变量在标准模块中定义如下
36、:Public Change As Boolean有了这个变量,一旦成绩被修改,就将其设置为Ture,保存过后将其设置为False。若成绩被修改后未保存就关闭程序,系统会出现一个对话框,提示用户选择“保存成绩退出”、“不保存成绩退出”或“放弃退出”。在文本处理模块中我们还用了一个公共对话框控件Common Dialog。Common Dialog控件功能强大,可以打开许多种Windows对话框,在本系统中只使用了“另存为”和“打开”着两个功能,这两个功能在上文已经叙述过,在这里就不再重复了。在设置Common Dialog的属性时,见图5.2.7,我们把Cancel Erron设置为Ture,
37、这个作用是当用户点击“取消”按钮时,发出错误信息。FileName属性值是用户在对话框中选定或输入的文件路径和文件名。4.排序模块 排序模块:当用户点击图5.2.6上的“名次”命令时,系统启动排序程序,这里使用的是选择排序方法,排序的依据是表中各行的“得分”一栏,序列为从高到低,即降序。这时各行的序号即为选手名次,排列中没有考虑并列名次。Private Sub Sort_Click() 排名次 Dim I As Integer, J As Integer, K As Integer Dim T(10) As String, M As Integer, N As Integer M = FG1.
38、Rows: N = FG1.Cols For I = FG1.FixedRows To M - 2 For J = I + 1 To M - 1 If FG1.TextArray(J * N + 10) = Then Exit ForIf Val(FG1.TextArray(J * N + 10) Val(FG1.TextArray(I * N + 10) ThenChange = True For K = 1 To 10 T(K) = FG1.TextArray(J * N + K) FG1.TextArray(J * N + K) = FG1.TextArray(I * N + K) FG
39、1.TextArray(I * N + K) = T(K) Next KEnd If Next J Next IEnd Sub参考书籍:1张宏林 孔艳 王哲 编著 Visual Basic 6.0开发数据库人民邮电出版社 20002Evangelos Petroutsos Kevin Hough 著 邱仲潘 等译Visual Basic 6.0高级开发指南 电子工业出版社出版 19993 林卓然Visual Basic 6.0高级开发指南电子工业出版社 2003结束语经过这次毕业设计,我觉得自己学到了不少东西。归纳起来,主要有以下几点:1、大学四年的时间都在学习理论知识,并未真正去应用和实践。
40、经过这次毕业设计,我接触到了更多平时没有接触到的新问题、新设备、新器件,发现了自己很多不足之处。我还体会到了所学理论知识的重要性:知识掌握得越多,设计得就更全面、更顺利、更好。2、了解了进行电子产品设计开发必不可少的几个阶段。毕业设计能够从理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的素质。我经过这次系统的毕业设计,熟悉了对一项课题进行研究、设计和实验的详细过程。这些在我们在将来的工作和学习当中都会有很大的帮助。 3、学会了怎样查阅资料和利用工具书。平时课堂上所学习的知识大多比较陈旧,作为电子信息工程专业的学生,由于专业特点自己更要积
41、极查阅当前的最新技术资料。一个人不可能什么都学过,什么都懂,因此,当你在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。4、实践能力得到了进一步提高,在调试过程中积累了一些经验。5、毕业设计对以前学过的理论知识起到了回顾作用,并对其加以进一步的消化和巩固。6、毕业设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及相对应的工程意识,同学之间的友谊互助也充分的在毕业设计当中体现出来了。致 谢在这里,我要感谢我的导师 教授,他对我们严格要求,无论是在理论还是实践上都给我们很好的指导,他认真负责的工作态度和深厚的理论水平更使我收益匪浅。在此我深表谢意!我还要感谢和我的同组的 同学,他和我团结协作,配合默契,对我完成毕业设计起到了不可替代的作用。 另外,我还要真诚的感谢给予我帮助和鼓励的所有同学,谢谢你们!本文是通过网络收集的资料,如有侵权请告知,我会第一时间处理。21
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922