作业要求说明:

http://www.cnblogs.com/xinz/p/3441537.html

我在做一个什么样的应用:

展示如何逐步求解一个加权矩阵的

  1. 最大子矩阵
  2. 最大子联通图

下面是软件的截图

包含的基本功能:

  1. 从文件读入矩阵随机生成矩阵
    1. 本软件将保存最近使用的3个文件(若包含当前正在使用的文件,则为4个)
  2. 随机生成矩阵
    1. 可设置矩阵的大小,不超过10*10
    2. 超过10*10将导致anymaxsum步骤过多,而没有什么教学意义了。
  3. 播放
    1. 自动
      1. 随时调整播放间隔(播放中亦可)
    2. 手动
      1. 回退和下一步
    3. 重置
    4. 选择播放类型

结果展示:(包含一个矩阵和两个文本框)

  • 矩阵:用于显示详细步骤和状态(详细见软件)
  • 最大值(文本框):显示当前最大值
  • 当前值(文本框):显示当前选定值

应用设计语言和平台:

  • 语言:C#+XAML
  • 运行平台:.Net 4.0+ and 浏览器(IE9+)

什么工作占用了我比较大的时间?

GUI的设计

思考到底怎样的设计才能让初学者理解DP动态规划执行的过程和原理,而不是看着动画一闪而过,完全不明白整个过程是在做什么。

  1. 例子需简单,即矩阵不能包含过多的元素,4*4,5*5,6*6是可接受的值。
  2. 执行过程需可控,用户可以选择手动或者自动模式,自动模式下,播放速度可以调节。
  3. 每一个中间步骤需要有对应的解释说明,解释还需要贴合人们的思维模式,比如 a.红色代表错误 b.绿色代表可行。
  4. 用户大多数时候都在看算法执行的过程,因此初始值相关的GUI控件应该只占用小部分空间
  5. 【停止】,【播放】,【上一步】等等控件应该被设计的比较大,因为它们会被访问的更频繁。

下面是该软件的详细设计时遇到几个问题:

安全问题,浏览器文件访问权限

浏览器端的应用均运行于沙盒之中,所以浏览器无法直接使用使用文件选取器

解决办法

提升应用的权限,在属性中更改

如何将二维数组绑定到控件 DataGrid?

代码DataGrid

                    <DataGrid x:Name="dataGrid" ItemsSource="{Binding CollectionSource}" SelectionUnit="CellOrRowHeader" IsReadOnly="True"  MaxColumnWidth="100" MinColumnWidth="100" AutoGenerateColumns="True" CanUserResizeRows="False" CanUserSortColumns="False"  CanUserReorderColumns="False"  LoadingRow="dataGrid_LoadingRow" HorizontalAlignment="Center" VerticalAlignment="Center" AutoGeneratedColumns="dataGrid_AutoGeneratedColumns" AutoGeneratingColumn="dataGrid_AutoGeneratingColumn" Margin="0,0,0,30" FontSize="20" FontFamily="Segoe UI">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Background" Value="AliceBlue" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontSize" Value="20" />
</Style>
</DataGrid.ColumnHeaderStyle> </DataGrid>

PageSource

    <Page.Resources>
<DataTemplate x:Key="CellTemplate">
<TextBlock Background="{Binding Back}" Text="{Binding Value}" TextAlignment="Center" Foreground="White"/>
</DataTemplate> </Page.Resources>

首先,在PageSource 里面申明了一个CellTemplate,将DataGrid 每一个Cell 设置为 一个TextBlock

后台定义了一个类 item,包含元素 Back,Value

分别对应该TextBlock的Background和Text两个属性

定义了 一个 继承于 ObservableCollection<item> items 收集DataGrid每一行的数据

并定义了一个 ObservableCollection<items> CollectionSource,收集DataGrid所有行的数据

再在DataGrid代码里将 ItemsSource绑定到CollectionSource: [ItemsSource="{Binding CollectionSource}"]

后台算法

因在第三次作业中已经完成了这部分工作

所以这次作业,我只是在maxsum类中加入了两个属性:

并设置了访问器

在实体化maxsum类之后,便可以直接获取数据

 /// <summary>
/// 结果存储于下面两个list
/// result_maxsum 矩阵
/// result_any_maxsum 任意
/// </summary>
public List<step_detail> result_maxsum { get; set; }
public List<step_detail> result_any_maxsum { get; set; }

几个测试用例

完整代码:

https://github.com/11061027zsx/homework-09/

