読者です 読者をやめる 読者になる 読者になる

txtファイルの処理(データ更新、修正)JAVA,Python

①旧社員マスタ(olddata.txt)

1010 山本孝太郎      00128000
1011 田所勉          00158900
1020 山本貴宏        00235800
1021 吉田博美        00189000
1022 白石昌弘        00178900
1024 菊地英明        00167800
1025 坂本栄一        00189000
  ②基本給変更データ(changedata.txt)

1010 00138000
1012 00162000
1020 00245800
1021 00195000
1023 00186000
1024 00179800

Java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> number=new ArrayList<>();
        ArrayList<String> name=new ArrayList<>();
        ArrayList<String> payment=new ArrayList<>();
        HashMap<String,String> newpayment=new HashMap<>();
        HashMap<String, String> numname=new HashMap<String, String>();
        HashMap<String, String> numpayment=new HashMap<String, String>();
        ArrayList<String> newnumber=new ArrayList<>();
        try{
            File oldfile=new File("E://programtrain//olddata.txt");
            BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(oldfile),"Unicode"));
            String line;

            while((line=reader.readLine())!=null){
                String words[]=line.split("[\\s]+");//空白が何個でも分ける
                number.add(words[0]);
                name.add(words[1]);
                payment.add(words[2]);
                numname.put(words[0], words[1]);
                numpayment.put(words[0], words[2]);
            }
            
            
        }catch(FileNotFoundException e){
            System.out.println(e);
        }catch(IOException e){
            System.out.println(e);
        }
        
        try{
            File newfile=new File("E://programtrain//changedata.txt");
            BufferedReader newreader=new BufferedReader(new InputStreamReader(new FileInputStream(newfile),"Unicode"));
            String line;
            while((line=newreader.readLine())!=null){
                String words[]=line.split("[\\s]+");
                newpayment.put(words[0], words[1]);
                    newnumber.add(words[0]);
                
                
            }
            
        }catch(FileNotFoundException e){
            System.out.println(e);
        }catch(IOException e){
            System.out.println(e);
        }
        
        System.out.println("        社員マスタ更新");
        System.out.println("番号"+" "+"氏名"+"        "+"旧基本給"+" "+"新基本給");
        int numberlength=number.size();
        
        for(int i=0;i<number.size();i++){
            if(newnumber.contains(number.get(i))==false){
                newnumber.add(number.get(i));
            }
        }
        Collections.sort(newnumber);

            
        for(int i=0;i<newnumber.size();i++){
            if(numname.containsKey(newnumber.get(i))){
                if(newpayment.containsKey(newnumber.get(i))){
                    System.out.println(newnumber.get(i)+" "+numname.get(newnumber.get(i))+" "+numpayment.get(newnumber.get(i))+" "+newpayment.get(newnumber.get(i))+" "+"更新");
                }else{
                    System.out.println(newnumber.get(i)+" "+numname.get(newnumber.get(i))+" "+numpayment.get(newnumber.get(i))+" "+numpayment.get(newnumber.get(i)));
                }
            }else{
                System.out.println(newnumber.get(i)+" "+numname.get(newnumber.get(i))+" "+numpayment.get(newnumber.get(i))+" "+newpayment.get(newnumber.get(i))+" "+"更新");
            }
        }

    }
    
    public static void loadFile(String filename){
        
    }
    

}

Python

from  texttable import Texttable
numName={}
numPay={}
newnumPay={}
newnumName={}
f=open("olddata.txt","r",encoding="utf-8-sig")
lines=f.readlines()
for line in lines:
    wordlist=line.split(" ")
    newwordlist=[]
    for word in wordlist:
        if(word!=""):
            newwordlist.append(word.strip())
    numName.update({newwordlist[0]:newwordlist[1]})
    numPay.update({newwordlist[0]:newwordlist[2]})
cf=open("changedata.txt","r",encoding="utf-8-sig")
clines=cf.readlines()
for line in clines:
    wordlist=line.split(" ")
    newnumPay.update({wordlist[0].strip():wordlist[1].strip()})
numPay.update(newnumPay)
snumPay=sorted(numPay.items())
table=Texttable()
header=['番号','氏名','旧基本給','新基本給']
table.header(header)
for tp in snumPay:
    if tp[0] in numName:
        table.add_row([tp[0],numName[tp[0]],numPay[tp[0]],tp[1]])
    else:
        table.add_row([tp[0],"NULL","NULL",tp[1]])
print(table.draw())
cf.close()

プロジェクトマネジメント(トラッキングとコントロール)

