此界面为配置管理界面,管理员通过相关操作,可以直接修改数据库中的选课时间记录。在文本区键入选课开始、结束时间,单击生成按钮,配置文件生成功,为更新数据库作好第一步准备。
单击读取按钮,将配置文件读入内存,以便通过函数调用UpdatePeriod存储过程,更新数据库。出现更新数据库成功对话框,单击确定按钮,此时数据库记录被修改。学生必须按照新的选课时间进行选课,使管理员可以动态的、间接的管理数据库,而无须登录到SQLServer2000企业管理器对数据库进行修改。
本网上选课系统共涉及到12个用户界面,以上是具有代表性的几个,单独列出加以说明。为了提高代码的重用性和封装对存储过程的调用,每个子系统都实现了一个存取数据的公共类,提供本系统使用。
2.过程设计
本系统对每一层都设置了确保安全的障碍和入口,用户只有进入了某一层才能获得相应那一层资源的访问权,这些措施保证了选课系统及具体数据的安全性。
不同身份的用户拥有对数据库的不同访问权限(具体到对库中每个表的存取操作),学生用户的选/退课权限通过系统应用程序提供给教务管理人员动态设置。
系统程序流程图如下
>学生子系统:
>管理员子系统
3.3编码
源程序代码的逻辑应简明清晰,易读易懂,编码必须严格遵循详细设计阶段的结果,编写出严密、有逻辑性的代码。
本应用程序为了提高服务器数据库的访问效率,加快整个系统的运行速度,存取数据全部使用存储过程。同时对一些业务逻辑也使用了一些存储过程。
分别使用如下代码进行数据库连接:
privatestringm_strConnString;
privateSqlConnectionm_connConnection;
打开操作:
publicvoidOpen(stringstrDataSource,stringstrInitialCatalog,stringstrUserID,stringstrPwd)
{
m_strConnString="DataSource="+strDataSource+";InitialCatalog="+strInitialCatalog+";UserID="+"sa"+";Password="+strPwd;
m_connConnection=newSqlConnection(m_strConnString);
m_connConnection.Open();
}
关闭操作:
publicvoidClose()
{
m_connConnection.Close();
}
首先创建CSQL类,当类中某一对象需要获取数据库中的数据时,用如下代码调用Open()函数。
CSQLmySQL=newCSQL();
mySQL.Open("localhost","electcourses","sa","2188");
其中localhost表示本地访问,electcourses为数据库名,sa为数据库用户名,2188为用户口令。
MySQL.Close();
使用该语句可以直接关闭数据库。
各模块具体实现代码如下:
学生子系统:
>查看课程信息模块
privatevoidFillDirectoryTree()
{
CSQLmySQL=newCSQL();
mySQL.Open("localhost","electcourses","sa","2188");
DataSetDepartmentDS=mySQL.GetDataSet("select*fromDepartments","departments");
intmyCount=DepartmentDS.Tables["departments"].Rows.Count;
mySQL.Close();
for(inti=0;i
查看已选课程模块
CREATEProcedureElectiveList
(
@StudentIDint
)
AS
SELECT
Courses.CourseID,
Courses.CourseName,
Courses.CourseTeacher,
Courses.CourseScore,
Courses.CourseHours
FROM
Elective
INNERJOINCoursesONCourses.CourseID=Elective.CourseID
WHERE
Elective.StudentID=@StudentID
GO
>选课模块
CREATEProcedureElectCourse
(
@StudentIDint,
@CourseIDint,
@ElectiveIDintOUTPUT
)
AS
INSERTINTOElective
(
StudentID,
CourseID
)
VALUES
(
@StudentID,
@CourseID
)
SELECT
@ElectiveID=@@Identity
GO
>退选模块
CREATEProcedureCancelCourse
(
@StudentIDint,
@CourseIDint,
@ElectiveIDintOUTPUT
)
AS
SELECT
@ElectiveID=ElectiveID
FROM
Elective
WHERE
@StudentID=StudentID
AND
@CourseID=CourseID
DELETEFROM
Elective
WHERE
(
@StudentID=StudentID
AND
@CourseID=CourseID
)
GO
管理员子系统
>管理学生记录模块
*修改学生信息
CREATEProcedureModifyStudentInfo
(
@StudentNumbernvarchar(50),
@Namenvarchar(50),
@Passwordnvarchar(50)
)
AS
UPDATEStudents
SET
Name=@Name,
Password=@Password
WHERE
StudentNumber=@StudentNumber
GO
*添加学生信息
CREATEProcedureAddStudent
(
@StudentNumbernvarchar(50),
@Namenvarchar(50),
@Passwordnvarchar(50),
@StudentIDintOUTPUT
)
AS
INSERTINTOStudents
(
StudentNumber,
Name,
Password
)
VALUES
(
@StudentNumber,
@Name,
@Password
)
SELECT
@StudentID=@@Identity
GO
*删除学生信息
CREATEProcedureDeleteStudent
(
@StudentNumbernvarchar(50),
@Namenvarchar(50)
)
AS
DELETEStudents
WHERE
StudentNumber=@StudentNumber
AND
Name=@Name
GO
>管理课程信息模块
*修改课程信息
CREATEProcedureModifyCourse
(
@CourseIDint,
@CourseNamenvarchar(50),
@CourseHoursint,
@CourseScoreint,
@CourseTeachernvarchar(50),
@UpperLimitStudentNumberint
)
AS
UPDATECourses
SET
CourseName=@CourseName,
CourseHours=@CourseHours,
CourseScore=@CourseScore,
CourseTeacher=@CourseTeacher,
UpperLimitStudentNumber=@UpperLimitStudentNumber
WHERE
CourseID=@CourseID
GO
*添加课程信息
CREATEProcedureAddCourse
(
@CourseIDint,
@CourseNamenvarchar(50),
@DepartmentIDint,
@CourseHoursint,
@CourseScoreint,
@CourseTeachernvarchar(50),
@UpperLimitStudentNumberint
)
As
INSERTINTOCourses
(
CourseID,
CourseName,
DepartmentID,
CourseHours,
CourseScore,
CourseTeacher,
UpperLimitStudentNumber
)
VALUES
(
@CourseID,
@CourseName,
@DepartmentID,
@CourseHours,
@CourseScore,
@CourseTeacher,
@UpperLimitStudentNumber
)
SELECT
@CourseID=@@Identity
GO
*删除课程信息
CREATEProcedureRemoveCourse
(
@CourseIDint
)
AS
BEGINTransaction
DELETEFROMCourses
WHERE
CourseID=@CourseID
DELETEFROMElective
WHERE
CourseID=@CourseID
if@@rowcount>0
CommitTransaction
else
RollbackTransaction
GO
>修改选课期限模块
通过读取XML文件,调用UpdatePeriod存储过程实现更新数据库。
XML文件
<?xmlversion="1.0"?>
UpdatePeriod存储过程
CREATEProcedureUpdatePeriod
(
@BeginTimedatetime,
@EndTimedatetime
)
AS
UPDATEPeriod
SET
BeginTime=@BeginTime,
EndTime=@EndTime
GO
>查看选课情况模块
CREATEProcedureElectiveTotalList
AS
SELECT
Elective.StudentID,
Students.StudentNumber,
Students.Name,
Courses.CourseID,
Courses.CourseName,
Courses.CourseTeacher,
Courses.CourseScore,
Courses.CourseHours
FROM
Elective
INNERJOINCoursesONCourses.CourseID=Elective.CourseID
INNERJOINStudentsONStudents.Stude
上一篇:网上选课系统Csharp+SQL(论文和程序)
下一篇:试析影响公路路面平整度的因素及应采取的施工措施