C#实训报告书.docx
《C#实训报告书.docx》由会员分享,可在线阅读,更多相关《C#实训报告书.docx(23页珍藏版)》请在冰豆网上搜索。
C#实训报告书
摘要
《C#程序设计语言》课程主要面向学生讲授C#程序设计语言的基础知识,而《C#程序设计语言》专业实训则要求学生综合运用理论课所学的知识及技术,在教师指导下完成有一定难度的C#程序,经过分析、设计编写代码、实现程序。
因此专业实训与理论课的关系是一个理论与实践的关系,一个分解与综合的关系,一个学习与应用的关系。
C#程序设计是一门应用性很强的专业课,在学习时必须理论与实践相互结合,为此我们开设了本课程的实训,目的就是通过本课程的实训设计使学生能够比较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面的理解、掌握和综合运用所学的知识,提高学生的编程能力,巩固教学效果。
关键词:
分析编写
Abstract
C#ProgrammingLanguage"coursemainlyforstudentstoteachC#programminglanguagefundamentals,and"C#programminglanguage"professionaltrainingrequiresstudentstotheintegrateduseoftheorylessonslearnedknowledgeandskillsofteachersundertheguidanceofaacertaindegreeofdifficultyofC#program,throughanalysis,design,code,implementtheprogram.Therefore,professionaltrainingandtherelationshipbetweentheoryandpracticeisatheoreticalrelationship,arelationshipbreakdownandsynthesis,arelationshipbetweenlearningandapplication.
C#programmingisahighlyspecializedapplicationsinlearningtheoryandpracticemustbecombinedwitheachother,forwhichwesetupthiscourseoftraining,thepurposeisthroughthistrainingcoursedesignedtoenablestudentstomorefullygraspaboutobject-orientedprogrammingconceptsanddevelopmentmethodsinordertomorefullyunderstand,graspandintegrateduseofknowledge,improvetheirprogrammingskills,strengthenteachingeffectiveness.
Keywords:
analyticalwriting
第二章开发环境简介……………………………………………………………………………..2
3.3科学计算器……………………………………………………………………………...10
第四章实训总结…………………………………………………………………………………18
第一章实训的目的和任务
1.1实训教学的目的
本课程实训是计算机网络专业重要的实践性环节之一,实在学习完《C语言程序设计》课程后进行的一次全面的综合练习。
本课程实训的目的是:
(1)巩固和加深学生对C语言课程的基本知识的理解和掌握。
(2)掌握C语言编程和程序调试的基本技能。
(3)利用C语言进行简单的软件设计的基本思路和方法。
(4)提高运用C语言解决实际问题的能力。
利用《C语言程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作过程的程序设计题目,帮助学生掌握编程、调试的基本技能,独立所布置的任务。
加强高职计算机专业学生动手能力的培养,通过理论与实践教学进一步提升专业知识水平。
1.2实训教学的任务
在.NET平台上,以VisualStudio2008为工具完成以下几个项目:
(1)猜数字游戏:
比较输入的数与随机产生的数进行大小的比较,同时能够显示经过多少次猜对答案,并查看答案。
(2)秒表项目:
一个秒表,能分记时间,能精确到毫秒。
(3)简易计算器:
编写一个计算器程序,能实现一些简单的运算,可以实现从十进制转化成二进制、八进制、十六进制。
第二章开发环境简介
2.1硬件环境
所谓硬环境,是指由传播活动所需要的那些物质条件、有形条件之和构筑而成的环境。
所谓软环境,是指由传播活动所需要的那些非物质条件、无形条件之和构筑而成的环境。
就存在形式来说,硬环境是一种物质环境,软环境是一种精神环境。
作为物质环境,它被限定或固定在一定的地理位置上(如湖畔的出版大厦,山顶的发射塔)和人为的具体的物质空间之中(如大礼堂、会议室、演播厅)。
它独立于人们的意识、体验之外,具有静态的和硬性的特征。
作为精神环境,它反映了社会风气、媒介管理、群体风貌、生活状况、信息交流等情况。
它是一个被人体验和意识的世界,具有动态的和软性的特征。
2.2软件环境
软件开发环境(SoftwareDevelopmentEnvironment,SDE)是指在基本硬件和基本软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。
它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。
软件开发环境的主要组成成分是软件工具。
人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。
存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。
工具间的联系和相互理解都是通过存储在信息库中的共享数据得以实现的。
第三章项目设计与分析
3.1猜数字游戏
3.1.1猜数字游戏项目的实训目的
(1)掌握窗体应用程序的应用
(2)了解if语句的应用
(3)熟悉随机函数
3.1.2实训内容
猜数字游戏:
比较输入的数与随机产生的数进行大小的比较,同时能够显示经过多少次猜对答案,并查看答案。
3.1.3实现步骤设计
(1)新建1个window应用程序,并把项目命名为“CaiShuZi”。
(2)在窗体上放置4个button控件分别命名为Tijbtn,Checkbtn,Clearbtn,Restarbtn,Text属性分别设置为“提交”,“查看答案”,“清除”,“重新开始”。
(3)在窗体上放置3个label组件,分别把其中两个Text属性设置“猜数字游戏”,“请输入一个0至100的数字”
(4)在窗体上放置1个Textbox,命名为Resulttxtb。
如图所示:
(5)选中窗体双击生成Load事件,并双击Tijbtn(提交按钮)产生Click事件。
主要代码如下:
inti;
//计算次数
intcount;
privatevoidForm1_Load(objectsender,EventArgse)
{
//生成一个0~99之间的随机整数
i=newRandom().Next(100);
count=0;
Resultlab.Text=i.ToString();
Resultlab.Visible=false;
}
privatevoidTijbtn_Click(objectsender,EventArgse)
{
intj=int.Parse(Resulttxtb.Text);
count++;
//比较大小
if(j>=0&j<=100)
{
if(j>i)
{Windowslab.Text="你的输入偏大,请重新输入!
";}
elseif(j
{
Windowslab.Text="你的输入偏小,请重新输入!
";
}
else
{
Windowslab.Text="恭喜你,你猜对了!
"+"一共猜了"+count+"次";
}
}
else
{
Windowslab.Text="输入有误,请重新输入!
";
}
}
privatevoidCheckbtn_Click(objectsender,EventArgse)
{
Resultlab.Visible=true;
}
privatevoidClearbtn_Click(objectsender,EventArgse)
{
Resulttxtb.Text="";
}
privatevoidRestarbtn_Click(objectsender,EventArgse)
{
i=newRandom().Next(100);
count=0;
Resultlab.Text=i.ToString();
Resulttxtb.Text="";
Resultlab.Visible=false;
}
3.1.4总结
(1)入的数是否在0至100之间,然后进行比较大小。
电脑随机产生一个随机数,与输入的数进行比较,经过多次的猜测,从而给出判断是大了还是小了或者是猜对了。
(2)在代码中使用了随机函数,输入的数要进行强制转换成整形。
以免产生字符串,导致有小数的产生。
其次是随机函数在窗体Load事件里,如果在TijbtnClick事件里,每点击一次就会重新产生一个随机数。
(3)代码中Resultlab.Visible=false;设置Label3的Visible属性设置为false,即设置Label3的文本不显示。
当点击“查看答案”时,才将随机产生的结果显示出来。
3.2计时器
3.2.1计时器项目的实训目的
(1)掌握Timerl组件的应用
(2)思考代码的实现
(3)熟悉自定义方法
3.2.2实训内容
计时器:
设计并实现一个能以毫秒来计数,能够显示多次记录的时间,并可以清楚记录且重新开始计时。
3.2.3实现步骤设计
(1)新建一个window应用程序,并把项目命名为“jishiqi”。
(2)在窗体上放置3个button控件分别命名为“BtnOk”“BtnClear”
“BtnRecond”.Text属性分别设置为“开始计时”“记录”“清零”。
(3)在窗体上放置7个lable控件,Text属性分别为“记录1”“记录2”“记录3”,其余4个lable属性为“00:
00:
00:
00”。
(4)按照图片的格式排放,如图所示:
(5)选中窗体双击生成load事件,并双击BtnOk(开始计时按钮)生成Click。
主要代码如下:
voidMainFormLoad(objectsender,System.EventArgse)
{
this.timer1.Enabled=false;
this.timer1.Interval=1;
}
//计时函数
publicstringGetAllTime(inttime)
{
stringhh,mm,ss,fff;
intf=time%100;//毫秒
ints=time/100;//转化为秒
intm=s/60;//分
inth=m/60;//时
s=s%60;//秒
//毫秒格式00
if(f<10)
{
fff="0"+f.ToString();
}
else
{
fff=f.ToString();
}
//秒格式00
if(s<10)
{
ss="0"+s.ToString();
}
else
{
ss=s.ToString();
}
//分格式00
if(m<10)
{
mm="0"+m.ToString();
}
else
{
mm=m.ToString();
}
//时格式00
if(h<10)
{
hh="0"+h.ToString();
}
else
{
hh=h.ToString();
}
//返回hh:
mm:
ss.ff
returnhh+":
"+mm+":
"+ss+"."+fff;
}
//开始计时按钮单击事件
voidBtnOKClick(objectsender,System.EventArgse)
{
if(timer1.Enabled==false)
{
this.btnOK.Text="停止计时";
this.timer1.Enabled=true;
}
else
{
this.btnOK.Text="开始计时";
this.timer1.Enabled=false;
}
}
//时钟控件事件
voidTimer1Tick(objectsender,System.EventArgse)
{
t=t+1;//得到总的毫秒数
this.label1.Text=GetAllTime(t);
}
//计时器清零
voidBtnClearClick(objectsender,System.EventArgse)
{
t=0;
i=0;
lblRecond1.Text="00:
00:
00:
00";
lblRecond2.Text="00:
00:
00:
00";
lblRecond3.Text="00:
00:
00:
00";
//如何正在计时,则先停止再清零,否则直接清零
if(this.timer1.Enabled==true)
{
this.BtnOKClick(sender,e);
label1.Text=GetAllTime(t);
}
else
{
label1.Text=GetAllTime(t);
}
}
inti=0;
//记录事件
privatevoidbtnRecond_Click(objectsender,EventArgse)
{
i++;
if(i==1)
{
lblRecond1.Text=label1.Text;
}
elseif(i==2)
{
lblRecond2.Text=label1.Text;
}
elseif(i==3)
{
lblRecond3.Text=label1.Text;
3.2.4总结
通过这次计时器的程序编写,让我认识到了团队合作的精神。
这是我们团队一起努力奋斗的成果。
虽然在编写代码的过程中我们遇到了一些小问题,但我们还是齐心协力一起解决了。
计时器的程序编写让我们对C#程序设计这门课程有了进一步的认识和理解,也进一步奠定了我们学习好C#程序设计这门课程的信心与渴望。
3.3.1科学计算器项目的实训目的
(1)掌握窗体应用程序的应用
(2)了解if语句的应用
(3)熟悉数据类型的转换
(4)掌握单选按钮的使用以及C#中容器的使用
(5)掌握从十进制转换成二进制、八进制、十六进制的方法
3.3.2实训内容
科学计算器:
可以进行基本的数据计算以及进制转换,将输入的十进制转换成二进制,八进制和十六进制。
3.3.3实现步骤设计
(1)新建一个Windows应用程序,并把项目命名为“Jisuanqi”。
(2)把窗体命名为MainForm,Text属性为“科学计算器”,KeyPreview属性设置为true。
(3)在窗体上放置1个TextBox,命名为txtResult,将TextAlign属性设置为MiddleRight,BorderStyle属性设置为FixedSingle,BackColor属性设置为White。
(4)在窗体上放置23个Button、4个RadioButton,如图所示的简易计算器控件分布图进行命名、设置Text属性。
(5)双击窗体生成一个窗体的Load事件,双击btnCE、btnBS生成Click事件,双击rdo16、rdo10、rdo8、rdo2生成CheckedChanged事件,选中所有24个按钮,打开事件窗口,双击Click事件,为们生成同一个事件,这样所有按钮都共享同一个事件方法。
(6)在每个事件方法中输入相应代码,代码程序如下:
if(char.IsDigit(c))
{
if(isSecond||isDone)//0
{
txtResult.Text="";
isSecond=false;
isDone=false;
}
//txtResult.Text="";
strings=txtResult.Text+c.ToString();
s=double.Parse(s).ToString();
txtResult.Text=s;
}
elseif(c=='+'||c=='-'||c=='*'||c=='/')
{
num1=double.Parse(txtResult.Text);
oper=c;
isSecond=true;
}
elseif(c=='=')
{
num2=double.Parse(txtResult.Text);
doubleresult=0;
switch(oper)
{
case'+':
result=num1+num2;
break;
case'-':
result=num1-num2;
break;
case'*':
result=num1*num2;
break;
case'/':
result=num1/num2;
break;
}
txtResult.Text=result.ToString();
num1=result;
isSecond=false;
isDone=true;
}
elseif(c=='.')
{
if(txtResult.Text.IndexOf(".")==-1)
{
txtResult.Text+=".";
}
}
i=int.Parse(txtResult.Text);
3.3.4总结
科学计算器的设计明显比前面两个程序设计复杂,我们小组经过明确的分工合作使得该程序的圆满完成。
该程序的编写必须详细理解进制之间的转换,使其才能再C#中顺利运转。
这项目的完成加深了我们小组的合作意识也巩固了我们对C#的更深认识理解。
3.4图片管理器
3.4.1图片管理器项目的实训目的
(1)掌握多界面的使用
(2)控件的使用。
(3)学会分析与问题的结合
3.4.2实训内容
制作一个图片管理器,它可以让用户对自己的图片进行分类管理。
3.4.3实现步骤设计
(1)新建一个项目,命名为“图片管理器”。
(2)在窗体中放置一个ToolStrip控件,命名为tsMain。
ImageScalingSize属性设置为(32,32),
在工具栏上添加5个按钮。
分别命名为tsbtnCreateFolder、tsbtnDel等其Text属性为新增目录、删除图像等。
如图所示:
具体代码如下:
privatevoidMainForm_Load(objectsender,EventArgse)
{
lvView.Dock=DockStyle.Fill;
tscbInterval.SelectedIndex=1;
ShowView();
bgBrush=newSolidBrush(lvView.BackColor);
statusStrip1.Items[0].Visible=false;
format.Alignment=StringAlignment.Center;
try
{
if(!
Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
DirectoryInfodir=newDirectoryInfo(path);
foreach(DirectoryInfodindir.GetDirectories())
{
Folderfolder=newFolder(Application.StartupPath,d.Name);
lstFolder.Items.Add(folder);
}
}
privatevoidtsbtnCreateFolder_Click(objectsender,EventArgse)
{
FrmCreateFolderfrmCreateFolder=newFrmCreateFolder(this.lstFolder);
try
{
frmCreateFolder.ShowDialog(this);
}
finally
{
frmCreateFolder.Dispose();
}
}
privatevoidtsbtnLoad_Click(objectsender,EventArgse)
{
if(lstFolder.Items.Count==0)
{
MessageBox.Show("请先添加目录再导入图片!
","消息",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
FrmLoadPicfrmLoadPic=newFrmLoadPic(this.lstFolder,this.statusStrip1);
try
{
if(frmLoadPic.ShowDialog(this)==DialogResult.OK)
{
LoadTolistView();
}