网络数据库课程设计实施方案_第1页
网络数据库课程设计实施方案_第2页
网络数据库课程设计实施方案_第3页
网络数据库课程设计实施方案_第4页
网络数据库课程设计实施方案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《网络数据库》课程设计实施方案一、《网络数据库》课程设计目的及意义通过设计一个数据库应用系统,可进一步熟悉SQLServer索引、视图、存储过程、触发器的概念、T-SQL语句的用法,在C#中的数据访问办法及实现方式。通过这个课程设计可以加深对SQLServer数据库知识的学习,理解,积累在实际工程中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。在实用性方面,客房管理系统也是很普遍的一种应用,选择该系统作为课程设计也可以为以后学生可能遇到的实际开发提供借鉴。二、课程设计项目选题(任选一)1、客房管理系统2、工资管理系统设计3、图书管理系统设计4、班级管理系统5、教师信息管理系统6、成绩管理系统7、学生信息管理系统8、实验室管理系统9、科研项目管理系统10、商品销售管理系统三、时间与安排时间为2周(12天时间),时间应该够用,因为早已把课程设计分解到平时上课所布置的课外作业中。粗略划分:第1、2天布置任务及分组、总体需求分析与设计;编写相关文档、设计说明、查找资料第3、4天数据库设计,数据表的设计、数据的录入,完整性约束第5、6天视图、触发器和存储过程设计第7、8各模块的编程设计;第9、10使用C#)创建工程并编写代码;第11天程序总调试、修改,撰写课程设计实习报告四、课程设计报告内容包括:系统设计目的、数据库对象、数据表结构(每个表要注明索引、视图、触发器、存储过程)、功能模块划分、程序实现思路、设计说明文档、课程设计心得及程序清单(打印),并按学校的课程设计(论文)格式撰写并装订成册,以备下一次再代此课时使用。五、成绩考核:系统测试、设计报告、单项实训分别占40%、40%、20%;六、进度与组织1、课程设计进度安排(第17周-第18周)交付方式:第16周交付已打印的文档、可演示的软件。2、课程设计小组学生每N人1组(一个面最多6组),自由组合,指定一个组长,负责本小组的任务分配与进度安排。在提交文档时,应在封面上注明小组参加人员,包括学号和姓名,以便老师打分。课程设计小组应独立工作,可以相互讨论,但小组间不允许互相抄抄袭。3、19周进行演示。参考案例1:小型学生管理系统问题

本案例实现一个小型的学生管理系统。完成的功能:班级管理、学生管理、科目管理、课程管理、成绩管理以及系统管理员才具有的教师管理和用户管理。

1.班级管理:可对班级进行添加、删除、修改、查找和报表输出等功能,班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。

2.学生管理:可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。

3.科目管理:可对科目进行添加、删除、修改、查找和报表输出等功能,科目属性有:科目名称、学时数和备注等属性。

4.课程管理:可对每一个班级的上课科目进行添加、删除、修改、查找和报表输出等功能,课程属性有:所属班级(来自于系统中保存的班级)、授课老师(来自于系统中保存的教师)、开课日期、结课日期和备注等属性。

5.成绩管理:可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。指导教师讲解问题说明分析

根据系统的功能划分和实现的方便,我们将整个程序分为三层:数据层、业务层和界面层。数据层负责对数据库进行操作,包括向表中插入数据、更新数据、查询数据和删除数据。业务层负责把界面上的各种操作传达给数据层。界面层主要负责界面的设计,包括控件的位置和外观等设置、实时反映系统的变化情况。数据库表的设计

根据程序的功能得出数据实体,进行数据库设计分析,确定以下数据表,如图所示:图1班级表结构图2课程表结构图3分数表结构图4学生表结构图5科目表结构图6教师表结构图7用户信息表结构方案实现:在解决方案中添加3个项目,分别代表数据层、业务层和界面层。因为班级、课程、成绩、学生、科目和教师等对象的实现方式类似,以下以班级类为示例,讲解实现过程:

BusinessRuler.Classes类的实现

该类主要实现班级的业务逻辑,如:验证系统是否有班级、该班是否有学生、该班学生人数是否已超过额定、班级名是否已存在、该班是否已开课、添加、删除、修改和查找班级。具体代码如下所示:usingSystem;

usingSystem.Windows.Forms;

usingDataAccess;

usingSystem.Data.SqlClient;

usingSystem.Collections;

usingSystem.Data;

namespaceBusinessRuler