ITプロジェクトのトラッキングとコントロール

 プロジェクトの状況と実績を的確かつ継続的に把握し、計画からの乖離や逸脱に対して適切な対策を講じるための管理プロセスである。

  • 品質のトラッキング
    1. 品質マネジメント:当該プロジェクトが所期の要求を満足していることを保証するために必要な一連の業務プロセス
      1. 品質計画
      2. 品質保証
  • 品質管理
  1. システムの品質
    1. 機能性
    2. 信頼性
  • 使用性
  1. 効率性
  2. 保守性
  3. 移植性
  1. 品質管理計画
    1. 品質管理の目的と方法
    2. スケジュール
  • 品質管理の組織、体制
  1. ウォークスルー、インスペクションの方法
  1. 問題管理
    1. 問題管理の機能
      1. 問題報告書
      2. 変更管理
      3. 問題解決の評価
      4. 再発防止
    2. 問題管理のツールと技法
      1. パレート図
      2. 特性要因図(フィッシュボーン、石川図)
    3. 変更管理
  • 進捗のトラッキング
  • コストのトラッキング
  • リスクのトラッキング
  • 計画とのギャップの要因分析
  • 対策の立案と実施
  • レポーティング
  • ウォークスルー
    1. 机上シミュレーション
    2. 少人数、短時間で効率的な運営
    3. 開発者自身が参加メンバーの選定も含めて、自主的に招集
  • ウォークスルーの目的
    1. 欠陥の早期発見と除去
    2. 設計段階、作成段階での品質の作りこみ
  • ウォークスルーの対象物
    1. DFD、データ正規化結果、ER図、データ、ディクショナリ
    2. 外部入出力仕様、DB仕様、処理機能記述、モジュール構造
    3. 各種作業手順書
    4. プロトタイプ
  • ウォークスルーの実施時期
    1. 作業の立ち上がり時点をはじめとして、作業段階で適宜実施
    2. 作成者自身による点検終了後、または、作業が壁にぶつかったときなど、数日以内に実施
  • EVM
    1. SV=EV-PV=-100 CV=EV-AC=-160
    2. SPI=EV/PV CPI=EV/AC

予測コスト=元総コスト/CPI 予測期間=元総期間/SPI

プロジェクトマネジメン(プロジェクト計画)

プロジェクト計画(統合マネジメント)

  • 近代的品質管理のコンセプト:DTRTRTFT
    1. Do The Right Thing Right The First Time
    2. 最初から正しく行えばより簡単により低コストでできる
  • ITプロジェクトマネジメントの技術体系
    1. 計画
    2. ラッキングとコントロール
    3. リスク管理
    4. 契約管理
  • ITプロジェクト計画
    1. プロジェクト目標明確化
      1. 対象システムとその目標
      2. コミットメント(約束事項)
  • スコープ(範囲と内容)
  1. ディペンデンシー(他に依存する事項)
  1. 問題の最適化
  2. 見積もりとリスクの定量化
  3. WBSとスケジューリング
  4. 文章化計画
  5. 組織要員計画
  6. 教育計画
  7. 品質管理とテスト計画
  • RAD(Rapid Application Development):
    1. 少数精鋭チームで開発、エンドユーザーが前段階に参画
    2. タイムボックス開発:小部分に分割し、その1つ1つを期間を限定して開発
  1. インクリメンタル(増殖型開発)
  2. イタラティブ(繰り返し型開発)
  3. クリーンルーム
  • スパイラル
  • ラウンドトリップ(オブジェクト指向でのスパイラル)
    1. 大規模開発全体にこれを闇雲適用すると、いつまでも開発が収束せずに失敗するケースが多いので十分な注意が必要
  1. RUP(Rational Unified Process):繰り返し型、ユースケース駆動、コンポーネント指向
  2. アジャイルソフトウェア開発:インクリメンタル、人間重視、XP
  3. 4つのフェーズ:要求計画、ユーザー設計、製作、カットオーバー
  • 強力な自動化ツール
  • プロトタイプの活用
  • 開発方針作成の手順
    1. 開発方法論と工程の定義を行い、開発工程全体を管理可能な適切な局面へと分割する
    2. 各局面に要求される入出力成果物、開始完了基準を定義する。
    3. 開発全体を通してどのように品質を作りこんでいくかを検討し、品質管理計画としてまとめる
  • 開発工程の決め方
    1. 全体の大きな対象(人数>=7)の時は、全体の整合性をとるための「要件定義」局面を、すべての工程の最初におく。
    2. 手作業によるプログラミングが入らない方法を検討し選定する。
    3. 要件定義において、DFD,ERDを作成する
    4. 外部設計以降を非局面できるのは、つぎのいずれかである。
      1. 小規模、要員少、プログラミング極小
  • ソフトウェア開発見積もり手法
    1. ステップ数に基づく方法
    2. Dotyモデル(小規模向け)
    3. COCOMOモデル(中大規模)
      1. 組織モード
      2. 半組み込みモード
  • 組み込みモード
  1. Putnamモデル(大、特大規模)
  2. ファンクションポイント法
    1. FP=A*C(A:調整前ファンクションポイントC:システム特性係数)
    2. システム特性係数(C)=0.65+(0.01*B)
  1. PERT
  2. マスタースケジュールの作成手順
  1. WBS(Work Breakdown Structure):プロジェクトに必要な作業を、計画の進展に応じてブレークダウン
    1. 具体的な作業スケジューリングと進捗管理が可能な単位まで詳細化
    2. WBSは、当初は大まかなタスク定義でよいが、当該作業の着手時点までには、極力5人日以内のタスクにまでブレークダウン
  • WBS作成の目的:
    1. プロジェクトの作業構成、範囲作業責任を明確化
    2. コスト見積もりとコスト分析のための基本データを提供
    3. スケジューリングと実績把握を容易化
  • 組織計画:
    1. 文書化計画
    2. 組織計画:
      1. 組織構造
        1. 機能型組織
        2. プロジェクト組織
        3. マトリックス組織複合型組織:
          1. プロジェクトマネジャーはプロジェクト達成の権限と責任を割り当てられるが、プロジェクトの実行は既存組織形態に依存
          2. 専任のプロジェクトマネージャーと既存機能組織に属したメンバー構成
        4. プロジェクトの組織計画:
          1. プロジェクト組織内における役割、責任、報告関係を識別し、それを文書化して任命するプロセス
        5. 要員計画
        6. 教育計画

