对深圳大学选课系统中的课程学时计算问题总结
2009-06-05 12:48
344 查看
对深圳大学选课系统中的课程学时计算问题总结
--Jason
问题情况:该系统中的时间包括:周上课时间,上课周数
如:周一1,2;周三3,4;单周二1,3,4,双周5,7,8 02-13
然后计算该们课总共开设了多少学时。
平台:VS2005 C#
代码:
protected string GetTime(string str1, string str2)
{
string strWeekTime = str1;
string strWeekNum = str2;
int WeeksNum = NumWeeks(strWeekNum);//总周数
int SingleWeeksNum = NumSingleWeeks(strWeekNum);//单周数
int DoubleWeeksNum = NumDoubleWeeks(strWeekNum);//双周数
int TotalTime = 0;
string strTemp = strWeekTime;
string strTemp2 = "";
//计算一周的时间划分
bool tag = true;
while (tag)
{
if (HasSeparator(strTemp))//判断是否有分隔符“;”
{
int pos = strTemp.IndexOf(";");
strTemp2 = strTemp.Remove(pos);//截取分割符前半部分,strTemp2保存删除的部分
if (!HasSingleOrDoubleWeek(strTemp))//如果没有单双周划分
{
TotalTime += GetNumberNum(strTemp) * WeeksNum;
}
else if (strTemp.Contains("单"))//如果是单周时间
{
TotalTime += GetNumberNum(strTemp) * SingleWeeksNum;
}
else//剩下的只有双周时间了
{
TotalTime += GetNumberNum(strTemp) * DoubleWeeksNum;
}
strTemp = strTemp2;
}
else
{
if (!HasSingleOrDoubleWeek(strTemp))//如果没有单双周划分
{
TotalTime += GetNumberNum(strTemp) * WeeksNum;
}
else if (strTemp.Contains("单"))//如果是单周时间
{
TotalTime += GetNumberNum(strTemp) * SingleWeeksNum;
}
else//剩下的只有双周时间了
{
TotalTime += GetNumberNum(strTemp) * DoubleWeeksNum;
}
tag = false;
}
}
return TotalTime.ToString();
}
//判断是否为阿拉伯数字
protected bool IsArabicNumber(string str)
{
try
{
int n = Convert.ToInt32(str);
return true;
}
catch
{
return false;
}
}
//计算字符串里有多少个阿拉伯数字,个位算一个,双位也算一个,根据场景限制,这里的阿拉伯数字最大是2位@^_^@
protected int GetNumberNum(string str)
{
int i;
int num=0;
for (i=0; i < str.Length; i++)
{
if (IsArabicNumber(str[i].ToString()))
{
num += 1;
if (i+1<str.Length && IsArabicNumber(str[i + 1].ToString())) i++;
}
}
return num;
}
protected bool HasSeparator(string str)//判断是否含有分割符“;”@^_^@
{
if (str.Contains(";"))
return true;
return false;
}
//判断是否包含单双周@^_^@
protected bool HasSingleOrDoubleWeek(string str)
{
if (str.Contains("单") || str.Contains("双")) return true;
return false;
}
//计算执教周数@^_^@
protected int NumWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos=str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
return Convert.ToInt32(str2) - Convert.ToInt32(str1)+1;
}
//计算执教单周数@^_^@
protected int NumSingleWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos = str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
int numWeeks = Convert.ToInt32(str2) - Convert.ToInt32(str1) + 1;//周数
if (numWeeks % 2 == 0) return numWeeks / 2;//如果是双倍周数,那么就有一半是双周一半是单周。
//如果不是双倍周数
//如果起始是双周
if (Convert.ToInt32(str1) % 2 == 0) return numWeeks / 2;
//否则一定是起始是单周
return numWeeks / 2+1;
}
//计算执教双周数@^_^@
protected int NumDoubleWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos = str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
int numWeeks = Convert.ToInt32(str2) - Convert.ToInt32(str1) + 1;//周数
if (numWeeks % 2 == 0) return numWeeks / 2;//如果是双倍周数,那么就有一半是双周一半是单周。
//如果不是双倍周数
//如果起始是双周
if (Convert.ToInt32(str1) % 2 == 0) return numWeeks / 2+1;
//否则一定是起始是单周
return numWeeks / 2;
}
--Jason
问题情况:该系统中的时间包括:周上课时间,上课周数
如:周一1,2;周三3,4;单周二1,3,4,双周5,7,8 02-13
然后计算该们课总共开设了多少学时。
平台:VS2005 C#
代码:
protected string GetTime(string str1, string str2)
{
string strWeekTime = str1;
string strWeekNum = str2;
int WeeksNum = NumWeeks(strWeekNum);//总周数
int SingleWeeksNum = NumSingleWeeks(strWeekNum);//单周数
int DoubleWeeksNum = NumDoubleWeeks(strWeekNum);//双周数
int TotalTime = 0;
string strTemp = strWeekTime;
string strTemp2 = "";
//计算一周的时间划分
bool tag = true;
while (tag)
{
if (HasSeparator(strTemp))//判断是否有分隔符“;”
{
int pos = strTemp.IndexOf(";");
strTemp2 = strTemp.Remove(pos);//截取分割符前半部分,strTemp2保存删除的部分
if (!HasSingleOrDoubleWeek(strTemp))//如果没有单双周划分
{
TotalTime += GetNumberNum(strTemp) * WeeksNum;
}
else if (strTemp.Contains("单"))//如果是单周时间
{
TotalTime += GetNumberNum(strTemp) * SingleWeeksNum;
}
else//剩下的只有双周时间了
{
TotalTime += GetNumberNum(strTemp) * DoubleWeeksNum;
}
strTemp = strTemp2;
}
else
{
if (!HasSingleOrDoubleWeek(strTemp))//如果没有单双周划分
{
TotalTime += GetNumberNum(strTemp) * WeeksNum;
}
else if (strTemp.Contains("单"))//如果是单周时间
{
TotalTime += GetNumberNum(strTemp) * SingleWeeksNum;
}
else//剩下的只有双周时间了
{
TotalTime += GetNumberNum(strTemp) * DoubleWeeksNum;
}
tag = false;
}
}
return TotalTime.ToString();
}
//判断是否为阿拉伯数字
protected bool IsArabicNumber(string str)
{
try
{
int n = Convert.ToInt32(str);
return true;
}
catch
{
return false;
}
}
//计算字符串里有多少个阿拉伯数字,个位算一个,双位也算一个,根据场景限制,这里的阿拉伯数字最大是2位@^_^@
protected int GetNumberNum(string str)
{
int i;
int num=0;
for (i=0; i < str.Length; i++)
{
if (IsArabicNumber(str[i].ToString()))
{
num += 1;
if (i+1<str.Length && IsArabicNumber(str[i + 1].ToString())) i++;
}
}
return num;
}
protected bool HasSeparator(string str)//判断是否含有分割符“;”@^_^@
{
if (str.Contains(";"))
return true;
return false;
}
//判断是否包含单双周@^_^@
protected bool HasSingleOrDoubleWeek(string str)
{
if (str.Contains("单") || str.Contains("双")) return true;
return false;
}
//计算执教周数@^_^@
protected int NumWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos=str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
return Convert.ToInt32(str2) - Convert.ToInt32(str1)+1;
}
//计算执教单周数@^_^@
protected int NumSingleWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos = str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
int numWeeks = Convert.ToInt32(str2) - Convert.ToInt32(str1) + 1;//周数
if (numWeeks % 2 == 0) return numWeeks / 2;//如果是双倍周数,那么就有一半是双周一半是单周。
//如果不是双倍周数
//如果起始是双周
if (Convert.ToInt32(str1) % 2 == 0) return numWeeks / 2;
//否则一定是起始是单周
return numWeeks / 2+1;
}
//计算执教双周数@^_^@
protected int NumDoubleWeeks(string str)
{
string strTemp1 = str;
string strTemp2 = str;
string str1 = "";
string str2 = "";
int pos = 0;
pos = str.IndexOf("-");
str1 = strTemp1.Remove(pos);//前半部分
str2 = strTemp2.Remove(0, pos + 1);//后半部分
int numWeeks = Convert.ToInt32(str2) - Convert.ToInt32(str1) + 1;//周数
if (numWeeks % 2 == 0) return numWeeks / 2;//如果是双倍周数,那么就有一半是双周一半是单周。
//如果不是双倍周数
//如果起始是双周
if (Convert.ToInt32(str1) % 2 == 0) return numWeeks / 2+1;
//否则一定是起始是单周
return numWeeks / 2;
}
相关文章推荐
- 软件工程课程设计问题总结——医院门诊系统(七):总结
- 软件工程课程设计问题总结——医院门诊系统(三):注册失败保留表单内容
- 软件工程课程设计问题总结——医院门诊系统(四):后台获取下拉列表的值并在页面中显示
- 软件工程课程设计问题总结——医院门诊系统(一):serverlet中alert不弹窗&弹窗乱码
- 2017-2018-1 20155306 《信息安全系统设计基础》课程总结
- Qt中2D绘图问题总结(二)----------坐标系统
- 20145305 《信息安全系统设计基础》课程总结
- 20145218 《信息安全系统设计基础》课程总结
- 高性能分布式计算与存储系统设计概要——暨2012年工作3年半总结(上) <转>
- 安装ubuntu系统的一些小问题总结
- 20145324 《信息安全系统设计基础》课程总结
- 20155219 《信息安全系统设计基础》课程总结
- 20155207 《信息安全系统设计基础》课程总结
- 20145330 《信息安全系统设计基础》课程总结
- 20145215《信息安全系统设计基础》课程总结
- 自己用springboot+mybatis+easyui写的个人管理系统遇到的问题总结
- 20145233 《信息安全系统设计基础》课程总结
- 2017-2018-1 20155326 《信息安全系统设计基础》课程总结
- 20145212 《信息安全系统设计基础》课程总结
- 20145321 《信息安全系统设计基础》课程总结