?? gencourse.cpp
字號:
#include "Gencourse.h"
#include "stdlib.h"
extern myIO io;
static String genTitle[] = {
"name", "college", "campus", "term", "credit", "examtime", "extra"
};
static String courseTitle[] = {
"name", "teachroom", "teachtime", "examroom", "mark", "total", "current", "teacher"
};
static String teacherTitle[] = {
"name", "college", "extra"
};
String IntoGenCourse(Database& db, String& id, String& coursename, String& order)
{
int i, j;
Recordset rs(&db);
rs.m_ParamNum = 7;
rs.m_Param = new String[7];
for (i = 0; i < 7; i++)
rs.m_Param[i].Set(46);
rs.m_Order = order;
rs.m_Where = "name like '%" + coursename + "%'";
if (!rs.Open("select name,college,campus,term,credit,examtime,extra from gencourse") || rs.m_RowTotal == 0)
{
io << "no such course";
return " ";
}
Grid** gr = new Grid*[rs.m_RowTotal];
for (i = 0; i < rs.m_RowTotal; i++)
gr[i] = new Grid[7];
GridInfo gi(1);
for (i = 0; i < rs.m_RowTotal; i++)
{
for (j = 0; j < 7; j++)
{
rs.m_Param[j].reGetlenth();
if (j == 5)
{
Time time(rs.m_Param[j]);
String temp(rs.m_Param[j].getSub(0, rs.m_Param[j].getlenth() - 5));
temp += " " + examtime[time.GetTime(4)];
gi.m_Info[0] = temp;
}
else
gi.m_Info[0] = rs.m_Param[j];
gr[i][j].SetGridInfo(&gi);
}
rs.MoveNext();
}
Table t(rs.m_RowTotal, 7);
t.SetColTitle(genTitle);
t.SetRowTitle(NULL);
t.SetTable(gr);
while (true)
{
io << "you might want to find...";
t.ShowTable();
String choice;
io << "which one do you prefer?";
io << "order number---0. back";
io >> choice;
while (i = choice.intoInt(), i < 0 || i > rs.m_RowTotal)
{
io << "wrong order number...";
io >> choice;
}
if (i == 0)
return " ";
rs.Move(i);
choice = rs.m_Param[0];
choice = IntoCourse(db, id, choice);
if (choice == "0")
return "0";
}
}
String IntoCourse(Database& db, String& id, String& coursename)
{
int i, j, cnt = 0;
bool ret;
Recordset rs(&db);
rs.m_ParamNum = 10;
rs.m_Param = new String[10];
for (i = 0; i < 10; i++)
rs.m_Param[i].Set(46);
rs.m_Where = "course.coursename='" + coursename + "' and course.courseid=teach.courseid and teacher.id=teach.teacherid "
"and teachtime.courseid=course.courseid";
rs.m_Order = "course.courseid";
ret = rs.Open("select course.courseid,teacher.id,course.coursename,course.teachroom,teachtime.time,course.examroom,course.mark,course.total,"
"course.current,teacher.name from course,teacher,teach,teachtime");
if (ret == false || rs.m_RowTotal == 0)
{
io << "no such course with such name...";
return " ";
}
Grid** gr = new Grid*[rs.m_RowTotal];
for (i = 0; i < rs.m_RowTotal; i++)
gr[i] = new Grid[8];
GridInfo gi(1);
/* for (i = 0; i < rs.m_RowTotal; i++)
{
for (j = 0; j < 8; j++)
{
rs.m_Param[j + 2].reGetlenth();
if (j = 2)
{
Time told(rs.m_Param[j + 2]);
tempid = rs.m_Param[0];
while (rs.MoveNext() && rs.m_Param[0].reGetlenth() && tempid == rs.m_Param[0])
{
Time tnew(rs.m_Param[j + 2]
}
}
gi.m_Info[0] = rs.m_Param[j + 2];
gr[i][j].SetGridInfo(&gi);
}
rs.MoveNext();
}
*/
String courseid[30], teacherid[30];
int rec = 0;
ret = true;
i = 0;
String tempid, buffer;
/* while (i < rs.m_RowTotal && ret)
{
rs.m_Param[0].reGetlenth();
courseid[rec] = rs.m_Param[0];
rs.m_Param[1].reGetlenth();
teacherid[rec] = rs.m_Param[1];
rec++;
for (j = 0; j < 8; j++)
{
rs.m_Param[j + 2].reGetlenth();
if (j == 2)
{
Time told(rs.m_Param[4]);
buffer = weekday[told.GetTime(3)] + " " + intoString(told.GetTime(4));
rs.m_Param[0].reGetlenth();
tempid = rs.m_Param[0];
int cur = i;
while (rs.MoveNext())
{
i++;
rs.m_Param[0].reGetlenth();
if (tempid == rs.m_Param[0])
{
cnt++;
rs.m_Param[4].reGetlenth();
Time tnew(rs.m_Param[4]);
buffer += "," + intoString(tnew.GetTime(4));
}
else
{
i = cur + cnt;
i -= 2;
rs.Move(i + 2);
break;
}
}
gi.m_Info[0] = buffer;
}
else
gi.m_Info[0] = rs.m_Param[j + 2];
gr[i - cnt + 1][j].SetGridInfo(&gi);
}
i++;
ret = rs.MoveNext();
}
*/
while (i < rs.m_RowTotal)
{
rs.m_Param[0].reGetlenth();
courseid[rec] = rs.m_Param[0];
rs.m_Param[1].reGetlenth();
teacherid[rec] = rs.m_Param[1];
rec++;
for (j = 0; j < 8; j++)
{
rs.m_Param[j + 2].reGetlenth();
if (j == 2)
{
Time told(rs.m_Param[4]);
buffer = weekday[told.GetTime(3)] + " " + intoString(told.GetTime(4));
// rs.m_Param[0].reGetlenth();
// tempid = rs.m_Param[0];
while (rs.MoveNext())
{
rs.m_Param[0].reGetlenth();
if (courseid[rec - 1] == rs.m_Param[0])
{
i++;
cnt++;
rs.m_Param[4].reGetlenth();
Time tnew(rs.m_Param[4]);
buffer += "," + intoString(tnew.GetTime(4));
}
else
{
rs.Move(i + 1);
break;
}
}
gi.m_Info[0] = buffer;
}
else
gi.m_Info[0] = rs.m_Param[j + 2];
gr[i - cnt][j].SetGridInfo(&gi);
}
i++;
rs.MoveNext();
}
Table t(rs.m_RowTotal - cnt, 8);
t.SetColTitle(courseTitle);
t.SetRowTitle(NULL);
t.SetTable(gr);
String num, choice;
while (true)
{
t.ShowTable();
io << "which do you prefer?";
io >> num;
while (num.intoInt() < 1 || num.intoInt() > rec)
{
io << "check your number!";
io >> num;
}
io << "you want...";
io << "1. choose this one---2. teacher detail---3. back";
io >> choice;
while (choice != "1" && choice != "2" && choice != "3")
{
io << "you have to make a decision...";
io >> choice;
}
if (choice == "2")
IntoTeacherDetail(db, teacherid[num.intoInt() - 1]);
else if (choice == "1")
choice = IntoChoose(db, id, courseid[num.intoInt() - 1]);
else
return " ";
if (choice == "0")
return "0";
}
}
void IntoTeacherDetail(Database& db, String& teacherid)
{
int i, j;
Recordset rs(&db);
rs.m_ParamNum = 3;
rs.m_Param = new String[3];
for (i = 0; i < 3; i++)
rs.m_Param[i].Set(46);
rs.m_Where = "id='" + teacherid + "'";
if (!rs.Open("select name,college,extra from teacher") || rs.m_RowTotal == 0)
{
io << "no such teacher!";
return;
}
Grid** gr = new Grid*[rs.m_RowTotal];
for (i = 0; i < rs.m_RowTotal; i++)
gr[i] = new Grid[3];
GridInfo gi(1);
for (i = 0; i < rs.m_RowTotal; i++)
{
for (j = 0; j < 3; j++)
{
rs.m_Param[j].reGetlenth();
gi.m_Info[0] = rs.m_Param[j];
gr[i][j].SetGridInfo(&gi);
}
rs.MoveNext();
}
Table t(rs.m_RowTotal, 3);
t.SetColTitle(teacherTitle);
t.SetRowTitle(NULL);
t.SetTable(gr);
t.ShowTable();
}
String IntoChoose(Database& db, String& id, String& courseid)
{
bool ret;
int newcnt;
int i, j;
Recordset rs(&db);
rs.m_ParamNum = 1;
rs.m_Param = new String[1];
rs.m_Param[0].Set(46);
rs.m_Where = "courseid='" + courseid + "'";
if (!rs.Open("select time from teachtime") || rs.m_RowTotal == 0)
{
io << "fail...";
return " ";
}
String time[5];
i = 0;
while (i < rs.m_RowTotal)
{
time[i] = rs.m_Param[0];
rs.MoveNext();
i++;
}
newcnt = i;
Recordset rs1(&db);
rs1.m_ParamNum = 1;
rs1.m_Param = new String[1];
rs1.m_Param[0].Set(46);
rs1.m_Where = "study.stuid='" + id + "' and study.courseid=teachtime.courseid";
ret = false;
if (rs1.Open("select teachtime.time from study,teachtime"))
{
i = 0;
while (!ret && i < rs1.m_RowTotal)
{
for (j = 0; j < newcnt; j++)
{
Time told(rs1.m_Param[0]);
Time tnew(time[j]);
if (told == tnew)
{
ret = true;
break;
}
}
i++;
rs1.MoveNext();
}
if (ret)
{
io << "interrupt with others...";
return " ";
}
}
Recordset rs2(&db);
rs2.m_ParamNum = 2;
rs2.m_Param = new String[2];
rs2.m_Param[0].Set(46);
rs2.m_Param[1].Set(46);
rs2.m_Where = "courseid='" + courseid + "'";
rs2.Open("select total,current from course");
rs2.m_Param[0].reGetlenth();
rs2.m_Param[1].reGetlenth();
if (rs2.m_Param[0].intoInt() <= rs2.m_Param[1].intoInt())
{
io << "full capacity...";
return " ";
}
newcnt = rs2.m_Param[1].intoInt();
// rs2.Close();
rs.Close();
rs.Open();
rs.m_ParamNum = 2;
rs.m_Param = new String[2];
rs.m_Param[0] = "current";
rs.m_Param[1] = intoString(newcnt + 1);
rs.m_Table = "course";
rs.m_Where = "courseid='" + courseid + "'";
rs.Edit();
rs.Close();
rs.Open();
rs.m_ParamNum = 2;
rs.m_Param = new String[2];
rs.m_Param[0] = id;
rs.m_Param[1] = courseid;
rs.m_Table = "study";
if (!rs.Add())
{
io << "fail in add...";
return " ";
}
io << "success!";
return "0";
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -