2023年6月21日发(作者:)

数据库报告记录

———————————————————————————————— 作者:

———————————————————————————————— 日期:

2

企业实训实习报告

系别:计算机科学与技术

班级:

姓名:

学号:

成绩:

评语:

指导教师签字: 日期:

数据库应用系统开发

一、 需求分析------大学生选课管理系统

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

 学期末,学院工作人员负责录入学生的成绩。

【实验目的】

通过本实验使学生掌握结构化需求分析的方法、过程和相应的文档内容与格式。特别是熟悉数据流程图、数据字典和IPO图三个核心技术的应用。

【实验步骤】

1) 结合实验内容说明,对现有的学生选课系统进行必要的调研,了解基本的工作流程、软件功能、数据需求和界面风格。

2) 分析实验内容说明和调研结果,画出系统的数据流程图。

3) 编写系统的数据字典。

4) 用IPO图描述系统的处理过程。

5) 画出系统ER图。

【实验结果】

数据流程图:

数据字典:

学生基本信息

字段名

StudentID

Name

数数数是键

据名称 据长度 据类型 否为主学号

姓名

50字节

50字节

nvarchar

nvarchar

Sex

Age

Academy

Major

Class

Enrollment

Address

beizhu

State

RoleID

用户信息

性别

年龄

学院

专业

班级

入学时间

家庭地址

备注

状态

角色号

数50字节

4字节

50字节

50字节

50字节

50字节

50字节

50字节

4字节

4字节

数nvarchar

int

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

int

int

数是 段名

userID

Password

Role

Academy

Time

课程基本信息

据名称 据长度 据类型 否为主键

用户名

密码

角色

角色号

登陆时间

字段名

据名称

CourseID

程号

50字节

50字节

50字节

4字节

50字节

数据长度

课0字节

学5nva否

5nvarchar

nvarchar

数数否为主键

是否

nvarchar

nvarchar

nvarchar

int 否

据类型

CourseName

号 0字节

Classify

程分类

Credit

Major

学字节

专业 0字节

Academy 学院 0字节

Advanced_coursename 修课程名

Advanced_course

rchar

5nvarchar

否 课0字节

4int 否

5nvarchar

5nvarchar

先0字节

5nvarchar

先0字5nvarchar

否 课程号

授课信息

字段名 数数数是键

据名称 据长度 据类型 否为主CourseID

CourseName

Schooltime

Credit

Address

Start_end

Teacher

Class

课程号

课程名称

上课时间

学分

上课地点

起止时间

授课老师

上50字节

50字节

50字节

4字节

50字节

50字节

50字节

50nvarchar

nvarchar

nvarchar

int

nvarchar

nvarchar

nvarchar

nva是

否 课班级

Sum

Renshu

Sel_count

选课信息

字节

4字节

4字节

4字节

数rchar

int

int

int

课程容量

上课人数

选课人数

数字段名 数是键

据名称 据长度 据类型 否为主StudentID

CourseID

CourseName

StateCourse

Year

Season

学号

课程号

课程名称

中签状态

年份

季50字节

50字节

50字节

50字节

4字节

50nvarchar

nvarchar

nvarchar

nvarchar

int

nva是

否 别

Classify

成绩信息

字节

50字节

数rchar

nvarchar

数是键

否 课程分类

数字段名

据名称 据长度 据类型 否为主StudentID

CourseID

CourseName

Grade

Credit

TeacherName

Year

Season

学号

课程号

课分数

学分

授年份

季50字节

50字节

504字节

4字节

504字节

50nvarchar

nvarchar

nvarchar

int

int

nvarchar

int

nva是

程名称 字节

课老师 字节 别

学生注册信息

字节

数rchar

数是键

字段名

StudentID

Name

Year

Season

Register

教师信息

数据名称 据长度 据类型 否为主学号

姓名

年份

季别

注册

数50字节

50字节

4字节

4字节

4字节

数数是键

nvarchar

int 否

nvarchar

nvarchar

int 是

字段名

TeacherID

Name

据名称 据长度 据类型 否为主教师编号

姓名

50字节

50字节

nvarchar

nvarchar

是 Sex

Title

Academy

