⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gencourse.cpp

📁 自己写的选课系统,命令行下的...比较简陋...
💻 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 + -