学生选课信息管理系统.docx
《学生选课信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生选课信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
![学生选课信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/22/8f588538-4ebc-4f79-99a6-427e1ef8f543/8f588538-4ebc-4f79-99a6-427e1ef8f5431.gif)
学生选课信息管理系统
学生选课信息管理系统
一、学生选课信息管理系统简介
传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。
学生选课管理系统的用户包括系统管理员、教师和学生。
系统管理员负责日常的管理工作,如各种基本信息的录入、修改、删除等操作;教师使用该系统可完成教学班信息查询和成绩管理;学生使用该系统主要完成选课和成绩查询等操作。
经过调研与分析,高等院校学生选课管理系统主要应具有以下功能:
(1)课程信息管理。
课程信息管理包括课程信息数据的录入、修改与删除等功能;
(2)学生信息管理。
学生信息管理包括学生信息的录入、修改与删除等功能;
(3)教师信息管理。
教师信息管理包括教师信息的录入、修改与删除等功能;
(4)班级信息管理。
学班级信息管理包括各班级信息的录入、修改与删除等功能。
二、系统开发目标
本系统的目标就是实现学生在网上就可完成选课的全过程。
其功能如下:
◆学生登陆验证密码功能
为了避免在选课时出现乱选、错选情况,该系统在设计时考虑对学生身份的合法性进行验证,保证合法用户才能选课。
◆查看可供选择的课程,及上该课程教师的情况
学生能在网上查看课程的情况,如课程的介绍、课程有那些教师上。
◆选择某门课程
学生可查看当前自己已选课程、如果对某门课程不满意,可注销该课程,也以查看当前某门课,某教师有那些学生选。
三、系统功能模块图
根据功能分析总结系统的体系结构,系统的功能模块如图3-1所示:
图3-1系统的功能模块图
在本系统中,可以把功能模块分为以下2个功能集合来描述:
(1)基本信息管理功能集合
包括班级信息管理和学生信息管理等功能模块,此集合中功能模块的关系如图3-2所示
图3-2基本信息管理功能图
(2)用户管理及权限控制功能集合
包括用户信息管理、权限控制等模块。
在本系统中,用户管理模块的功能比较简单。
在系统初始化时,有两个默认的用户,系统管理员用户名为admin,普通用户名为user,手动添加到数据库中,其默认密码为123。
admin用户的权限为创建用户、修改用户信息和删除用户,而普通用户只能修改自己的密码或查询信息。
用户管理功能模块的关系如图3-3所示:
图3-3用户管理功能模块的关系图
四、系统开发、运行环境要求
WindowsXP + SQLServer2000 :
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的最新版本,该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好以及与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
运行SQLServer2000的最低硬件和软件需求:
(1)计算机
Intel兼容计算机,Pentium166MHz以上。
(2)内存RAM
Enterprise:
版本64MB;
Standard:
版本32MB。
(3)硬盘空间
SQLServer2000:
•完全安装(Full)180MB;
•典型安装(Typical)170MB;
•最小安装(minimum65)MB;
•只安装管理工具(Clienttoolsonly)90MB;
•AnalysisServices:
50MB;
•EnglishQuery:
12MB。
五、数据库概念设计(E-R图)
(1)学生实体E-R图
图5-1学生实体E-R图
(2)班级实体E-R图
图5-2班级实体E-R图
(3)课程实体E-R图
图5-3课程实体E-R图
(4)教师实体E-R图
图5-4教师实体E-R图
(5)各实体之间的E-R图
n
m
n
1
n
图5-5实体E-R图
六、数据库逻辑设计(分几个关系模式)
(1)学生基本表Student,如下表所示:
表6-1学生基本表
字段名称
类型
宽度
允许空值
主键
说明
s_no
char
6
NOTNULL
是
学号
class_no
char
6
NOTNULL
班级号
s_name
varchar
10
NOTNULL
学生姓名
s_sex
char
2
男或女
性别
s_birthday
datetime
出生日期
(2)班级数据表class,如下表:
表6-2班级数据表
字段名称
类型
宽度
允许空值
主键
说明
class_no
char
6
NOTNULL
是
班级号
class_name
char
20
NOTNULL
班级姓名
class_special
varchar
20
所属专业
class_dept
datetime
20
系别
(3)课程数据表,如下表:
表6-3课程数据表
字段名称
类型
宽度
允许空值
主键
说明
Course_no
char
5
NOTNULL
是
课程号
Cours_name
char
20
NOTNULL
课程名
Cours_score
nemeric
6,2
学分
(4)选修课程情况数据表Choice,如下表:
表6-4选修课程情况数据表
字段名称
类型
宽度
允许空值
主键
说明
s_no
char
6
NOTNULL
是
学号
Cours_no
char
5
NOTNULL
课程名
score
nemeric
6,2
成绩
(5)教师数据表Teacher,如下表:
表6-5教师数据表
字段名称
类型
宽度
允许空值
主键
说明
t_no
char
6
NOTNULL
是
教师号
t_name
varchar
10
NOTNULL
是
教师姓名
t_sexl
char
2
男或女
性别
t_birthday
datetime
出生日期
t_title
char
10
职称
(6)教师任课情况表Teaching,如下表:
表6-6教师任课情况表
字段名称
类型
宽度
允许空值
主键
说明
course_no
char
6
是
课程号
t_no
char
6
教师号
七、数据库物理设计
物理结构依赖于所选用的数据库管理系统。
八、系统主界面及主要代码
(1)主界面窗口:
主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceStudentIMS
{
publicpartialclassMainForm:
Form
{
publicMainForm()
{
InitializeComponent();
}
privatevoid学生管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
StudentFormStudentFrm=newStudentForm();
StudentFrm.Show();
}
privatevoid班级管理ToolStripMenuItem1_Click(objectsender,EventArgse)
{
ClassFormClassFrm=newClassForm();
ClassFrm.Show();
}
privatevoid学生查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
StudentQueryFormStudentQueryFrm=newStudentQueryForm();
StudentQueryFrm.Show();
}
privatevoid教师管理ToolStripMenuItem1_Click(objectsender,EventArgse)
{
TeacherFormTeacherFrm=newTeacherForm();
TeacherFrm.Show();
}
privatevoid教师查询ToolStripMenuItem_Click_1(objectsender,EventArgse)
{
TeacherQueryFormTeacherQueryFrm=newTeacherQueryForm();
TeacherQueryFrm.Show();
}
privatevoid班级查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
ClassQueryFormClassQueryFrm=newClassQueryForm();
ClassQueryFrm.Show();
}
privatevoid课程管理ToolStripMenuItem1_Click(objectsender,EventArgse)
{
CourseFormCourseFrm=newCourseForm();
CourseFrm.Show();
}
privatevoid课程查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
CourseQueryFormCourseQueryFrm=newCourseQueryForm();
CourseQueryFrm.Show();
}
privatevoid选课管理ToolStripMenuItem1_Click(objectsender,EventArgse)
{
ChoiceFormChoiceFrm=newChoiceForm();
ChoiceFrm.Show();
}
privatevoid选课查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
ChoiceQueryFormChoiceQueryFrm=newChoiceQueryForm();
ChoiceQueryFrm.Show();
}
privatevoid任课管理ToolStripMenuItem1_Click(objectsender,EventArgse)
{
TeachingFormTeachingFrm=newTeachingForm();
TeachingFrm.Show();
}
privatevoid任课查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
TeachingQueryFormTeachingQueryFrm=newTeachingQueryForm();
TeachingQueryFrm.Show();
}
}
}
(2)子窗口:
其功能是对学生的基本信息进行插入、删除、查询等管理。
主要代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;//新加引用
namespaceStudentIMS
{
publicpartialclassStudentForm:
Form
{
//下面这条语句根据实际配置修改
SqlConnectionsqlcon=newSqlConnection("server=localhost;uid=sa;pwd=;database=DB06061001and06061033");
publicStudentForm()
{
InitializeComponent();
//初始化性别下拉列表框代码
S_SexCMB.Items.Add("男");
S_SexCMB.Items.Add("女");
//查找已定义好的班级号
stringstrSQL="selectclass_nofromclass";
DataSetds=newDataSet();
SqlDataAdaptermyda=newSqlDataAdapter(strSQL,sqlcon);
sqlcon.Open();
myda.Fill(ds,"class");
sqlcon.Close();
DataTabledt=ds.Tables["class"];
foreach(DataRowdrindt.Rows)
{
Class_NoCMB.Items.Add(dr["class_no"]);
}
}
privatevoidBrowseBtn_Click(objectsender,EventArgse)
{
//stringstrSQL="select*fromstudent";
stringstrSQL="selects_no学号,class_no班级号,s_name姓名,s_sex性别,s_birthday出生年月fromstudent";
DataSetds=newDataSet();
SqlDataAdaptermyda=newSqlDataAdapter(strSQL,sqlcon);
sqlcon.Open();
myda.Fill(ds,"student");
sqlcon.Close();
DataTabledt=ds.Tables["student"];
dataGridView1.DataSource=ds.Tables["student"];
}
privatevoidInsBtn_Click(objectsender,EventArgse)
{
if(S_NoTxt.Text.Trim().Length!
=0)
{
stringstrSQL="INSERTINTOstudent(s_no,class_no,s_name,s_sex,s_birthday)VALUES(";
strSQL=strSQL+"'"+S_NoTxt.Text.Trim()+"',";
strSQL=strSQL+"'"+Class_NoCMB.Text.Trim()+"',";
strSQL=strSQL+"'"+S_NameTxt.Text.Trim()+"',";
strSQL=strSQL+"'"+S_SexCMB.Text.Trim()+"',";
strSQL=strSQL+"'"+S_BirthdayTxt.Text.Trim()+"')";
sqlcon.Open();
SqlCommandcmd=newSqlCommand(strSQL,sqlcon);
cmd.ExecuteNonQuery();
sqlcon.Close();
}
}
privatevoidDelBtn_Click(objectsender,EventArgse)
{
if(S_NoTxt.Text.Trim().Length!
=0)
{
stringstrSQL="DELETEFROMstudent";
strSQL=strSQL+"WHEREs_no='"+S_NoTxt.Text.Trim()+"'";
sqlcon.Open();
SqlCommandcmd=newSqlCommand(strSQL,sqlcon);
cmd.ExecuteNonQuery();
sqlcon.Close();
}
}
privatevoidUpdateBtn_Click(objectsender,EventArgse)
{
if(S_NoTxt.Text.Trim().Length!
=0)
{
stringstrSQL="UPDATEstudentSET";
strSQL=strSQL+"class_no="+"'"+Class_NoCMB.Text.Trim()+"',";
strSQL=strSQL+"s_name="+"'"+S_NameTxt.Text.Trim()+"',";
strSQL=strSQL+"s_sex="+"'"+S_SexCMB.Text.Trim()+"',";
strSQL=strSQL+"s_birthday="+"'"+S_BirthdayTxt.Text.Trim()+"'";
strSQL=strSQL+"WHEREs_no='"+S_NoTxt.Text.Trim()+"'";
sqlcon.Open();
SqlCommandcmd=newSqlCommand(strSQL,sqlcon);
cmd.ExecuteNonQuery();
sqlcon.Close();
}
}
privatevoidFindBtn_Click(objectsender,EventArgse)
{
if(S_NoTxt.Text.Trim().Length!
=0)
{
stringstrSQL="select*fromstudent"+"wheres_no='"+S_NoTxt.Text.Trim()+"'";
DataSetds=newDataSet();
SqlDataAdaptermyda=newSqlDataAdapter(strSQL,sqlcon);
sqlcon.Open();
myda.Fill(ds,"student");
sqlcon.Close();
DataTabledt=ds.Tables["student"];
strSQL=strSQL+"class_no"+"'"+Class_NoCMB.Text.Trim()+"',";
strSQL=strSQL+"s_name="+"'"+S_NameTxt.Text.Trim()+"',";
strSQL=strSQL+"s_sex="+"'"+S_SexCMB.Text.Trim()+"',";
strSQL=strSQL+"s_birthday="+"'"+S_BirthdayTxt.Text.Trim()+"'";
strSQL=strSQL+"WHEREs_no='"+S_NoTxt.Text.Trim()+"'";
foreach(DataRowdrindt.Rows)
{
S_NoTxt.Text=Convert.ToString(dr["s_no"]);
Class_NoCMB.Text=Convert.ToString(dr["class_no"]);
S_NameTxt.Text=Convert.ToString(dr["s_name"]);
S_SexCMB.Text=Convert.ToString(dr["s_sex"]);
S_BirthdayTxt.Text=Convert.ToString(Convert.ToDateTime(dr["s_birthday"]).ToShortDateString());
}
}
}
privatevoidClearBtn_Click(objectsender,EventArgse)
{
S_NoTxt.Text="";
Class_NoCMB.Text="";
S_NameTxt.Text="";
S_SexCMB.Text="";
S_BirthdayTxt.Text="";
}
}
}
其他子窗口:
九、上机实验的收获、体会
通过这次实验设计的制作,使我对软件开发有了更深一步的了解。
在软件开发中应注意的问题和考虑的问题都能较好的做到。
在这短短时间的自学中要很好的应用这个工具还是有困难的,但也得到了不少自学经验,使我的自学能力有了很大的提高。
在开发过程中也遇到了不少难题,为了解决这些难题我查阅各类相关书籍,同时请教老师和同学,不停地对编译程序进行测试,调试。
最终,得到了一个比较具有实用性和完整性的系统。
但系统还存在问题,虽然系统的基本功能已实现,但该系统还有许多不尽如人意的地方,与实际的管理还有一定的差距。
参考文献
[1]王珊萨师煊.数据库系统概论.北京:
高等教育出版社,2006
[2]郑阿奇.SQLServer实用教程.北京:
电子工业出版社,2009
[3]JosephSack著.SQLServer2008实战.金迎春译.北京:
人民邮电出版社,2010
[4]赵松涛.深入浅出SQLServer