【现代程序设计】【期末作业】【homework-09】的更多相关文章

  1. SDN期末作业验收

    作业链接:https://edu.cnblogs.com/campus/fzu/SoftwareDefinedNetworking2017/homework/1585 负载均衡程序 1.github链 ...

  2. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  3. C语言程序设计第一作业

    C语言程序设计第一作业 实验总结 (一) 1.题目:输入圆的半径,求圆周长和面积 2.流程图: 3.测试数据及运行结果: 4.实验分析: 问题1: 出现了错误 原因:是在赋值那写反了 解决方法:应该是 ...

  4. # C语言程序设计第一次作业1234

    ---恢复内容开始--- C语言程序设计第一次作业 1.求圆面积和周长 输入圆的半径,计算圆的周长和面积 (1)流程图 (2)测试数据及运行结果 测试数据r=3 运行结果 2.判断闰年 输入一个四位年 ...

  5. SDN期末作业——负载均衡

    作业链接 期末作业 1.负载均衡程序 代码 2.演示视频 地址 3.小组分工 小组:incredible five 构建拓扑:俞鋆 编写程序:陈绍纬.周龙荣 程序调试和视频录制:陈辉.林德望 4.个人 ...

  6. SDN 期末作业验收

    前言 SDN 期末作业验收我们是采用的参考场景一,我们在此场景的基础上来做负载均衡,下面是我们搭建的拓扑图 演示视频 https://pan.baidu.com/s/1htkKLPM 负载均衡程序 相 ...

  7. [毕业设计][期末作业]二手闲置小程序 免费信息发布系统功能源码(小程序+php后台管理)

    最近做了一个小程序,主要是二手闲置免费信息发布系统的功能,里面包括了登录,发布商品,商品管理,违规投诉,canva商品海报生成,分享等一些基础的功能,可以说代码都是自己辛辛苦苦写出来的.可作为毕业设计 ...

  8. Week11《java程序设计》作业总结

    Week11<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 答: 2. 书面作业 本次PTA作业题集多线程 1. 源代码 ...

  9. week10《java程序设计》作业总结

    week10<java程序设计>作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:: 2. 书面作业 本次PTA作业题集异常 1. 常用异常 ...

  10. Python高级应用程序设计任务期末作业

    Python高级应用程序设计任务要求 用Python实现一个面向主题的网络爬虫程序,并完成以下内容:(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台) 一.主题式网络爬虫设计方案( ...

随机推荐

  1. UVa 11524 - InCircle

    推公式 #include <cstdio> #include <cmath> double Cal( double a, double b, double c ) { retu ...

  2. RegexOne

    http://regexone.com/ http://regexone.com/lesson/optional_characters? http://regexone.com/lesson/capt ...

  3. websocket webworker

    对我来说最快的学习途径是实践,所以找两个东西来练手.一个是websocket一个是webwoker,今天先说第一个. 要理解socket就要先理解http和tcp的区别,简单说就是一个是短链,一个是长 ...

  4. android gallery 自定义边框+幻灯片

    最近在项目中用到图片轮播,试了Gallery,ViewFlipper,ViewPager,感觉Gallery最符合需求,但是Gallery的系统边框很难看,项目中要求用自己的背景图片. 下面来看一下使 ...

  5. 试图从数据库 ‘UFData_001_2003' 中提取的逻辑页 (1:10720) 属于对象 '0',而非对象 'syscolumns'

    数据库可以使用,可以备份,但对备份进行恢复时报错,使用sp_attach_db对两个物理文件进行连接时,报同样错误: 服务器: 消息 605,级别 21,状态 1,行 1 试图从数据库 ‘UFData ...

  6. 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示

    说白了其实就是在html中前途flash的使用代码 <!--    html嵌入flash,检测浏览器是否安装flash插件,并提示安装.-->    <object type=&q ...

  7. cocos2d_x 问题汇总

    1.生成so文件时,报“No rule to make target ”错误 解决方法:将.\xxx[appname]\proj.android\obj\local\armeabi\objs中的文件全 ...

  8. Python用smtplib发送邮件

    参照了下面: 1. 先随便照着试试这个: http://blog.csdn.net/zhaoweikid/article/details/1638349 2. 这个写了一个很简洁的代码,看过NO.1就 ...

  9. 小技巧--让JS代码只执行一次

    有时候实在是没办法,就像我这个比赛系统中,有一个弹出框,这个弹出框之外都是模糊的(这是在ajax写出弹出框时,加了一个水印). 然而遇到的问题,也是蹊跷古怪,因为这个弹出框的事件是数据查询事件,但是因 ...

  10. iOS-利用AFNetworking(AFN 1.x)-实现文件断点下载

    转:http://www.kaifazhe.com/ios_school/380066.html 官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseU ...