平时记录保存

/**
 * Created by tangxx3 on 2014/9/1. E:\\free\\ams-freetraffic-parms-01.log\\ams-freetraffic-parms.log
 */
var fs=require('fs');
var typeForInf={},types=[];
var typeForPhone={};

var DirPath='E:\\free\\tongji\\';

var downPath='E:\\free\\down\\';
//啟動接口
doBiz();


function doBiz(){
//读取目录
fs.readdir(DirPath,function(err,files){
    if(err)
        console.log("read dir error");
    console.log(files);
    for(var i=0;i<files.length;i++){
        readLog(DirPath+files[i]);
    }
    //打印统计信息
    showStat();
});

};

function readLog(path){
    //读取文件
    var data=fs.readFileSync(path);
    //获取换行信息
    var dataArray=data.toString().split("\n");

    //获取有效信息
    var len=dataArray.length;
    var parms=[];
    var index;
    for(var i=0;i<len;i++){
        index=dataArray[i].indexOf('WARN  - ')+8;
        parms.push(dataArray[i].substring(index));
    }
    //统计信息
    stat(parms);
}
//
function stat(parms){
    var len=parms.length;
    for(var i=0;i<len;i++){
        var infos=parms[i].split(",");
        var type=infos[0];
        if(!typeForInf[type]){
            types.push(type);
            typeForInf[type]=1;
            typeForPhone[type]=new Array();
            typeForPhone[type].push(infos[5]);
        }else{
            typeForInf[type]=parseInt(typeForInf[type])+1;
            typeForPhone[type].push(infos[5]);
        }
    }
}

function showStat(){
    console.log('统计开始:');
    var len=types.length;
    for(var i=0;i<len;i++) {
        console.log(types[i] + ':' + typeForInf[types[i]]);
        if (types[i] == 'SUCCESS') {
            console.log("名单为:"+typeForPhone[types[i]].toString());
        }
    }
}


//统计成功数量、Phone、Activities


//统计失败的类别、次数



/**
 * Created by tangxx3 on 2014/9/1.
 */
var fs=require('fs');
var downPath='E:\\free\\down\\';

var activityIDs=[];  //活動下載了多少次
var activityInfo={};
var phoneN0s=[];    //用戶下了多少次
var phoneInfo={};

fs.readdir(downPath,function(err,files){
    if(err)
        console.log("read dir error");
    for(var i=0;i<files.length;i++){
        readLog(downPath+files[i]);
    }
    //打印统计信息
    showStat();
});
function readLog(path){
    var data=fs.readFileSync(path);
    var dataArray=data.toString().split("\n");
    var len=dataArray.length;
    var parms=[];
    var index;
    for(var i=0;i<len;i++){
        index=dataArray[i].indexOf('FreeTrafficValidateContext')+27;
        parms.push(dataArray[i].substring(index));
    }
    stat(parms);
}

function stat(parms){
    var len=parms.length;
    for(var i=0;i<len;i++){
        var infos=parms[i].split(",");
        var activityId=infos[0].split("=")[1];
        var phoneNo=infos[2].split("=")[1];

        //針對Activities
        if(!activityInfo[activityId]){
            activityIDs.push(activityId);
            activityInfo[activityId]=new Array();
            activityInfo[activityId].push(infos[4]);
        }else{
            activityInfo[activityId].push(infos[4]);
        }

        //針對phone
        if(!phoneInfo[phoneNo]){
            phoneN0s.push(phoneNo);
            phoneInfo[phoneNo]=new Array();
            phoneInfo[phoneNo].push(infos[4]);
        }else{
            phoneInfo[phoneNo].push(infos[4]);
        }
    }
}

function showStat(){
    //活動下載了哪些應用
    var len=activityIDs.length;
    for(var i=0;i<len;i++){
        var activityId=activityIDs[i];
        var lcaids=activityInfo[activityId];
        console.log("activityId:"+activityId+",下载总数:"+lcaids.length);
        console.log(lcaids.toString());
    }

    //用戶下載
    var len=phoneN0s.length;

    console.log("用戶數:"+len);
    for(var i=0;i<len;i++){
        var phone=phoneN0s[i];
        var lcaids=phoneInfo[phone];
        console.log("phone:"+phone+",下载总数:"+lcaids.length);
        console.log(lcaids.toString());
    }
}