プロジェクトマネジメント(概説)

プロジェクトマネジメント:

  • PMI(Project Management Institute):米国ペンシルバニア州アッパーダービーに本部を置くプロジェクトマネジメント技術の研究、情報交換、啓蒙を目的とした団体。
  • PMBOK(Project Management Body of Knowledge):PMIが作成したプロジェクトマネジメント知識体系
  • プロジェクトとは
    1. 独自の成果物やサービスを創出するための有期活動。
    2. 特性:
      1. 有期性:プロジェクトには明確な開始時点と終結時典がある。
      2. 成果物やサービスの独自性:請負では「成果物特性の段階的な具体化」と「プロジェクトスコープの定義」との整合性が肝要
    3. 定常活動との区別:
      1. 定常活動:継続性反復性
    4. 特徴:
      1. 人により遂行される
      2. 使用資源の制約がある
  • 計画され遂行され管理される
  • プロジェクトマネジメントとは
    1. PMBOK GUIDE定義:「プロジェクトの事業主体やほかのステークホルダー(利害関係者)の当該プロジェクトに対する要求事項や期待を充足する、またはそれ以上の成果を上げるために、最適な知識、技術、ツールそして技法を適用すること」
    2. 現代の定義:
      1. プロジェクト:特定の目的遂行のために、定まった期間、資源で実施される仕事。成果物は独自性を持ち、仕事全体反復性がない
      2. プロジェクトマネジメント:関係者のニーズと期待を満たすため、プロジェクト活動に知識、スキル、ツール、技法を適用すること。
  • プロジェクトマネジメントの知識エリア:
    1. 統合マネジメント
    2. スコープマネジメント
    3. タイムマネジメント
    4. コストマネジメント
    5. 品質マネジメント
    6. 人的資源マネジメント
    7. コミュニケーションマネジメント
    8. リスクマネジメント
    9. 調達マネジメント
    10. ステークホルダマネジメント
  • PMの4大要素:
    1. Q:Quality
    2. C:Cost
    3. D:Delivery
    4. R:Risk
  • 主な一般マネジメントのスキル
    1. リーダーシップ
    2. コミュニケーション力
    3. ネゴシエーション力(交渉力)
    4. 問題解決力
    5. 組織に対する影響力

入力数字とその種類を表示するJAVA,C++

1から10までの乱数を10回発生させ、その結果を表示し、そのあとに、そこで出力された文字の種類を表示するプログラム

JAVA

import java.util.*;
public class Main {

    public static void main(String[] args) {
        
        Set<Integer> numSet=new HashSet<>();
        ArrayList<Integer> numList=new ArrayList<>();
        for(int i=0;i<10;i++){
            Random ran=new Random();
            int n=ran.nextInt(10);
            numSet.add(n);
            numList.add(n);
            
        }
        
        Iterator<Integer> litr=numList.iterator();
        while(litr.hasNext()){
            System.out.print(litr.next());          
        }
        System.out.println();
        Iterator<Integer> itr=numSet.iterator();
        while(itr.hasNext()){
            System.out.print(itr.next());
        }
    }

}

C++:

#include "stdafx.h"
#include<iostream>
#include<set>
#include<list>
#include<random>

using namespace std;
int main()
{
    set<int> numset;
    list<int> numlist;
    for (int i = 0; i < 10; i++) {
        std::random_device rnd;
        std::mt19937 mt(rnd());//mt19937型オブジェクトをデフォルト構築した場合、10000番目に生成される擬似乱数の値は4123659995であること。
        uniform_int_distribution<int> dice(0,10);//一様分布生成器 uniform distribution 
        //std::uniform_real_distribution<double> score(0.0,10.0);->0.5,5.3.....
        int n = dice(mt);
        numset.insert(n);
        numlist.push_back(n);
    }

    for (list<int>::iterator itr = numlist.begin(); itr != numlist.end(); itr++) {
        cout << *itr ;
    }
    cout << endl;
    for (set<int>::iterator itr = numset.begin(); itr != numset.end(); itr++) {
        cout << *itr;
    }
    cout << endl;
    return 0;
}