Position

Birth

jiguan

beizhu

性别

职称

所属学院

职务

出生日期

籍贯

备注

50字节

50字节

50字节

50字节

50字节

50字节

50字节

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

系统ER图:

二、 系统设计------选课管理系统设计

【实验内容】

1) 对实验1的结果进行概要设计和详细设计,画出功能模块图。

2) 对系统的主界面、课程基本信息录入界面、学生选课操作界面、学生选课结果浏览界面进行设计。

3) 进行数据库设计。得到数据库的逻辑结构图。

【实验结果】

系统功能模块图

a) 顶层模块结构图

b) 详细模块结构图

用例图

a) 学生用例图

b) 学院管理员用例图

c) 教务处管理员用例图

数据库设计(包括表名、字段名、字段类型、字段大小、字段说明)

a) 用户表(Account)

b) 课程基本信息表(Course_basic_info)

c) 授课信息表(course_info)

d) 学生成绩表(Score)

e) 学生选课表(Select_course)

f) 学生基本信息表(Student)

g) 学生注册信息表(Student_record)

h) 教师基本信息表(Teacher_info)

三、 选课管理系统编程

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

学期末,学院工作人员负责录入学生的成绩。

【实验目的】

1) 通过本实验使学生通过掌握选课管理系统的实现。

【实验步骤】

根据实验1和实验2对选课管理系统的了解,选用C#编程语言实现本系统,并对编码通过注释进行必要的说明。

【实验结果】

a) 登陆界面

b) 学生操作界面

c) 选课查看

d) 课程信息修改

e) 学生信息修改

f) 选课抽签

g) 学生信息录入

h) 查询选课信息

i) 学生注册

j) 休学、复学

主要功能源代码

登录界面:

private void button1_Click(object sender, EventArgs e)

