数据结构实验1_第1页
数据结构实验1_第2页
数据结构实验1_第3页
数据结构实验1_第4页
数据结构实验1_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

云南大学软件学院 数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助) 实验难度: A B C 序号学号姓名成绩123指导教师 (签名)学 期: 2014秋季学期 任课教师: 实验题目: 抽象数据类型设计与实现 小组长 : 联系电话: 电子邮件: 完成提交时间: 年 月 日云南大学软件学院2010学年 秋季 学期数据结构实验成绩考核表学号: 20111120065 姓名: 俞辉 本人承担角色: B难度实验任务 评分项目评分指标分值得分实验构思(10%)1. 实验目的明确52. 实验内容理解透彻、对实验所涉及到的知识点分析到位5实验设计(15%)1. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 53.算法结构和程序功能模块之间逻辑清晰、有相应的流程图5实验实现(25%)1. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确153. 界面友好、易于操作、有较强的容错性5实验报告撰写(10%)1. 内容详实无缺漏,文字流畅、图表清楚52. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考5个人工作量(30%)1. 个人完成工作量152. 个人技术水平103. 团队合作精神5实验运作(10%)1. 有一定用户群52. 应用前景分析5综合得分: (满分100分)指导教师: 年 月 日(注:此表在难度为C时使用,每个成员一份。)(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)我们小组运用到了以下的知识:基本思路:先写控制台程序,保证算法的正确性后,再将程序封装成界面程序;程序设计:用结构体定义复数的数据结构。数学知识:清空textbox的text的操作通过pressdown事件和数据键值来控制输入的数据类型警告报错是通过点击事件中进行判定,如果用户输入被除数为0,则发出警告。二、【实验设计(Design)】(20%)(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)CpxNum其中定义复数的结构体,数据部分包括实部和虚部;而操作包括CPlus(加法)、CMinus(减法)、cmultiply(乘法)、cdivide(除法)等运算。1处理0-9数字 由用户自行输入2.+-*/的功能实现通过判断radiobutton的checked值1或0,在点击“计算”时采取不同的计算方式如果没有选择运算符号则不进行任何操作。显示结果 3.清零的实现定义“清零”按钮事件,点击事件为清空所有textbox来实现。5.防止文本框输入字符的实现通过修改textbox的keydown和keypress两个属性来实现。实现代码为:private: bool nonNumberEntered; / Handle the KeyDown event to determine the type of character entered into the control. void textBox1_KeyDown( Object /*sender*/, System:Windows:Forms:KeyEventArgs e ) / Initialize the flag to false. nonNumberEntered = false; / Determine whether the keystroke is a number from the top of the keyboard. if ( e-KeyCode KeyCode Keys:Decimal ) / Determine whether the keystroke is a number from the keypad. if ( e-KeyCode KeyCode Keys:NumPad9 ) / Determine whether the keystroke is a backspace. if ( e-KeyCode != Keys:Back ) / A non-numerical keystroke was pressed. / Set the flag to true and evaluate in KeyPress event. nonNumberEntered = true; /If shift key was pressed, its not a number. if (Control:ModifierKeys = Keys:Shift) nonNumberEntered = true; / This event occurs after the KeyDown event and can be used to prevent / characters from entering the control. void textBox1_KeyPress( Object /*sender*/, System:Windows:Forms:KeyPressEventArgs e ) / Check for the flag being set in the KeyDown event. if ( nonNumberEntered = true ) / Stop the character from being entered into the control since it is non-numerical. e-Handled = true; 在头文件中定义复数以及复数的四则运算,写出其基本代码,并进行声明,在源文件中对应地写出相应的运算代码,最后是单击运算符实现单击事件代码。在窗体中设计必须的对应的窗口,并且在事件代码中把窗口数据转化,运用源文件代码编辑计算。三、【实现描述(Implement)】(30%)(本部分应包括:抽象数据类型具体实现的函数原型说明、 关键操作实现的伪码算法、 函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)3.各子程序模块:清除按钮:用于重置除存储区外其他所有参数。运算符号按钮:用于更改操作符暂存器的值,以便后面的程序正常执行。“计算”按钮:根据已经输入的数值和运算符来判断输入是否合法,如合法就通过调用对应的子程序来给出正确结果,不正确就给出友好错误提示。输入实部输入虚部按钮:用于输入程序的各种等待运算的数据。4.时间复杂度分析:各个子程序的时间复杂度均为O(1).四、【测试结果(Testing)】(10%)(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结)首先对输入字母进行验证,结果失败对加,减,乘,除进行先检验,结果均正常,加法操作如下在加法原有计算结果的基础上使用继续键,然后再次进行一次额外的减(1+1i)计算,结果正常在此基础上使用归零键,结果正常,全部textbox的text清除令除数为0,进行运算,信息后的textbox输出You input a erro(截图失败,原因不明)四、【实验总结】(10%)(本部分应包括:自己在实验中完成的任务,注意组内的任意一位同学都必须独立完成至少一项接口的实现;对所完成实验的经验总结、心得)彭程:完成任务:(1)完成本实验程序大体初步代码,并协助李泰然同学加强本程序的健壮性和稳固性。 (2)实现“继续”按钮的合理人性化化功能。 实验总结:(1)初步了解了Windows窗体程序的设计和应用,对头文件作用,以及源文件中代码应用有了明确的认识,并且大体了解了窗体程序的结构,以及运行方式。 (2)学习了窗体程序中控件的使用,以及对事件的概念。 (3)学会了VS2010 C+集成开发环境中控件的属性应用。 实验心得:实验并不困难,初步确立程序方向很容易,困难的是对该程序的健壮性,稳固性的维护。同时明白,无论怎样的问题,只要提出,终究会有相对合理的解决方法。五、【项目运作描述(Operate)】(10%)(本部分应包括:项目的成本效益分析,应用效果等的分析。)项目运作正常,用户界面人性化,尽可能地防止用户输入不合理参数,可以正确执行,并算出输入参数后的正确结果。同时,视觉感官并不突兀,拥有比较不错的体验效果。复数的四则运算都能运行,效果良好,计算器设计一般。六、【代码】(10%)(本部分应包括:完整的代码及充分的注释。 注意纸质的实验报告无需包括此部分。格式统一为,字体: Georgia , 行距: 固定行距12,字号: 小五)例如:#include stdafx.h#include cpxNum.hint _tmain(int argc, _TCHAR* argv)cpxNum c1, c2;double real, imag;cout real imag;assign(c1, real, imag);cout 您生成的第一个复数是: ;print(c1);cout endl real imag;assign(c2, real, imag);cout 您生成的第二个复数是: ;print(c2);cout endl;cout *复数运算测试*endl;cout c1 + c2的结果是: ; print(cplus(c1, c2); cout endl; cout c1 - c2的结果是: ; print(cmilus(c1, c2); cout endl;cout c1 * c2的结果是: ; print(cmultiply(c1, c2); cout endl;cout c1 / c2的结果是: ; print(cdivide(c1, c2); cout endl;cout *复数运算测试结束*textBox1-Text=)|(this-textBox2-Text=)|(this-textBox3-Text=)|(this-textBox4-Text=) return; /判断输入用textbox是否为空,如果为空,不进行任何操作 if(this-radioButton1-Checked=0)&(this-radioButton2-Checked=0)&(this-radioButton3-Checked=0)&(this-radioButton4-Checked=0) return;/判断决定算法的四个radiobutton是否为空(即检测是否选择算法) double real1=System:Convert:ToDouble(this-textBox1-Text); double imag1=System:Convert:ToDouble(this-textBox2-Text); double real2=System:Convert:ToDouble(this-textBox3-Text); double imag2=System:Convert:ToDouble(this-textBox4-Text);/以上四行均为将textbox中字符型参数转化为double型参数。 assign(c1,real1,imag1); assign(c2,real2,imag2);/构成两个复数的结构体,分实部和虚部。 if( this-radioButton1-Checked=1) result=cplus(c1,c2);this-button3-Enabled=true; else if( this-radioButton2-Checked=1) result=cmilus(c1,c2); this-button3-Enabled=true; else if( this-radioButton3-Checked=1) result=cmultiply(c1,c2);this-button3-Enabled=true; else if( this-radioButton4-Checked=1) if(real2=0)&(imag2=0) this-textBox7-Text=You input a error;/判断除数是否为0,是则报错 else result=cdivide(c1,c2); this-button3-Enabled=true; /以上if语句均为判断radiobutton值来确定相应的算法,并激活“继续“按钮。 if( this-textBox7-Text=You input a error) return; else this-textBox5-Text=result._real.ToString(); this-textBox6-Text=result._imag.ToString(); /将结果由double型转化为字符串进行输出2)“清空”按钮事件: private: System:Void button2_Click(System:Object sender, System:EventArgs e) this-textBox1-Text=0; this-tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论