Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27597
  • 博文数量: 13
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-12 20:16
文章分类
文章存档

2012年(13)

我的朋友
最近访客

分类:

2012-04-25 11:06:21

学校学分绩点计算-awk实现

 

学生成绩原始数据格式:

1       20072488              3143344  计算机控制系统          3       63     正考         2011         1

2       20072488              3143345  计算机控制系统实验          1       70     正考         2011         1

3       20072488              3143326  计算机网络工程实验A      1       63     正考         2011         1

4       20072488              3243560  通信与测控技术          2       76     正考         2011         1

5       20072488              3143342  网络化控制系统理论与应用              3       70     正考         2011         1

6       20072488              3143341  现代控制理论A           2       66     正考         2011         1

7       20072488              3045400  智能控制              2       90     正考         2011         1

8       20072488              473011     专业英语(自动化)          2       76     正考         2011         1

9       20082479         某健         3143344  计算机控制系统          3       67     正考         2011         1

10     20082479         某健         3143345  计算机控制系统实验          1       70     正考         2011         1

11     20082479         某健         3143326  计算机网络工程实验A      1       66     正考         2011         1

12     20082479         某健         3243560  通信与测控技术          2       78     正考         2011         1

13     20082479         某健         3143342  网络化控制系统理论与应用              3       70     正考         2011         1

14     20082479         某健         3143341  现代控制理论A           2       80     正考         2011         1

15     20082479         某健         3045400  智能控制              2       80     正考         2011         1

16     20082479         某健         473011     专业英语(自动化)          2       60     正考         2011         1

137  20082501         谢致         3143344  计算机控制系统          3       61     正考         2011         1

138  20082501         谢致         3143345  计算机控制系统实验          1       90     正考         2011         1

139  20082501         谢致         3143326  计算机网络工程实验A      1       82     正考         2011         1

140  20082501         谢致         3243560  通信与测控技术          2       85     正考         2011         1

141  20082501         谢致         3143342  网络化控制系统理论与应用              3       86     正考         2011         1

142  20082501         谢致         3143341  现代控制理论A           2       88     正考         2011         1

143  20082501         谢致         3045400  智能控制              2       81     正考         2011         1

144  20082501         谢致         473011     专业英语(自动化)          2       60     正考         2011         1

需要计算的科目为:计算机控制系统;计算机控制系统实验;计算机网络工程实验A      ;通信与测控技术;网络化控制系统理论与应用;现代控制理论A;智能控制      限;专业英语(自动化)

窗体顶端

课程学分绩点=∑(课程学分×课程类型系数×课程绩点)/该学期规定修读课程的学分总数

其中实验课程的类型系数和课程学分3分及其以上的算1.2

 说明:
 1
、为了计算简单,系统将“该学期规定修读课程的学分总数”默认为当前可计算的符合要求的课程学分总数。
 2
、该数据仅供参考,根据学院实际情况您可以调整系数及选择参加计算的课程重新计算绩点。
 3
、所有课程成绩均为转化实际分数进行计算,分制参照:
   
五级制:优(90)、良(80)、中(70)、及格(60)、不及格(0
   
二级制:通过(85)、不通过(0
 4
、成绩与课程绩点对应关系:

成 绩

成绩等级

课程绩点

90-100

A

4.0

85-89

A-

3.7

82-84

B+

3.3

78-81

B

3.0

75-77

B-

2.7

72-74

C+

2.3

68-71

C

2.0

66-67

C-

1.7

64-65

及格(通过)

D+

1.3

60-63

D

1.0

<60

不及格(不通过) F

0

窗体底端

 

shell脚本清单:

#! /bin/bash

 

echo "" | awk -f "xuefen.awk" | sort -k3,3 -r

 

awk脚本清单:

BEGIN{

OFMT="%.4f"

}

 

function kechengjidian(score)

{

         if(score >= 90)

                   return 4.0

         else if(score >= 85)

                   return 3.7

         else if(score >= 82)

                   return 3.3

         else if(score >= 78)

                   return 3.0

         else if(score >= 75)

                   return 2.7

         else if(score >= 72)

                   return 2.3

         else if(score >= 68)

                   return 2.0

         else if(score >= 66)

                   return 1.7

         else if(score >= 64)

                   return 1.3

         else if(score >= 60)

                   return 1.0

         else if(score >= 0)

                   return 0

         else

                   return -1                    

}

 

function kechengxishu(name)

{

         xishu["专业英语(自动化)"] = 1.0

         xishu["计算机控制系统"] = 1.2

         xishu["计算机控制系统实验"] = 1.2

         xishu["网络化控制系统理论与应用"] = 1.2

         xishu["通信与测控技术"] = 1.0

         xishu["计算机网络工程实验A"] = 1.2

         xishu["智能控制"] = 1.0

         xishu["现代控制理论A"] = 1.0

         if(name in xishu)

         {

                   return xishu[name]

         }

}

 

function kechengxuefen(name)

{

         xuefen["专业英语(自动化)"] = 2

         xuefen["计算机控制系统"] = 3

         xuefen["计算机控制系统实验"] = 1

         xuefen["网络化控制系统理论与应用"] = 3

         xuefen["通信与测控技术"] = 2

         xuefen["计算机网络工程实验A"] = 1

         xuefen["智能控制"] = 2

         xuefen["现代控制理论A"] = 2

         if(name in xuefen)

         {

                   return xuefen[name]

         }

         else

         {

                   return 0

         }

}

 

{

#data = "/root/scripts/chengji"

data = "chengji"

xingming = ""

number = ""

while(("cat "data) | getline)

{

         #print $0

         #print xingming,xuefenjidian/totalxuefen,totalxuefen

        

         if(kechengxuefen($5))

         {

                   xingming = xingming == "" ? $3 : xingming;

                   number = number == "" ? $2 : number;

                   if(xingming != $3)

                   {

                            print number,xingming,xuefenjidian/totalxuefen,totalxuefen

                            xingming = $3

                            number = $2

                            xuefenjidian = 0

                            totalxuefen = 0

                            #system("sleep 3 ")

                   }

                   totalxuefen += $7

                   xuefenjidian += $7*kechengxishu($5)*kechengjidian($8)

                   #xuefenjidian += $7*kechengxishu("$5")*kechengjidian($8)

         }

}

print number,xingming,xuefenjidian/totalxuefen,totalxuefen

close(data)

}

阅读(912) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~