MATLAB计算自己的GPA

   日期:2020-07-15     浏览:114    评论:0    
核心提示:复制教务的成绩信息到txt文件之后读取处理,主要涉及字符串分割、字符串的判断和数值大小的判断

课程结束了,要计算平均绩点,编个程序解决吧

过程:复制教务信息到TXT文件保存→读入MATLAB获取学分和成绩(分数和评级)信息→根据绩点规则计算平均绩点
主要涉及字符串分割、字符串的判断和数值大小的判断

暂时有如下几门出了成绩:

复制教务的成绩信息到txt文件之后读取处理:

绩点计算方法:

程序:

%% 计算绩点
clc;
clear all;
close all;
feature('DefaultCharacterSet', 'UTF8'); 
a=importdata('gp.txt');
sizea = size(a);
gplist=cell(sizea(1),2);
credit=zeros(sizea(1),1);
score=zeros(sizea(1),1);
majorsinglegp=zeros(sizea(1),1);
electivesinglegp=zeros(sizea(1),1);
mposition=zeros(sizea(1),1);
eposition=zeros(sizea(1),1);
%%计算单门课程绩点
for i=1:sizea(1)
    p = regexp(a{i}, '\s+', 'split');
    gplist{i,1} = p{2};
    credit(i,1)= str2double(gplist{i,1});
    gplist{i,2} = p{4};
    q = isstrprop(gplist{i,2},'digit');%判断字符串逐位是否为数字,是数字的话,对应位置值为1,不是为0
    if q==0 %如果为0,也就是是汉字(这里除了汉字就是数字)
        eposition(i,1)=1;
        if gplist{i,2} == '优'
               electivesinglegp(i,1)=4;
        elseif gplist{i,2} == '良'
               electivesinglegp(i,1)=3;
        elseif gplist{i,2} == '中'
               electivesinglegp(i,1)=2;
        end
    else
        mposition(i,1)=1;
        score(i,1)=str2double(gplist{i,2});
        if score(i,1)>=90
            majorsinglegp(i,1)=4;
        elseif score(i,1)>=85
            majorsinglegp(i,1)=3.7;
        elseif score(i,1)>=82
            majorsinglegp(i,1)=3.3;
        elseif score(i,1)>=78
            majorsinglegp(i,1)=3;
        elseif score(i,1)>=75
            majorsinglegp(i,1)=2.7;
        elseif score(i,1)>=72
            majorsinglegp(i,1)=2.3;
        elseif score(i,1)>=68
            majorsinglegp(i,1)=2;
        elseif score(i,1)>=64
            majorsinglegp(i,1)=1.5;
        elseif score(i,1)>=60
            majorsinglegp(i,1)=1;
        else
            majorsinglegp(i,1)=0;
        end
    end
end
%%计算平均绩点
majorgp=sum(sum(majorsinglegp.*credit*0.65))/sum(sum(mposition.*credit));
electivegp=sum(sum(electivesinglegp.*credit*0.35))/sum(sum(eposition.*credit));
gp=majorgp+electivegp;
fprintf('your GPA: %f',gp);

结果:


有个问题就是,只能运行一次,得到评级课程的绩点,运行第二次的时候就判别不了‘优良中差’字符了,需要重启MATLAB才行,暂时没找到原因

分数有些低呀,希望暂时没出成绩的其他的课程都拿高分!!!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服