{

string userid = ;//用户名

string pwd = ; //密码

string un= ;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql = "select count(*) from u where userid=@userid and

password=@password and userno=@un";//执行的命令Sql

dText = str_sql;//设置命令文本

(new SqlParameter("@userid", userid));

(new SqlParameter("@password", pwd));

(new SqlParameter("@un",un));

int count = 32(eScalar());//执行命令

if (count>0)

{

if (("学生"))

{

name = userid;

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0, 表示登陆成功,显示主界面

Form2 f2 = new Form2();

();

}

if (("院管理员"))

{

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0,表示登陆成功,显示主界面

Form3 f3 = new Form3();

();

}

if (("教务处管理员"))

{

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0,表示登陆成功,显示主界面

Form4 f4 = new Form4();

();

}

}

else

{

("用户名或者密码输入错误");

}

学生选课:

private void button4_Click(object sender, EventArgs e)

{

string cname = ;

string n = ;

string semester = ;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql="select sout from s where sno=@n";

(new SqlParameter("@n", n));

dText = str_sql;

SqlDataReader d = null;

d = eReader();

if (())

{

int sout = 32(d["sout"].ToString());

if (sout == 0)

{

();

();

str_sql = "select count(*) from course where cname=@cname and

(cfirst='' or cfirst in (select cno from Sc where sno=@n and grade!=0))";//执行的命令Sql

dText = str_sql;//设置命令文本

(new SqlParameter("@cname", cname));

int count= 32(eScalar());//执行命令

if (count > 0)

{

();

();

str_sql = "select count(*) from c where cname=@cname and ctime

not in (select ctime from sc,c where sno=@n and = and grade=0)";

dText = str_sql;//设置命令文本

count = 32(eScalar());//执行命令

if (count > 0)

{

();

();

str_sql = "select sum(ccredit) from c where cno in(select

cno from sc where grade=0 and sno=@n)";

dText = str_sql;//设置命令文本

int sum = 32(eScalar());//执行命令

();

();

str_sql = "select ccredit,cno from c where cname=@cname";

dText = str_sql;//设置命令文本

SqlDataReader dr = null;

dr = eReader();

if (())

{

int a = 0;

a = 32(dr["ccredit"].ToString());

string cno = dr["cno"].ToString();

int c = sum + a;

if (c < 18)

{

();

();

str_sql = "insert into sc values('" + n + "','"

+ cno + "','"

+ null + "','"

+ semester + "') ";

dText = str_sql;//设置命令文本

eNonQuery();//执行命令

("选课成功!");

}

else ("本学期所选课程学分已满18,请下学期再选!");

}

}

else ("与已有课程时间冲突!");

}

else

{

("缺少先选课!");

}

}

else ("该学生尚未注册,不能选课!");

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

查询选课:

private void button2_Click(object sender, EventArgs e)

{

();

string semester = ;

string n = ;

string str_sql;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

if (("所有选课"))

{

str_sql = "select ,Cname,Cteacher,Ccredit from sc,c where

=@n and =";//执行的命令Sql

}

else

{

str_sql = "select ,Cname,Cteacher,Ccredit from sc,c where

=@n and semester=@semester and =";//执行的命令Sql

}

(new SqlParameter("@n", n));

(new SqlParameter("@semester", semester));

dText = str_sql;

tion = connection;

SqlDataReader str = null;

str = eReader();

int count = 0;

while (())

{

();

[count].Cells[0].Value =

str["Cno"].ToString();

[count].Cells[1].Value =

str["Cname"].ToString();

[count].Cells[2].Value =

str["Cteacher"].ToString();

[count].Cells[3].Value =

str["Ccredit"].ToString();

count++;

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

录入学生信息:

private void button1_Click(object sender, EventArgs e)

{

string sno = ;//学号

string sname = ; //姓名

string ssex = ;//性别

string sclass = ; //班级

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection();//创建数据库连接

tionString = conn;

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql1 = "select count(*) from s where sno=@sno";

dText = str_sql1;//设置命令文本

(new SqlParameter("@sno", sno));

int count = 32(eScalar());//执行命令

if (count < 1)

{

string a, b, c;

a = "";

b = "";

c = "";

string str_sql = "insert into S values('" + sno + "','"

+ sname + "','"

+ ssex + "','"

+ sclass + "','"

+ a + "','"

+ b + "','"

+ c + "')"; //执行的命令S

(str_sql);

dText = str_sql;//设置命令文本

eNonQuery();//执行命令

("录入成功");

}

else ("学号已存在,请输入正确学号!");

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

查询学生选课:

private void button2_Click(object sender, EventArgs e)

{

();

string sno = ;

string semester = ;

string conn2 = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

SqlConnection connection2 = new SqlConnection(conn2);//创建数据库连接

try

{

();

SqlCommand comm2 = new SqlCommand();//创建数据库命令

tion = connection2;//设置命令的数据库连接

string str_sql2;

if (("所有选课"))

{

str_sql2 = "select Cname,Cteacher,Cplace,Ctime,Ccredit from sc,c where

=@sno and =";//执行的命令Sql

}

else

{

str_sql2 = "select Cname,Cteacher,Cplace,Ctime,Ccredit from sc,c where

=@sno and semester=@semester and =";//执行的命令Sql

}

(new SqlParameter("@sno", sno));

(new SqlParameter("@semester", semester));

dText = str_sql2;

tion = connection2;

SqlDataReader str2 = null;

str2 = eReader();

int count = 0;

while (())

{

();

[count].Cells[0].Value =

str2["Cname"].ToString();

[count].Cells[1].Value =

str2["Cteacher"].ToString();

[count].Cells[2].Value =

str2["Cplace"].ToString();

[count].Cells[3].Value =

str2["Ctime"].ToString();

[count].Cells[4].Value =

str2["Ccredit"].ToString();

count++;

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

录入课程信息:

private void button5_Click(object sender, EventArgs e)

{

string cno = ;//课程号

string cname = ; //课程名

string cteacher = ; //教师

string ctime = ;

string cplace = ;

string ccredit = (string);//学分

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection();//创建数据库连接

tionString = conn;

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据

string str_sql1 = "select count(*) from c where cteacher=@cteacher and

cno=@cno and cname=@cname";

dText = str_sql1;//设置命令文本

(new SqlParameter("@cteacher", cteacher));

(new SqlParameter("@cno", cno));

(new SqlParameter("@cname", cname));

int count = 32(eScalar());//执行命令

if (count <1)

{

string str_sql2= "select count(*) from c where cteacher=@cteacher and

ctime=@ctime and cplace!=@cplace";

(new SqlParameter("@ctime", ctime));

(new SqlParameter("@cplace", cplace));

dText = str_sql2;//设置命令文本

count = 32(eScalar());

if (count < 1)

{

string str_sql3 = "insert into C values('" + cno + "','"

+ cname + "','"

+ cteacher + "','"

+ ctime + "','"

+ cplace + "','"

+ ccredit + "')"; //执行的命令S

(cno + "," + cname + "," + cteacher + "," + cplace

+ "," + ctime + "," + ccredit);

dText = str_sql3;//设置命令文本

eNonQuery();//执行命令

("录入成功");

}

else ("教师时间冲突!");

}

else ("与已有课程存在冲突!");

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

四、选课管理系统测试

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

 学期末,学院工作人员负责录入学生的成绩。

【实验目的】

1) 通过本实验使学生掌握选课管理系统的测试。

2) 学生在实验过程中熟练掌握测试方法。

【实验步骤】

根据实验3编写的选课管理系统,设计测试用例并实现测试。

【实验结果】

测试用例

主要功能测试结果:

2023年6月21日发(作者:)

数据库报告记录

———————————————————————————————— 作者:

———————————————————————————————— 日期:

2

企业实训实习报告

系别:计算机科学与技术

班级:

姓名:

学号:

成绩:

评语:

指导教师签字: 日期:

数据库应用系统开发

一、 需求分析------大学生选课管理系统

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

 学期末,学院工作人员负责录入学生的成绩。

【实验目的】

通过本实验使学生掌握结构化需求分析的方法、过程和相应的文档内容与格式。特别是熟悉数据流程图、数据字典和IPO图三个核心技术的应用。

【实验步骤】

1) 结合实验内容说明,对现有的学生选课系统进行必要的调研,了解基本的工作流程、软件功能、数据需求和界面风格。

2) 分析实验内容说明和调研结果,画出系统的数据流程图。

3) 编写系统的数据字典。

4) 用IPO图描述系统的处理过程。

5) 画出系统ER图。

【实验结果】

数据流程图:

数据字典:

学生基本信息

字段名

StudentID

Name

数数数是键

据名称 据长度 据类型 否为主学号

姓名

50字节

50字节

nvarchar

nvarchar

Sex

Age

Academy

Major

Class

Enrollment

Address

beizhu

State

RoleID

用户信息

性别

年龄

学院

专业

班级

入学时间

家庭地址

备注

状态

角色号

数50字节

4字节

50字节

50字节

50字节

50字节

50字节

50字节

4字节

4字节

数nvarchar

int

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

int

int

数是 段名

userID

Password

Role

Academy

Time

课程基本信息

据名称 据长度 据类型 否为主键

用户名

密码

角色

角色号

登陆时间

字段名

据名称

CourseID

程号

50字节

50字节

50字节

4字节

50字节

数据长度

课0字节

学5nva否

5nvarchar

nvarchar

数数否为主键

是否

nvarchar

nvarchar

nvarchar

int 否

据类型

CourseName

号 0字节

Classify

程分类

Credit

Major

学字节

专业 0字节

Academy 学院 0字节

Advanced_coursename 修课程名

Advanced_course

rchar

5nvarchar

否 课0字节

4int 否

5nvarchar

5nvarchar

先0字节

5nvarchar

先0字5nvarchar

否 课程号

授课信息

字段名 数数数是键

据名称 据长度 据类型 否为主CourseID

CourseName

Schooltime

Credit

Address

Start_end

Teacher

Class

课程号

课程名称

上课时间

学分

上课地点

起止时间

授课老师

上50字节

50字节

50字节

4字节

50字节

50字节

50字节

50nvarchar

nvarchar

nvarchar

int

nvarchar

nvarchar

nvarchar

nva是

否 课班级

Sum

Renshu

Sel_count

选课信息

字节

4字节

4字节

4字节

数rchar

int

int

int

课程容量

上课人数

选课人数

数字段名 数是键

据名称 据长度 据类型 否为主StudentID

CourseID

CourseName

StateCourse

Year

Season

学号

课程号

课程名称

中签状态

年份

季50字节

50字节

50字节

50字节

4字节

50nvarchar

nvarchar

nvarchar

nvarchar

int

nva是

否 别

Classify

成绩信息

字节

50字节

数rchar

nvarchar

数是键

否 课程分类

数字段名

据名称 据长度 据类型 否为主StudentID

CourseID

CourseName

Grade

Credit

TeacherName

Year

Season

学号

课程号

课分数

学分

授年份

季50字节

50字节

504字节

4字节

504字节

50nvarchar

nvarchar

nvarchar

int

int

nvarchar

int

nva是

程名称 字节

课老师 字节 别

学生注册信息

字节

数rchar

数是键

字段名

StudentID

Name

Year

Season

Register

教师信息

数据名称 据长度 据类型 否为主学号

姓名

年份

季别

注册

数50字节

50字节

4字节

4字节

4字节

数数是键

nvarchar

int 否

nvarchar

nvarchar

int 是

字段名

TeacherID

Name

据名称 据长度 据类型 否为主教师编号

姓名

50字节

50字节

nvarchar

nvarchar

是 Sex

Title

Academy

Position

Birth

jiguan

beizhu

性别

职称

所属学院

职务

出生日期

籍贯

备注

50字节

50字节

50字节

50字节

50字节

50字节

50字节

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

nvarchar

系统ER图:

二、 系统设计------选课管理系统设计

【实验内容】

1) 对实验1的结果进行概要设计和详细设计,画出功能模块图。

2) 对系统的主界面、课程基本信息录入界面、学生选课操作界面、学生选课结果浏览界面进行设计。

