得分計算最新

2021-09-02 16:30:53 字數 4512 閱讀 3459

#!/usr/bin/perl

# program : estimatescore.pl 計算評分卡的得分

# scrpition: 執行本資料字段批量檢查需要以下幾個步驟

# version :

use strict;#對語法做嚴格限制,如變數必須先用my宣告

use dbi;

use time::local;

my $dbh;#與資料庫的連線

my @fieldrow;

# my $logfile;

# #日誌檔案目錄

# #乙個大於號,表示覆蓋原有檔案的內容

# #兩個大於號表示在原有檔案內容之後新增

# my $lfnowtime =getnowtime();

# open $logfile,">checklog$lfnowtime.txt";

# select $logfile;

#連線td資料庫

sub tdconnect()else;$i++)else{

# 當前節點的葉子子節點

" inner join estimate_group eg on ec.folder_id='$child_folder_id' ".

" and ec.org_id='$orgid' and rundate = date'$rundate' ";

my $leafsth = $dbh->prepare($leafscoresql) or  return -1;

$leafsth->execute() or return -1;  

my @fieldrow = $leafsth->fetchrow();

my $s = "$fieldrow[0]";

my $ms = "$fieldrow[1]";

print("leaf node: $child_folder_id ,score :$s  \n");

$currnodescore += $s ;

$maxscore += $ms;

$leafsth ->finish();

" where folder_id = $curr_folder_id";

my $insertnodesth = $dbh->prepare($insertnodescoresql) or return -1;

$insertnodesth  ->execute() or return -1;

$insertnodesth ->finish();

$nodesth->finish();

print("-------------------------------calnodescore  end  ---------------------------\n");

return $currnodescore."#".$maxscore;

#計算評分卡值得入口

sub calcardscore{

print("--------------------------------calcardscore begin --------------------------\n");

my ($nodeid,$rundate,$orgid) = @_;

my $cardscorestr = calnodescore($nodeid,$orgid,$rundate);#通過呼叫遞迴的計算節點的得分,最終求得評分卡最終的得分

my @cardscorearr = split("#",$cardscorestr);

my $cardscore = @cardscorearr[0];

my $cardscoremax = @cardscorearr[1];

" where folder_id='$nodeid' and status='1' ";

my $cardscoresth = $dbh->prepare($cardscoreinsert) or return -1;

$cardscoresth ->execute() or return -1;

$cardscoresth->finish(); 

print("--------------------------------calcardscore end   --------------------------\n");

sub main{

print (getnowtime()."--------------------------------------------main begin--------------------------------------------\n ");

#得到資料庫連線----td庫連線

tdconnect();

#預設計算規則檢查結果表最新檢查日期的評分結果

my $rundatesth = $dbh->prepare($rundatesql) or return -1;

$rundatesth ->execute() or return -1;

my @fieldrow = $rundatesth->fetchrow();

my $rundate = "$fieldrow[0]";

$rundatesth ->finish();

#如果有傳入日期引數,以傳進來的日期引數為準,從而實現手工排程或者按需排程

if($#argv==0){

$rundate = $argv[0];

my $deletehistorysth = $dbh ->prepare($deletehistory) or return -1;

$deletehistorysth ->execute() or return -1;

$deletehistorysth ->finish();

print("deletehistory : succeed  \n");

print("rundate : $rundate  \n");

my $cardinfosth = $dbh ->prepare($cardinfo) or return -1;

$cardinfosth->execute() or return -1;

while(my @fieldrow = $cardinfosth->fetchrow()){

my $cardid = "$fieldrow[0]";

#結果表裡可能包括所有的機構,包括四級機構,但是實際計算時只需到分支行

#規則檢查結果的最新表,有機構存在才計算對應的得分

" on org_id = branch_id and branch_level<=3 ".

"where rundate= date '$rundate'";

my $getorgsth = $dbh->prepare($getorg) or return -1;

$getorgsth ->execute() or return -1;

while(my @fieldrow = $getorgsth->fetchrow()){

my $branchid = "$fieldrow[0]";

#遞迴計算樹形節點的得分,並插入到estimate_card_score樹形節點得分資訊表中

calrulescore($cardid,$rundate,$branchid);

calleafnodescore($cardid ,$rundate,$branchid);

calcardscore($cardid ,$rundate,$branchid);#引數為使用者的輸入節點id

$getorgsth ->finish();

print (getnowtime()."--------------------------------------------main end --------------------------------------------\n ");

sub getnowtime{

my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime(); 

$hour = sprintf("%02d", $hour);

$min  = sprintf("%02d", $min);

$sec  = sprintf("%02d", $sec);

my $stime = getnowdate()." ".$hour.":".$min.":".$sec;

return $stime;

#找到當前的日期,月份要加1,年份是從1900開始算的

sub getnowdate{

my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime(); 

$mon = sprintf("%02d", $mon+1);

$day = sprintf("%02d", $day);

my $stime = ($year+1900)."-".$mon."-".$day;

return $stime;

my $rc = main();#函式的入口

exit($rc);

計算選手最後得分二

1.5.檔名稱 7.完成日期 2013年 11月14日 8.版本號 v0.1 9.對任務及求解方法的描述部分 10.輸入描述 無 11.問題描述 12.程式輸入 13.程式輸出 14.問題分析 15.演算法設計 去掉乙個最高分,乙個最低分,其餘數的平均值就是該選手最後得分。16.17.我的程式 in...

計算歌手的最後得分一

1.5.檔名稱 7.完成日期 2013年 11月13日 8.版本號 v0.1 9.對任務及求解方法的描述部分 10.輸入描述 無 11.問題描述 12.程式輸入 13.程式輸出 14.問題分析 15.演算法設計 16.17.我的程式 include using namespace std doubl...

SPSS得出因子後怎麼計算綜合得分

因子分析只是乙個基礎的工作,因子得分不是因子分析的最終結果,因子得分可以作為變數進行回歸分析 聚類分析 計算因子的綜合得分等等。因子綜合得分在因子得分的後續運用中很是重要。沒有必要在excel中建立計算公式,spss的功能很強大,操作見。計算出後,可一再建立乙個 排序 變數,按降序方法來排序。根據因...