{

publicclassClasses

{

privateDataGridView_dgvClass;

publicClasses(DataGridViewdgv)

{

_dgvClass=dgv;

}

publicClasses()

{

}

//验证系统是否有班级

publicstaticboolIsClassExists()

{

if(DataAccess.Classes.IsClassExists().HasRows)

{

returntrue;

}

else

{

MessageBox.Show("目前还没有班级,请首先创建班级","错误",MessageBoxButtons.OK,MessageBoxIcon.Information);

returnfalse;

}

}

//验证该班是否有学生

publicboolIsStudentExists(stringclassName)

DataAccess.ClassesobjClass=DataAccess.Classes.CreateInstance(className);

if(objClass.CurrentCount>0)

{

returntrue;

}

else

{

MessageBox.Show("该班目前还没有学生,无法进行成绩管理,请首先添加学生!","错误",MessageBoxButtons.OK,MessageBoxIcon.Information);

returnfalse;

}

}

//验证该班学生人数是否已超过额定

publicstaticboolisInCapacity(stringclassName)

{

intstudentCapacity=Int32.Parse(BusinessRuler.ReaderWirteConfig.GetValueByKey("studentCapaticyInClass"));

DataAccess.ClassesobjClass=DataAccess.Classes.CreateInstance(className);

if(objClass.CurrentCount==studentCapacity)

{

MessageBox.Show("该班学生人数已满!","错误",MessageBoxButtons.OK,

MessageBoxIcon.Error);

returnfalse;

}

returntrue;

}

//验证班级名是否已存在

publicstaticboolCheckExists(stringclassName)

{

returnDataAccess.Classes.CheckExists(className).HasRows;

}

//检查该班是否已开课

publicboolIsCourseExist(stringclassName)

{

DataAccess.ClassesobjClass=newDataAccess.Classes(className);

if(objClass.FillByAllSubjectName().Tables[0].Rows.Count>0)

{

returntrue;

}

else

{

MessageBox.Show(className+"班尚无课程,无法进行成绩管理,请先添加课程!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);

returnfalse;

}

}

//更新数据网格的显示

publicvoidUpdateDataGrid()

{

if(this._dgvClass!=null)

{

DataSetobjDataSet=DataAccess.Classes.FillByAllClass();

this._dgvClass.DataSource=objDataSet.Tables[0];

}

}

//添加班级

publicvoidAddClass(stringclassName,stringdirector,DateTimeentranceDate,stringremark)

{

//首先判断班级名称是否已存在

if(CheckExists(className))

{

MessageBox.Show("班级名"+className+"已存在,请重新输入班级名!","班级名已存在",MessageBoxButtons.OK,MessageBoxIcon.Error);

}

else

{

if(DataAccess.Classes.CreateClass(className,director,entranceDate,remark)>0)

{

UpdateDataGrid();

MessageBox.Show("成功添加班级!","操作成功",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

}

//修改班级

publicvoidModifyClass(stringclassName,stringdirector,DateTimeentranceDate,stringremark)

{

DataAccess.ClassesobjClass=newDataAccess.Classes(className);

objClass.Director=director;

objClass.EntranceDate=entranceDate;

objClass.Remark=remark;

if(objClass.Update()>0)

{

UpdateDataGrid();

MessageBox.Show("修改班级资料成功!","操作成功",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

//删除班级

publicvoidDeleteClass(stringclassName)

{

if(!CheckExists(className))

{

MessageBox.Show("班级名"+className+"不存在,请重新输入班级名!","班级名不存在",MessageBoxButtons.OK,MessageBoxIcon.Error);

}

else

{

if(DialogResult.Yes==MessageBox.Show("真的要删除班级'"+className+"'吗?\n删除该班时,将同时删除该班所有学生的档案及相关课程、成绩的记录,确定要继续吗?","删除确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question))

{

DataAccess.ClassesobjClass=newDataAccess.Classes(className);

if(objClass.Delete()>0)

{

UpdateDataGrid();

MessageBox.Show("成功删除班级'"+className+"'!","操作成功",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

}

}

publicvoidFillCboByAllClassName(ComboBoxcbo,intposition)

{

cbo.Items.Clear();

DataTableclassNames=DataAccess.Classes.GetAllClassName();

foreach(DataRowrowinclassNames.Rows)

{

cbo.Items.Add(row[0].ToString());

}

cbo.SelectedIndex=position;

}

publicvoidFillCboByAllClassName(ComboBoxcbo,stringtheClassName)

{

cbo.Items.Clear();

intposition=0;

inti=0;

DataTableclassNames=DataAccess.Classes.GetAllClassName();

foreach(DataRowrowinclassNames.Rows)

{

cbo.Items.Add(row[0].ToString());

if(row[0].ToString().Equals(theClassName))

{

position=i;

}

i++;

}

cbo.SelectedIndex=position;

}

//查找班级

publicstaticvoidFindByClassName(DataGridViewdgv,stringclassName)

{

for(introw=0;row<dgv.Rows.Count;row++)

{

if(dgv.Rows[row].Cells["colClassName"].Value.ToString().Equals(className))

{

dgv.Rows[row].Selected=true;

return;

}

}

MessageBox.Show("已到记录末尾!","结果",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

//按班主任查找

publicstaticvoidFindByDirector(DataGridViewdgv,stringdirector,booluseMatch)

{

for(introw=Int32.Parse(dgv.Tag.ToString());row<dgv.Rows.Count;row++)

{

boolcondition=dgv.Rows[row].Cells["colDirector"].Value.ToString().Equals(director);

if(useMatch)

{

condition=dgv.Rows[row].Cells["colDirector"].Value.ToString().Contains(director);

}

if(condition)

{

dgv.Rows[row].Selected=true;

dgv.Tag=(row+1).ToString();

return;

}

}

MessageBox.Show("已到记录末尾!","结果",MessageBoxButtons.OK,

MessageBoxIcon.Information);

dgv.Tag=0;

}

//按建班日期查找

publicstaticvoidFindByDate(DataGridViewdgv,DateTimestartDate,DateTimefinishDate)

{

for(introw=Int32.Parse(dgv.Tag.ToString());row<dgv.Rows.Count;row++)

{

DateTimedateValue=DateTime.Parse(dgv.Rows[row].Cells["colEntranceDate"].Value.ToString());

if(dateValue>=startDate&&dateValue<=finishDate)

{

dgv.Rows[row].Selected=true;

dgv.Tag=(row+1).ToString();

return;

}

}

MessageBox.Show("已到记录末尾!","结果",MessageBoxButtons.OK,MessageBoxIcon.Information);

dgv.Tag=0;

}

}

}

DataAccess.Classes类的实现

该类主要实现班级的对象的创建和数据库操作,如:得到所有班级名、新建班级、获取班级所有学生的集合、得到指定班级所有课程信息的记录、添加、删除和修改班级。具体代码如下所示:ric;

usingSystem.Text;

usingSystem.Data;

usingSystem.Data.SqlClient;

usingSystem.Collections;

namespaceDataAccess

{

publicclassClasses

{

privatestring_className;

privatestring_director;

privateint_currentCount;

privateDateTime_entranceDate;

privatestring_remark;

#region

publicstringName

{

get

{

return_className;

}

set

{

_className=value;

}

}

publicstringDirector

{

get

{

return_director;

}

set

{

_director=value;

}

}

publicintCurrentCount

{

get

{

return_currentCount;

}

set

{

_currentCount=value;

}

}

publicDateTimeEntranceDate

{

get

{

return_entranceDate;

}

set

{

_entranceDate=value;

}

}

publicstringRemark

{

get

{

return_remark;

}

set

{

_remark=value;

}

}

#endregion

//实例化班级

publicClasses(stringclassName)

{

_className=className;

}

publicClasses()

{

}

publicstaticClassesCreateInstance(stringclassName)

{

Classesc=null;

stringstrSql="select*fromClasswhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

SqlDataReaderreader=sqlcomm.ExecuteReader(strSql,newSqlParameter("@className",className));

if(reader.Read())

{

c=newClasses(className);

c._director=reader["Director"].ToString();

c._currentCount=(Int32.Parse(reader["CurrentCount"].ToString()));

c._entranceDate=(DateTime)reader["EntranceDate"];

c._remark=reader["Remark"].ToString();

}

reader.Close();

returnc;

}

//得到所有班级名

publicstaticDataTableGetAllClassName()

{

stringstrSql="selectClassNamefromClass";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,null);

returnds.Tables[0];

}

//新建班级

publicstaticintCreateClass(stringclassName,stringdirector,DateTimeentranceDate,stringremark)

{

stringstrSql="insertintoClass(ClassName,Director,EntranceDate,Remark)values(@className,@director,@entranceDate,@remark);";

SqlCommonsqlcomm=newSqlCommon();

SqlParameter[]pa=newSqlParameter[4];

pa[0]=newSqlParameter("@ClassName",className);

pa[1]=newSqlParameter("@Director",director);

pa[2]=newSqlParameter("@EntranceDate",entranceDate);

pa[3]=newSqlParameter("@Remark",remark);

returnsqlcomm.ExecuteNonQuery(strSql,pa);

}

//更新班级

publicintUpdate()

{

stringstrSql="updateClassset[Director]=@director,[EntranceDate]=@entranceDate,[Remark]=@remarkwhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

returnsqlcomm.ExecuteNonQuery(strSql,newSqlParameter("@Director",this._director),newSqlParameter("@EntranceDate",this._entranceDate),newSqlParameter("@Remark",this._remark),newSqlParameter("@className",_className));

}

//删除班级

publicintDelete()

{

//删除班级的同时删除该班所有学生记录、课程记录、成绩记录

StringBuilderstrSql=newStringBuilder();

strSql.Append("deletefromScorewhere[StudentNo]in(Select[StudentNo]fromStudentwhere[ClassName]=@className);");

strSql.Append("deletefromCoursewhere[ClassName]=@className;");

strSql.Append("deletefromStudentwhere[ClassName]=@className;");

strSql.Append("deletefromClasswhere[ClassName]=@className;");

SqlCommonsqlcomm=newSqlCommon();

returnsqlcomm.ExecuteNonQuery(strSql.ToString(),true,false,newSqlParameter("@className",_className));

}

//检查是否有班

publicstaticSqlDataReaderIsClassExists()

{

stringstrSql="select*fromClass";

SqlCommonsqlcomm=newSqlCommon();

SqlDataReaderreader=sqlcomm.ExecuteReader(strSql,null);

returnreader;

}

//检查是否有学生

publicSqlDataReaderIsStudentExists()

{

stringstrSql="select*fromClasswhere[ClassName]=@classNameand[CurrentCount]>0";

SqlCommonsqlcomm=newSqlCommon();

SqlDataReaderreader=sqlcomm.ExecuteReader(strSql,newSqlParameter("@className",_className));

returnreader;

}

//检查班级名是否已存在

publicstaticSqlDataReaderCheckExists(stringclassName)

{

stringstrSql="select*fromClasswhere[className]=@className";

SqlCommonsqlcomm=newSqlCommon();

SqlDataReaderreader=sqlcomm.ExecuteReader(strSql,newSqlParameter("@className",className));

returnreader;

}

//得到所有班级的记录

publicstaticDataSetFillByAllClass()

{

stringstrSql="select*fromClass";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,null);

returnds;

}

//获取班级所有学生的集合

publicDataSetFillByAllStudent()

{

stringstrSql="selectStudentNo,StudentName,Gender,Birthday,Picture,RemarkfromStudentwhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,newSqlParameter("@className",_className));

returnds;

}

publicDataTableGetAllStudentNo()

{

stringstrSql="selectStudentNofromStudentwhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,newSqlParameter("@className",_className));

returnds.Tables[0];

}

//得到指定班级所有课程信息的记录

publicDataSetFillByAllCourse()

{

stringstrSql="selectSubjectName,Teacher,BeginDate,FinishDate,RemarkfromCoursewhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,newSqlParameter("@className",_className));

returnds;

}

//得到指定班级所有课程名称的记录

publicDataSetFillByAllSubjectName()

{

stringstrSql="selectSubjectNamefromCoursewhere[ClassName]=@className";

SqlCommonsqlcomm=newSqlCommon();

DataSetds=sqlcomm.CreaDataSet(strSql,newSqlParameter("@className",_className));

returnds;

}

//判断该班是否已存在相应课程

publicSqlDataReaderGetDataReaderBySubjectName(stringsubjectName)

{

stringstrSql="select*fromCoursewhere[ClassName]=@classNameand[SubjectName]=@subjectName";

SqlCommonsqlcomm=newSqlCommon();

SqlDataReaderreader=sqlcomm.ExecuteReader(strSql,newSqlParameter("@className",_className),newSqlParameter("@subjectName",subjectName));

returnreader;

}

}

}

界面设计:

系统的界面除去主运行界面和系统辅助窗体外,还有班级、课程、成绩、学生、科目、教师等对象相应的管理、添加、查找和修改等界面。具体的界面如下图所示:图8程序运行主界面图9添加班级界面图10查找课程界面图11更新学生成绩界面图12学生管理界面图13登录界面图14更改密码界面图15系统选项设置界面图16系统用户管理界面(管理员登录)图17选择班级界面图18输出报表界面

说明:班级、课程、成绩、学生、科目和教师等对象的管理、添加、查找和修改界面类似,故以上没一一给出所有的界面。参考案例2:客房管理系统设计一、课程设计的目的和意义在当今经济和商务交往日益频繁的状况下,宾馆服务行业正面临客流量骤增的压力。越来越多的宾馆饭店都认识到传统的管理方法已经不能适

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论