zoukankan      html  css  js  c++  java
  • 科技创新项目小程序设计(5)

    小程序的按工作输入,延隔时间功能在12月8日就完成,后来想完成每日的资源统计功能,但一直没有idea。现在先把代码放上来啦。

    数据输入方式:
    在bin文件目录下一个叫“WorkTable.txt”中输入
    格式为:
    工作序号;工作名称;工作持续时间;前续工作的序号(用“,”隔开,即使只有一项也加上“,”);延隔时间;占用资源

    运行效果:
    在bin文件目录下一个叫“WorkTable.txt”中输入:
    1;A;10;0,;0;12
    2;B;10;1,;0;23
    3;C;20;1,;0;44
    4;D;30;1,;0;66
    5;E;20;2,;0;7
    6;F;20;3,;0;4
    7;G;30;4,;0;56
    8;H;30;5,;0;12
    9;I;50;7,;0;33
    9;I;50;6,;15;55
    10;J;10;8,9,;0;23
    8;H;30;6,;10;12

    运行结果(控制台输出)
     工作编号  工作名称  最早开始时间  最晚开始时间  持续时间
     1  A  0  0  10
     2  B  10  60  10
     3  C  10  15  20
     4  D  10  10  30
     5  E  20  70  20
     6  F  30  35  20
     7  G  40  40  30
     8  H  60  90  30


    对象结构:(成员变量皆为private,而由相应的属性进行操作)
       Program.cs:含有main方法,读取用户输入,调用处理,输出
       Vertex.cs:顶点类,储存工作信息。
    class Vertex
        {
            
    //顶点的结构变量
            private Hashtable _preVerIdSet;//用HashTable结构记录前工作,key为工作的id,value为延隔时间
            private ArrayList _nextVerIdArr;

            
    //顶点的信息变量
            private int _verId;
            
    private string _workName;
            
    private int _esTime;
            
    private int _lfTime;
            
    private int _duration;
            
    private int _resource;
            
    private int _freeF;
            
    private int _totalF;
    }
       Network:网络图类,定义图相关的基本操作
    class Network
        {
            
    private Hashtable _vertexSet;
            
    private ArrayList _dailyResourceArr;

            
    public Network()
            
    public Vertex GetVertex(object vertexId)
            
    public int[] CountInDegree(Network network)
            
    public bool IsExistVertex(Vertex v)
            
    public void AddVertex(Vertex v)
            
    public void DeleteVertex(Vertex v)
        }
       NetworkOperator:定义对网络图的复杂操作,包括拓扑排序,时间计算等
    class NetworkOperator
        {
            
    //初始化网络,建立网络图的储存结构
            public Network InitializeNetwork(ArrayList workList,int totalWork)
            
    //给网络图的所有顶点的最早时间赋值,并找出关键路径
            public Stack CalculateVerEarTime(Network network)
            
    //给网络图的所有顶点,边的最晚时间赋值
            public void CalculateVerLatTime(Network network)
            
    //给网络图的所有边的时间差赋值
            public void CalculateTimeDiff(Network network)
            
    //显示各工作相关信息
            public void GetResult(Network network)
        }



    完整的代码:
    Program.cs
    Vertex.cs
    Network.cs
    NetworkOperator.cs

  • 相关阅读:
    reids学习redis的五种基本数据类型
    CentOS下配置Java开发环境安装redis
    CentOS下配置Java开发环境安装Tomcat
    如何去除掉inlineblock元素之间的默认间距
    js按值传递还是按引用传递?
    overflow: hidden用法,不仅仅是隐藏溢出
    关于WinForm中的DataGridView控件显示数据字典的解决方案。
    C#中对Winform中的DataGridView的控制技巧。(单独控制某单元格的按钮不显示、某单元格的ReadOnly)
    改进版网页表格的合并单元格(支持不连续的列合并)
    [共享]MT随机算法(符合正态分布的随机算法)
  • 原文地址:https://www.cnblogs.com/alonecat06/p/996601.html
Copyright © 2011-2022 走看看