《2022年北京邮电大学-计算机实习-实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年北京邮电大学-计算机实习-实验报告 .pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机实习报告北京邮电大学学院:电子工程学院2017 年 4 月名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 37 页 -一人民币金额大写转换器1.1 功能说明1.1.1总体功能说明从键盘输入一个十亿以内的正整数,把它转换为人民币金额大写(不考虑用户输入错误的情况)。1.1.2用户界面1)正常输入2)错误提示名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 37 页 -1.1.3使用说明在金额数值文本框中输入数值(不超过9 位),点击开始转换按钮,金额大写文本框即可显示大写金额。1.2 程序设计说明1.2.1使用工具开发工具:VS2017 语言:c#应用类型:win
2、dows 窗体应用1.2.2程序流程1.2.3关键算法说明转换方法:以每个数位为一个单位,逐个处理。基本转换方法是直接将数字(整型)转化为大写数字和单位(字符串),位数-大写对应关系为:1-元,2-十,3-百,4-千,5-万,6-十,7-百,8-千,9-亿。每一位的处理方式是转换或不转换。遇到数字零需要特殊处理,最后需要检查万位并且特殊处理。1)对数字零的处理。防止出现多个连续的零,整十整百等不出现零。即:第一类:以一个或多个零结尾,不转换。第二类:连续多个零合并为一个零。解决方法:检查前一位,如果是零,则当前位的零不转换,否则转换。人为设定第一位的前一位数值是零。2)万位处理。当前算法存在缺
3、陷,采用以下方法修正。如果5-8 位均为零,则“万”字省略,不需要修正。否则,“万”字需要有,当万位为零时需要增加输出“万”。1.2.4数据结构说明所有常量,变量和方法存在于Form1 类中。属性描述unit 金额单位(string)cap 金额数字大写(string)ans 金额转换结果(string)number 金额数值(int)num 金额数值数组(int)每一位存成数组的一位len 金额数值数组长度(int)输入金额数值(int)输出大写金额(string)调用转换方法进行转换点击按钮动作触发名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 37 页 -方法描述priva
4、tevoid button1_Click(object sender,EventArgs e)当鼠标点击“开始转换”按钮时,触发此方法。此方法将完成转换并且显示结果。1.2.5关键算法描述1.privatevoid button1_Click(object sender,EventArgs e)2.3.int number=0;4.int num=new int 9 0,0,0,0,0,0,0,0,0;5.int len=0;6.int i;7.int j=0;8.int temp;9.10.textBox2.Text=;/清空金额大写文本11.try12.13.number=Convert.
5、ToInt32(textBox1.Text);/金额数值文本框获得的数据为字符型,转换为整型14.15.catch/异常处理,如果输入错误,则出现提示16.17.textBox1.Text=;18.textBox2.Text=输入错误,请输入9 位以内的正整数;19.20.while (number!=0)/字符型转换为字符数组21.22.numlen=number%10;23.number/=10;24.len+;25.26.27.for (i=0;i=0;i-)/显示转换结果53.54.textBox2.Text+=ansi;55.56.1.3设计总结1.3.1性能评价优点:界面简洁,操作
6、简单。设计思路清晰,分类不重不漏,逻辑正确且简单。代码风格清新规范。特别地,本程序可以处理异常输入(数字位数超过9 位无法输入,输入非数字字符显示错误提示),健壮性强。二文本字符频率统计1.1 功能说明1.1.1总体功能说明可输入文本,统计输入文本中出现频率最高的3 个字或字母(不统计数字),显示出现次数。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 37 页 -1.1.2用户界面1.1.3使用方法输入文本,点击开始统计按钮。1.2 程序设计说明1.2.1使用工具开发工具:VS2017 语言:c#应用类型:windows 窗体应用1.2.2总体设计流程图名师资料总结-精品资料欢
7、迎下载-名师精心整理-第 6 页,共 37 页 -1.2.3关键算法说明数据结构上使用2 个数组,一个为字符数组,存放输入文本;另一个是计数数组,存放每个字符重复次数。两个数组长度相同,一一对应。将字符数组中的字符依次判断,如果是中英文字符,则记录,否则不记录。记录后得到对应的次数数组,将此数组排序,降序找出前三名。1)判断中英文字符:编码方式为unicode 码,汉字范围 4E00-9FA5,即十进制的19968-40869.英文范围直接用a-z,A-Z确定。2)记录字符重复次数:依次判断当前字符与之前所有字符是否相等。如果没有一个字符与之相等,则当前字符是第一次出现,将次数数组对应的次数设
8、为1;如果与某个字符相等,则将那个字符的次数加一,同时不再检查后面的元素是否重复,即实现了将非第一次出现的字符的次数都记录在第一次出现的元素对应的次数数组元素之下,并且保证了只记录一次。3)排序:预设三个最大值。首先依次用次数数组的所有元素与最大值比较,如果更大则替换,同时记录该元素的位置,以此记录拥有次数最大值的字符。将次数数组中最大值改成零,在剩下的元素中找出最大值,即为第二大值。同理可找出第三大的值。由于记录了最大值和位置,可以得知最大值和对应的字符。1.2.4数据结构说明所有常量,变量和方法存在于Form1 类中。属性描述input 输入字符数组(char)cnt 字符对应的次数数组(
9、int)方法描述privatevoid button1_Click(object sender,EventArgs e)执行函数输入文本(字符串)转化为字符数组逐个判断,记录次数排序输入字符和次数名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 37 页 -privatestaticBoolean isChinese(char c)判断是否为中文字符privatestaticBoolean isEnglish(char c)判断是否为英文字符privatevoid Order(int num,int len,char c)排序和显示1.2.5关键算法描述2privatevoid b
10、utton1_Click(object sender,EventArgs e)3 4int i,j,flag;5this.InitCnt();67 input=textBox1.Text.ToCharArray();/字符串转换字符数组8for (i=0;i input.Length;i+)9 10 flag=0;11if (isChinese(inputi)|isEnglish(inputi)/判断是否计数12 13for (j=0;j=19968&c=a&c=A&c=Z)39 40returntrue;41 42elsereturnfalse;43 4445privatevoid Orde
11、r(int num,int len,char c)/排序46 47int max1=0;48int rec1=0;49int max2=0;50int rec2=0;51int max3=0;52int rec3=0;53int i;5455for (i=0;i max1)57 58 max1=numi;59 rec1=i;60 61 numrec1=0;/去除第一名62for (i=0;i max2)64 65 max2=numi;66 rec2=i;67 68 numrec2=0;/去除第二名69for (i=0;i max3)71 72 max3=numi;73 rec3=i;74 75
12、 textBox2.Text=crec1.ToString();76 textBox5.Text=max1.ToString();77 textBox3.Text=crec2.ToString();78 textBox6.Text=max2.ToString();79 textBox4.Text=crec3.ToString();80 textBox7.Text=max3.ToString();81 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 37 页 -1.3 设计总结1.3.1性能评价优点:判断中英文方法简单;记录次数方法便捷,只需要一个数组即可完成;排序方法复杂度低。代
13、码清晰流畅,程序健壮不易出错。1.3.2问题总结出现过的问题:在寻找重复字符过程中,曾试图将重复的字符赋值为0,结果出错,原因是不能够直接赋值字符数组。解决办法是,增加break 语句,即一旦找到重复字符则跳出循环不在查找之后的字符,可以保证所有重复字符的计数都记录在第一次重复的位置上。三算术运算测试程序1.1 功能说明1.1.1总体功能说明制作一个可供小学数学运算的程序。0100 整数加减乘除四则运算,如结果为小数四舍五入保留小数点后两位。根据输入题数出题,题目应为随机,每次应不一样。判断是否正确,如不正确给出正确答案,并计算分数,分数为正确题目的百分比(四舍五入取整数)。1.1.2用户界面
14、1)初始页面2)答题页面名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 37 页 -3)点击下一题按钮名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 37 页 -4)点击提交,最终得分1.2 程序设计说明1.2.1使用工具开发工具:VS2017 语言:c#应用类型:windows 窗体应用1.2.2关键算法说明1)产生随机数。使用Random 变量。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 37 页 -2)四舍五入。ans=(int)(temp3+0.5)。1.2.3数据结构说明属性描述num 题数(int)cnt 当前题号(int)rig
15、ht 正确题数(int)ratio 正确率(float)num1 运算数 1(int)num2 运算数 2(int)num3 运算数 3(int),仅用于除法,保证不为0 cal 运算符(int),取 1-4,对应四种运算ans 运算结果(int),长除法运算结果是四舍五入为整数方法描述privatevoid exam(int n)出题,第 n 题privatevoid button2_Click(object sender,EventArgs e)单击确认按钮触发,判断正误,显示结果privatevoid button3_Click(object sender,EventArgs e)单击下
16、一题触发,出题,清除上一题痕迹privatevoid button4_Click(object sender,EventArgs e)单击提交出发,计算得分1.2.4关键算法描述出题方法1.privatevoid exam(int n)/第 n 题2.3.Random rand=new Random();4.num1=rand.Next(100);/随机生成 0-100 运算数 1 5.num2=rand.Next(100);/随机生成 0-100 运算数 2 6.num3=rand.Next(10);/随机生成 1-10 运算数 3(防止除数为零)7.while (num3=0)num3=r
17、and.Next(10);8.cal=rand.Next(4);/随机生成运算符9.switch(cal)10.11.case 0:/加法12.ans=num1+num2;13.textBox2.Text=num1+num2+=;14.break;15.case 1:/减法16.ans=num1-num2;17.textBox2.Text=num1+-+num2+=;18.break;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 37 页 -19.case 2:/乘法20.ans=num1*num3;21.textBox2.Text=num1+*+num3+=;22.brea
18、k;23.case 3:/除法24.temp1=num1;25.temp2=num3;26.temp3=temp1/temp2;27.ans=(int)(temp3+0.5);/除法结果四舍五入为整数28.textBox2.Text=num1+/+num3+=;29.break;30.31.textBox3.Text=n.ToString();32.33.1.3设计总结1.3.1性能评价优点:设计简单,流程式设计。缺点:不能同时显示全部题目。四健康计算器1.1 功能说明1.1.1总体功能说明用户输入性别,身高,体重,腰围,即可计算BMI 指数和体脂率,并显示健康建议。1.1.2用户界面名师资料
19、总结-精品资料欢迎下载-名师精心整理-第 14 页,共 37 页 -1.1.3使用方法输入参数,点击“开始计算”按钮。1.2 程序设计说明1.2.1使用工具开发工具:VS2017 语言:c#应用类型:windows 窗体应用1.2.2程序流程图1.2.3数据结构说明2属性描述sex 性别(int),1-男,0-女height 身高/m(double)weight 体重/kg(double)waist 腰围/cm(double)bmi bmi 指数(double)fat 肥胖值(double)fatrate 肥胖率(double)方法描述privatevoid button1_Click(obj
20、ect sender,EventArgse)执行函数,将计算各个指数并给出建议1.2.4 关键算法描述1.privatevoid button1_Click(object sender,EventArgs e)2.3.int flag=0;4.try5.6.height=Convert.ToDouble(textBox1.Text);/输入字符串类型转换为整型7.8.catch9.输入参数输出结果调用方法进行计算点击按钮动作触发名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 37 页 -10.textBox1.Text=输入错误 ;/如果输入数据类型于预期不符,则显示“输入错误
21、”11.flag=1;12.13.try14.15.weight=Convert.ToDouble(textBox2.Text);16.17.catch18.19.textBox2.Text=输入错误 ;20.flag=1;21.22.try23.24.waist=Convert.ToDouble(textBox3.Text);25.26.catch27.28.textBox3.Text=输入错误 ;29.flag=1;30.31.32.bmi=weight/(height*height);33.34.if (sex=1)35.fat=waist*0.74-(weight*0.082+34.8
22、9);36.elseif (sex=0)37.fat=waist*0.74-(weight*0.082+44.74);38.fatrate=fat/weight*100;39.40.int bmiint=(int)(bmi);41.int fatrateint=(int)(fatrate);42.43.while (flag=0)/如果没发生错误,显示结果44.45.textBox4.Text=bmiint.ToString();46.textBox5.Text=fatrateint.ToString();47.if (bmi 18.5)textBox6.Text=体重过低,多饮食,多锻炼;4
23、8.elseif (bmi 24)textBox6.Text=体重正常,保持健康生活状态;49.elseif (bmi n)15.16.i=m;17.m=n;18.n=i;19.i=1;20.21.m-=1;22.n-=1;23.double temp=new double m+1n+1;24.if(i=0)25.26.for(i=0;i=m;i+)27.28.for(j=0;j=n;j+)29.30.tempij=Matrixij;31.32.33.34.35.else36.37.for(i=0;i=m;i+)38.39.for(j=0;j=n;j+)40.41.tempij=Matrixj
24、i;42.43.44.45.if(m=0)46.47.i=0;48.while(i=n)49.50.if(Matrix0i!=0)51.52.return 1;名师资料总结-精品资料欢迎下载-名师精心整理-第 34 页,共 37 页 -53.54.i+=1;55.56.return 0;57.58.double error0;59.if(error_=-1)60.61.error0=Math.pow(0.1,10);62.63.else64.65.error0=Math.pow(0.1,error_);66.67.i=0;68.while(i=m)69.70.j=0;71.while(j=n)
25、72.73.if(tempij!=0)74.75.error0*=tempij;76.i=m;77.break;78.79.j+=1;80.81.i+=1;82.83.double error1;84.for(i=0;i=m;i+)85.86.j=0;87.while(j=n)88.89.if(tempij!=0)90.91.break;92.93.j+=1;94.95.if(j=n)96.名师资料总结-精品资料欢迎下载-名师精心整理-第 35 页,共 37 页 -97.i1=0;98.while(i1=m)99.100.if(tempi1j!=0&i1!=i)101.102.temp1=te
26、mpij/tempi1j;103.error1=Math.abs(tempij-tempi1j*temp1)*100;104.error1+=error0;105.for(j1=0;j1=n;j1+)106.107.tempi1j1=tempij1-tempi1j1*temp1;108.if(Math.abs(tempi1j1)error1)109.110.tempi1j1=0;111.112.113.114.115.i1+=1;116.117.118.119.120.i1=0;121.for(i=0;i=m;i+)122.123.for(j=0;j=n;j+)124.125.if(tempi
27、j!=0)126.127.i1+=1;128.break;129.130.131.132.return i1;133.1.3.设计总结1.3.1.性能评价优点:可以完成各项功能,算法正确且简洁。名师资料总结-精品资料欢迎下载-名师精心整理-第 36 页,共 37 页 -缺点:用户界面操作略为繁琐。七.实习心得通过本次实习,我将一年多来所学知识充分发挥与应用,这几道题采用了多种工具,包括 myeclipse,viisual studio,scratch,使用了等多种语言,涵盖了c#,java,scratch(积木式语言)。其中 c#没有系统学习过,但是据我的理解其语法与c+类似,数据结构与java 类似,是面向对象的程序设计。因此,学习起来有可以遵循的规律。我的成果我认为不是很满意,可提高的空间很大,例如有些算法可以改进,有些界面可以做得更加容易使用。由于时间原因,没有跟更进一步学习和修改,的确是一种遗憾。但是,这次经历难能可贵,我不禁对编写程序更加熟练,也拓宽了视野,了解了各种解决问题的办法,并且提高了调试和解决实际问题的能力。我会学以致用,将这种广泛学习的习惯个贯穿于各个学科的学习中。名师资料总结-精品资料欢迎下载-名师精心整理-第 37 页,共 37 页 -
限制150内