3) 进行数据库设计。得到数据库的逻辑结构图。

【实验结果】

系统功能模块图

a) 顶层模块结构图

b) 详细模块结构图

用例图

a) 学生用例图

b) 学院管理员用例图

c) 教务处管理员用例图

数据库设计(包括表名、字段名、字段类型、字段大小、字段说明)

a) 用户表(Account)

b) 课程基本信息表(Course_basic_info)

c) 授课信息表(course_info)

d) 学生成绩表(Score)

e) 学生选课表(Select_course)

f) 学生基本信息表(Student)

g) 学生注册信息表(Student_record)

h) 教师基本信息表(Teacher_info)

三、 选课管理系统编程

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

学期末,学院工作人员负责录入学生的成绩。

【实验目的】

1) 通过本实验使学生通过掌握选课管理系统的实现。

【实验步骤】

根据实验1和实验2对选课管理系统的了解,选用C#编程语言实现本系统,并对编码通过注释进行必要的说明。

【实验结果】

a) 登陆界面

b) 学生操作界面

c) 选课查看

d) 课程信息修改

e) 学生信息修改

f) 选课抽签

g) 学生信息录入

h) 查询选课信息

i) 学生注册

j) 休学、复学

主要功能源代码

登录界面:

private void button1_Click(object sender, EventArgs e)