下面是基于顺序表的学生成绩管理系统的C语言代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SUBJECTS 3 // 最大科目数量 #define MAX_STUDENTS 50 // 最大学生数量 #define MAX_NAME_LEN 20 // 最大姓名长度 // 学生信息结构体 typedef struct { char name[MAX_NAME_LEN]; // 学生姓名 float scores[MAX_SUBJECTS][2]; // 学生成绩(包括平时成绩和期末成绩) } student; // 全局变量 char subjects[MAX_SUBJECTS][MAX_NAME_LEN]; // 科目名称数组 float weights[MAX_SUBJECTS]; // 科目平时成绩占比数组 int student_count = 0; // 学生数量 student students[MAX_STUDENTS]; // 学生信息数组 // 函数声明 void create_student_record(); void input_subject_name(); void input_weights(); void input_scores(); void save_data(); void load_data(); void print_scores(); int main() { int choice; do { printf("1. 创建学生成绩记录\n"); printf("2. 输入课程名称\n"); printf("3. 输入平时成绩占比\n"); printf("4. 输入学生成绩\n"); printf("5. 保存数据到文件\n"); printf("6. 从文件读取数据\n"); printf("0. 退出程序\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: create_student_record(); break; case 2: input_subject_name(); break; case 3: input_weights(); break; case 4: input_scores(); break; case 5: save_data(); break; case 6: load_data(); break; case 0: printf("程序已退出。\n"); break; default: printf("无效的操作。\n"); break; } } while (choice != 0); return 0; } // 创建学生成绩记录 void create_student_record() { if (student_count < MAX_STUDENTS) { printf("请输入学生姓名:"); scanf("%s", students[student_count].name); printf("已创建学生 %s 的记录。\n", students[student_count].name); student_count++; } else { printf("学生数量已达到最大值,无法继续创建。\n"); } } // 输入课程名称 void input_subject_name() { for (int i = 0; i < MAX_SUBJECTS; i++) { printf("请输入第 %d 个科目名称:", i + 1); scanf("%s", subjects[i]); } } // 输入平时成绩占比 void input_weights() { for (int i = 0; i < MAX_SUBJECTS; i++) { printf("请输入科目 %s 的平时成绩占比(百分比):", subjects[i]); scanf("%f", &weights[i]); } } // 输入学生成绩 void input_scores() { char name[MAX_NAME_LEN]; printf("请输入学生姓名:"); scanf("%s", name); for (int i = 0; i < student_count; i++) { if (strcmp(name, students[i].name) == 0) { printf("请输入学生 %s 的成绩:\n", name); for (int j = 0; j < MAX_SUBJECTS; j++) { printf("%s(百分比 %.2f):平时成绩、期末成绩(用空格分隔):", subjects[j], weights[j]); scanf("%f %f", &students[i].scores[j][0], &students[i].scores[j][1]); } printf("已输入学生 %s 的成绩。\n", name); return; } } printf("找不到学生 %s 的记录。\n", name); } // 保存数据到文件 void save_data() { FILE *fp = fopen("scores.dat", "wb"); if (fp != NULL) { // 先保存科目名称和平时成绩占比 fwrite(subjects, sizeof(subjects), 1, fp); fwrite(weights, sizeof(weights), 1, fp); // 再保存学生记录 fwrite(&student_count, sizeof(student_count), 1, fp); fwrite(students, sizeof(student), student_count, fp); fclose(fp); printf("数据已保存到文件 scores.dat 中。\n"); } else { printf("无法打开文件 scores.dat 进行保存。\n"); } } // 从文件读取数据 void load_data() { FILE *fp = fopen("scores.dat", "rb"); if (fp != NULL) { // 先读取科目名称和平时成绩占比 fread(subjects, sizeof(subjects), 1, fp); fread(weights, sizeof(weights), 1, fp); // 再读取学生记录 fread(&student_count, sizeof(student_count), 1, fp); fread(students, sizeof(student), student_count, fp); fclose(fp); printf("已从文件 scores.dat 中读取数据。\n"); } else { printf("无法打开文件 scores.dat 进行读取。\n"); } } // 输出学生成绩 void print_scores() { for (int i = 0; i < student_count; i++) { printf("%s:\n", students[i].name); for (int j = 0; j < MAX_SUBJECTS; j++) { float total_score = students[i].scores[j][0] * weights[j] + students[i].scores[j][1] * (1 - weights[j]); printf("%s:%.2f\n", subjects[j], total_score); } } } ``` 这个程序中,我们使用了全局变量 `subjects` 和 `weights` 来保存科目名称和平时成绩占比。当用户输入学生成绩时,程序会根据学生姓名在 `students` 数组中查找对应的记录,并在循环中依次输入每个科目的成绩。保存数据到文件时,先保存科目名称和平时成绩占比,再保存学生记录。读取数据时,先读取科目名称和平时成绩占比,再读取学生记录。输出学生成绩时,我们根据保存的成绩和平时成绩占比计算每个科目的总成绩,并输出给用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值