{

string userid = ;//用户名

string pwd = ; //密码

string un= ;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql = "select count(*) from u where userid=@userid and

password=@password and userno=@un";//执行的命令Sql

dText = str_sql;//设置命令文本

(new SqlParameter("@userid", userid));

(new SqlParameter("@password", pwd));

(new SqlParameter("@un",un));

int count = 32(eScalar());//执行命令

if (count>0)

{

if (("学生"))

{

name = userid;

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0, 表示登陆成功,显示主界面

Form2 f2 = new Form2();

();

}

if (("院管理员"))

{

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0,表示登陆成功,显示主界面

Form3 f3 = new Form3();

();

}

if (("教务处管理员"))

{

//用户名等于输入的用户名,密码等于输入的密码的记录条数大于0,表示登陆成功,显示主界面

Form4 f4 = new Form4();

();

}

}

else

{

("用户名或者密码输入错误");

}

学生选课:

private void button4_Click(object sender, EventArgs e)

{

string cname = ;

string n = ;

string semester = ;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql="select sout from s where sno=@n";

(new SqlParameter("@n", n));

dText = str_sql;

SqlDataReader d = null;

d = eReader();

if (())

{

int sout = 32(d["sout"].ToString());

if (sout == 0)

{

();

();

str_sql = "select count(*) from course where cname=@cname and

(cfirst='' or cfirst in (select cno from Sc where sno=@n and grade!=0))";//执行的命令Sql

dText = str_sql;//设置命令文本

(new SqlParameter("@cname", cname));

int count= 32(eScalar());//执行命令

if (count > 0)

{

();

();

str_sql = "select count(*) from c where cname=@cname and ctime

not in (select ctime from sc,c where sno=@n and = and grade=0)";

dText = str_sql;//设置命令文本

count = 32(eScalar());//执行命令

if (count > 0)

{

();

();

str_sql = "select sum(ccredit) from c where cno in(select

cno from sc where grade=0 and sno=@n)";

dText = str_sql;//设置命令文本

int sum = 32(eScalar());//执行命令

();

();

str_sql = "select ccredit,cno from c where cname=@cname";

dText = str_sql;//设置命令文本

SqlDataReader dr = null;

dr = eReader();

if (())

{

int a = 0;

a = 32(dr["ccredit"].ToString());

string cno = dr["cno"].ToString();

int c = sum + a;

if (c < 18)

{

();

();

str_sql = "insert into sc values('" + n + "','"

+ cno + "','"

+ null + "','"

+ semester + "') ";

dText = str_sql;//设置命令文本

eNonQuery();//执行命令

("选课成功!");

}

else ("本学期所选课程学分已满18,请下学期再选!");

}

}

else ("与已有课程时间冲突!");

}

else

{

("缺少先选课!");

}

}

else ("该学生尚未注册,不能选课!");

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

查询选课:

private void button2_Click(object sender, EventArgs e)

{

();

string semester = ;

string n = ;

string str_sql;

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

SqlConnection connection = new SqlConnection(conn);//创建数据库连接

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

if (("所有选课"))

{

str_sql = "select ,Cname,Cteacher,Ccredit from sc,c where

=@n and =";//执行的命令Sql

}

else

{

str_sql = "select ,Cname,Cteacher,Ccredit from sc,c where

=@n and semester=@semester and =";//执行的命令Sql

}

(new SqlParameter("@n", n));

(new SqlParameter("@semester", semester));

dText = str_sql;

tion = connection;

SqlDataReader str = null;

str = eReader();

int count = 0;

while (())

{

();

[count].Cells[0].Value =

str["Cno"].ToString();

[count].Cells[1].Value =

str["Cname"].ToString();

[count].Cells[2].Value =

str["Cteacher"].ToString();

[count].Cells[3].Value =

str["Ccredit"].ToString();

count++;

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

录入学生信息:

private void button1_Click(object sender, EventArgs e)

{

string sno = ;//学号

string sname = ; //姓名

string ssex = ;//性别

string sclass = ; //班级

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection();//创建数据库连接

tionString = conn;

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据库连接

string str_sql1 = "select count(*) from s where sno=@sno";

dText = str_sql1;//设置命令文本

(new SqlParameter("@sno", sno));

int count = 32(eScalar());//执行命令

if (count < 1)

{

string a, b, c;

a = "";

b = "";

c = "";

string str_sql = "insert into S values('" + sno + "','"

+ sname + "','"

+ ssex + "','"

+ sclass + "','"

+ a + "','"

+ b + "','"

+ c + "')"; //执行的命令S

(str_sql);

dText = str_sql;//设置命令文本

eNonQuery();//执行命令

("录入成功");

}

else ("学号已存在,请输入正确学号!");

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

查询学生选课:

private void button2_Click(object sender, EventArgs e)

{

();

string sno = ;

string semester = ;

string conn2 = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

SqlConnection connection2 = new SqlConnection(conn2);//创建数据库连接

try

{

();

SqlCommand comm2 = new SqlCommand();//创建数据库命令

tion = connection2;//设置命令的数据库连接

string str_sql2;

if (("所有选课"))

{

str_sql2 = "select Cname,Cteacher,Cplace,Ctime,Ccredit from sc,c where

=@sno and =";//执行的命令Sql

}

else

{

str_sql2 = "select Cname,Cteacher,Cplace,Ctime,Ccredit from sc,c where

=@sno and semester=@semester and =";//执行的命令Sql

}

(new SqlParameter("@sno", sno));

(new SqlParameter("@semester", semester));

dText = str_sql2;

tion = connection2;

SqlDataReader str2 = null;

str2 = eReader();

int count = 0;

while (())

{

();

[count].Cells[0].Value =

str2["Cname"].ToString();

[count].Cells[1].Value =

str2["Cteacher"].ToString();

[count].Cells[2].Value =

str2["Cplace"].ToString();

[count].Cells[3].Value =

str2["Ctime"].ToString();

[count].Cells[4].Value =

str2["Ccredit"].ToString();

count++;

}

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

录入课程信息:

private void button5_Click(object sender, EventArgs e)

{

string cno = ;//课程号

string cname = ; //课程名

string cteacher = ; //教师

string ctime = ;

string cplace = ;

string ccredit = (string);//学分

string conn = "Data Source= .SQLEXPRESS;Initial Catalog=XKXT; User ID=sa;

pwd=lfj123456";

//Data Source 服务器名 ;Initial Catalog 数据库名; User ID 用户名; pwd 密码

SqlConnection connection = new SqlConnection();//创建数据库连接

tionString = conn;

try

{

();

SqlCommand comm = new SqlCommand();//创建数据库命令

tion = connection;//设置命令的数据

string str_sql1 = "select count(*) from c where cteacher=@cteacher and

cno=@cno and cname=@cname";

dText = str_sql1;//设置命令文本

(new SqlParameter("@cteacher", cteacher));

(new SqlParameter("@cno", cno));

(new SqlParameter("@cname", cname));

int count = 32(eScalar());//执行命令

if (count <1)

{

string str_sql2= "select count(*) from c where cteacher=@cteacher and

ctime=@ctime and cplace!=@cplace";

(new SqlParameter("@ctime", ctime));

(new SqlParameter("@cplace", cplace));

dText = str_sql2;//设置命令文本

count = 32(eScalar());

if (count < 1)

{

string str_sql3 = "insert into C values('" + cno + "','"

+ cname + "','"

+ cteacher + "','"

+ ctime + "','"

+ cplace + "','"

+ ccredit + "')"; //执行的命令S

(cno + "," + cname + "," + cteacher + "," + cplace

+ "," + ctime + "," + ccredit);

dText = str_sql3;//设置命令文本

eNonQuery();//执行命令

("录入成功");

}

else ("教师时间冲突!");

}

else ("与已有课程存在冲突!");

}

catch (SqlException ex)

{

(e);

}

finally

{

();//关闭数据库连接

}

}

四、选课管理系统测试

【实验内容】

 教务处的管理人员录入全校的课程基本信息和本学期的课程授课教师、地点、时间;

 在学生入学的时候,学院的管理人员录入学生基本信息;

 学生每学期自己上网登录系统选课,选课成功后信息存入数据库中,学生自己可以查询选课的情况;

 学生选课不成功的情况有:

 所选课程的先修课还没有记录,系统提示“缺先修课,选课失败”;

 本学期所选课程的上课时间有冲突,系统提示“上课时间有冲突,选课失败”;

 学生一学期所选课程的学分最多不能超18学分

 学生可以注销所选课程。

 学院管理员可以查询学生前几学期的选课信息、可以查询课程基本信息、学生基本信息;

 当学生退学时,由教务处的管理人注销学生基本信息;

 如果开课之后,学生要求退课,则由教务处的工作人员为学生注销所选课程;

 允许学生休学,教务处为休学的退学做学籍冻结处理;复学后为其办理解冻处理;

 每学期教务处为学生办理学期注册手续;没有办理学期注册的学生不能选课;

 学期末,学院工作人员负责录入学生的成绩。

【实验目的】

1) 通过本实验使学生掌握选课管理系统的测试。

2) 学生在实验过程中熟练掌握测试方法。

【实验步骤】

根据实验3编写的选课管理系统,设计测试用例并实现测试。

【实验结果】

测试用例

主要功能测试结果: