C# 课程设计.docx
- 文档编号:12369703
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:34
- 大小:771.13KB
C# 课程设计.docx
《C# 课程设计.docx》由会员分享,可在线阅读,更多相关《C# 课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
C#课程设计
专业方向课程设计
班级:
J计算机0601
姓名:
汤琪
学号:
3061110014
指导老师:
邢玉萍
完成日期:
2010.1.13
第一部分需求分析
一、调查用户需求
本系统的最终用户为在校学生:
1、学校的组织机构情况
与教室管理相关的学校的组织机构有:
学生、教师和教室。
学校的所有日常工作都是围绕着这三大部分进行的。
一个学校下设若干学院,如计算机学院、电汽学院、法学院、财经学院等;一个学院下设若干专业,如计算机学院下设四个专业:
计算机科学与技术、软件、通信和信息安全;一个专业有若干班级;一个班级有若干同学。
一个专业有若干教师。
一个专业开设有若干课程。
一个学校有若干教学楼,如计算机大楼、一号楼、二号楼等;一个教学楼有若干楼层,如一号楼有一层~十二层;一个楼层有若干教室,如一层有1101,1102,1103,1104等教室。
一个教师可以开设若干门课程,一门课程可以由多个老师来教授。
一个教室在不同的时段可以上不同的课程。
2、调查相关部门的业务活动情况
教务处:
教务处需要处理借教室申请信息,使用的数据是纸质版的教室、教师和学生信息,对提出的借用教室申请采用手动的加工和处理,最后给借教室的人输出的是批准或拒绝借用教室的信息,即一个纸质的教室使用条。
3、用户对系统的要求
信息要求:
由于系统的使用主体是教师和学生,因此对系统的信息要求可分为以下几个方面:
a、教师信息
教师的基本信息,主要包括教师的教师编号,教师姓名,性别,所属院系,职称,身份证号等;
b、学生信息
学生的基本信息,主要包括学生的学号,姓名,院系号,身份证号等;
c、教室信息
教室的基本信息,主要包括教室的教室编号,教学楼号,楼层号等;
d、教学楼信息
教学楼的基本信息,主要包括教学楼名称,教学楼编号等;
处理要求:
a、教师查询;
学生通过这个功能,可以查询相关院系相关教师的个人信息以及开课信息,以便能更好地了解教师及其开课情况。
b、教室查询;
学生通过这个功能,可以查询相关教学楼相关教室的信息以及该教室在每天任一时段的使用情况,或者有课,或者有讲座、或者有活动等等。
这个功能以便使同学能更好地了解教室及其使用情况。
c、课程查询;
学生通过这个功能,可以查询某一课程的详细信息,如同一课程可以有多个教师开课,以便更好地了解任一课程的详细信息。
d、教室借用;
学生通过这个功能,可以借教室,即获得教室在某段时间的使用权,办讲座,开展社团活动等等。
e、我要自习;
学生通过这个功能,可以查询当天某一时段或多个时段的空闲教室,去上自习。
安全性与完整性要求:
安全性要求:
a、系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证
用户身份不被盗用;
b、系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;
c、系统应对不同用户设置不同的权限,区分不同的用户,如学生、教师和教务处管理人员。
学生(只能查询教室、教师和课程信息以及提出借用教室申请),教师(只能查询教室、教师和课程信息,以及提出借用教室申请),教务处管理人员(可进行日常事务的处理,如增加、删除、更新课程、教室、教师信息,并批准或拒绝借用教室的申请)。
完整性要求:
a、各种信息记录的完整性,信息记录内容不能为空;
b、各种数据间相互的联系的正确性;
c、相同的数据在不同记录中的一致性。
4、确定系统的边界
经对前面的需求调查和初步的分析,确定由计算机完成的工作时对数据进行各种管理和处理,具体的工作内容见第二部分,由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。
二、系统功能的设计和划分
根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几个子系统:
教室查询子系统
教师查询子系统
课程查询子系统
教室借用子系统
我要自习子系统
各子系统完成的功能如下:
1.教室查询子系统
1.关键词搜索
在输入框中直接输入想要查询的教室的编号,即可得到教室在任一时段的使用信息。
2.目录搜索
根据教学楼教室,帮助同学寻找想要搜索的教室。
进入教室页面后,即可得所查教室在任一时段的使用信息。
2、教师查询子系统
1.关键词搜索
在输入框中直接输入想要查询的老师的名字,即可得到教师的个人信息及开课信息。
2.目录搜索
根据院系教师,帮助同学寻找想要搜索的老师。
进入教师页面后,即可得教师的个人信息及开课信息。
3、课程查询子系统
1.关键词搜索
在输入框中直接输入想要查询的课程的名字,即可得到课程的详细信息。
2.目录搜索
根据院系课程,帮助同学寻找想要搜索的课程。
进入课程页面后,即可得课程的详细信息。
4、教室借用子系统
点击教室借用后,进入一个用户登录界面,学生或者教师需要登录,才能给予空闲教室,发出借用教室的申请,等待管理员批准。
5、我要自习子系统
根据教学楼楼层,输入时段,寻找此时的空闲的教室,帮助同学寻找上自习的教室。
进入教室页面后,即可得该教学楼某一时段在任意时段的空闲信息。
第二部分数据流图
1、教师查询子系统
2、教室查询子系统
3、课程查询子系统
4、教室借用子系统
5、后台管理子系统
6、我要自习子系统
第三部分数据字典
1.教学楼数据字典:
属性名
存储代码
类型
长度
备注
教学楼号
bno
String
20
学校教学楼号
教学楼名称
bname
String
20
学校教学楼名称
2.教室数据字典:
属性名
存储代码
类型
长度
备注
教室编号
clno
Int
10
教学楼中教室号
教学楼号
bno
String
6
教室所在教学楼号
楼层
floor
String
10
教室所在楼层
3.院系数据字典:
属性名
存储代码
类型
长度
备注
院系号
deptno
String
20
学校中院系的编号
院系名称
deptname
String
20
学校中院系名称
4.课程数据字典:
属性名
存储代码
类型
长度
备注
课程号
cno
String
20
课程编号
课程名称
cname
String
20
课程名称
学分
credit
String
1
课程学分
课程类型
category
String
10
课程类型(全校选修、专业选修、专业必修、人文修养、艺术教育)
开课院系号
deptno
String
20
课程开课的院系
5.教师数据字典:
属性名
存储代码
类型
长度
备注
教师编号
tno
String
20
教师编号
教师姓名
tname
String
10
教师姓名
性别
sex
String
2
教师性别(男、女)
所属院系
deptno
String
20
教师所属院系
职称
title
String
10
教师的职称(教授、副教授、讲师)
身份证号
tid
String
18
教师身份证号
6.学生数据字典:
属性名
存储代码
类型
长度
备注
学号
sno
String
10
学生编号
姓名
sname
String
10
学生姓名
院系号
deptno
String
20
学生所属院系
身份证号
sid
String
18
学生的身份证号
7.教师开课表数据字典:
属性名
存储代码
类型
长度
备注
教师号
tno
String
20
教师编号
教室号
clno
String
10
教室编号
课程号
cno
String
20
该教室所开的课程
工作日
weekday
String
8
工作日
上课时间段
period
String
20
上课时间段
8.教室借用表数据字典:
属性名
存储代码
类型
长度
备注
教室号
clno
String
10
教室编号
使用人编号
sno
String
10
借用教室人员的编号
使用日期
usedate
String
10
使用教室的日期
工作日
Weekday
String
8
使用教室的星期
借用时间段
Period
String
20
使用教室的时间段
用途
Use
String
100
借用教室的用途
状态
Usestatus
String
1
借用教室审批的状态
第四部分概念结构设计
学生管理信息系统分E-R图
n
m
讲授
教师
借用
n
m
教室
学生
学生管理信息系统总E-R图
第五部分逻辑设计
以下是教室管理信息系统的关系模型:
1.教学楼(教学楼号,教学楼名称)
2.教室(教室编号,教学楼号,楼层)
3.院系(院系号,院系名称)
4.课程(课程号,课程名称,学分,课程类型,开课院系号)
5.教师(教师编号,教师姓名,性别,所属院系,职称,身份证号)
6.学生(学号,姓名,院系号,身份证号)
7.教师开课表(教室号,上课时间,上课时间段,教师号,课程号,)
8.教室借用表(教室编号,使用人编号,使用日期,借用时间段,工作日,用途)
性能优化:
1.使用触发器当往教师开课表中插入一条数据时同时往教室借用表中插入一条数据,在查询时可以大幅度提高查询速度。
如果不在乎空间则可以用空间换效率。
2.通过建立QUERY视图,把教师查询、教室查询、课程查询三种查询方法统一起来。
第六部分程序部分代码及截图
关系图:
1.用户登陆界面
privatevoidbutton2_Click(objectsender,EventArgse)
{
Close();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringstrName=textBox1.Text;
stringstrPwd=textBox2.Text;
stringstrRole=comboBox1.Text;
stringstrSql=null;
if(strRole=="学生")
{
strSql="SELECT*From登陆WHEREflag=2ANDUsename='"+strName+"'ANDpassword='"+strPwd+"'";
}
elseif(strRole=="教师")
{
strSql="SELECT*From登陆WHEREflag=1ANDUsename='"+strName+"'ANDpassword='"+strPwd+"'";
}
elseif(strRole=="管理员")
{
strSql="SELECT*From登陆WHEREflag=0ANDUsename='"+strName+"'ANDpassword='"+strPwd+"'";
}
else
{
MessageBox.Show("请选择用户类型");
return;
}
stringsource=Source.getSource();
SqlConnectionconn=newSqlConnection(source);
conn.Open();
SqlCommandcmd=newSqlCommand(strSql,conn);
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read())
{
if(comboBox1.Text=="学生")
{
Form1studentform=newForm1();
//studentform.setStateName(strName);
studentform.Show();
this.Visible=false;
}
if(comboBox1.Text=="教师")
{
Form1teacherform=newForm1();
//adminform.setStateName(strName);
teacherform.Show();
;
this.Visible=false;
}
if(comboBox1.Text=="管理员")
{
Form3adminform=newForm3();
//adminform.setStateName(strName);
adminform.Show();
;
this.Visible=false;
}
}
else
{
MessageBox.Show("用户名或密码错误!
");
}
}
}
}
教师登陆的用户名和密码均为teacher,管理员登陆的用户名和密码均为admin。
2.学生及教师登陆成功界面
教师信息查询
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
if(boBox1.Text.Trim()=="")
{
boBox1.Focus();
}
else
{
if(boBox2.Text.Trim()=="")
{
boBox2.Focus();
}
else
{
MySql="Selecttname,sex,title,tidfrom教师,院系wheretname='"+boBox2.Text+"'and教师.deptno=院系.deptnoand院系.deptname='"+boBox1.Text+"'";
//调试生成的查询语句是否正确的语句
//MessageBox.Show(MySql);
connection=MyFunction.GetSqlConnection();
//获得数据适配器对象
MySqlDataAdapter=MyFunction.GetSqlDataAdapter(MySql);
//给数据适配器对象添加表映射
MySqlDataAdapter.TableMappings.Add("Table",MyTable);
//设置数据适配器对象的查询语句
MySqlDataAdapter.SelectCommand=newSqlCommand(MySql,connection);
//绑定数据适配器对象
MySqlCommandBulider=newSqlCommandBuilder(MySqlDataAdapter);
//填充数据集
DataSetMyDataSet=newDataSet();
MySqlDataAdapter.Fill(MyDataSet);
//赋予数据绑定对象的数据源属性
this.fk教师院系bindingSource.DataSource=MyDataSet;
//赋予数据绑定对象数据成员属性
this.fk教师院系bindingSource.DataMember=MyTable;
//赋予数据网格对象的数据源属性
this.dataGridView1.DataSource=this.fk教师院系bindingSource;
}
}
}
catch(SqlExceptionex)
{
MessageBox.Show(ex.Message,"提示信息!
",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
}
}
教师课表查询
代码与教师信息查询仅有一处不同:
MySql="selecttname,cnamefrom教师,院系,讲授,课程where院系.deptname='"+boBox1.Text+"'andtname='"+boBox2.Text+"'and教师.deptno=院系.deptnoand讲授.tno=教师.tnoand讲授.cno=课程.cno;";
教室查询
//教师使用情况
privatevoidbutton3_Click(objectsender,EventArgse)
{
try
{
if(boBox3.Text.Trim()=="")
{
boBox3.Focus();
}
else
{
if(boBox4.Text.Trim()=="")
{
boBox4.Focus();
}
else
{
//教师使用情况
MySql="Select课程.cname,讲授.weekday,讲授.Period,教师.tnameFrom教师,讲授,课程,教学楼Where讲授.clno='"+boBox4.Text+"'and教学楼.bname='"+boBox3.Text+"'and讲授.bno=教学楼.bnoand讲授.tno=教师.tnoand课程.cno=讲授.cno;";
其他代码与之前一样
}
学生使用情况查询与教师使用情况查询仅有一处代码不同:
MySql="Select借用.Weekday,借用.PeriodFrom借用,教学楼Where借用.clno='"+boBox4.Text+"'and教学楼.bname='"+boBox3.Text+"'and借用.bno=教学楼.bno;";
课程查询
privatevoidbutton5_Click(objectsender,EventArgse)
{
//this.dataGridView5.DataSource=null;
try
{
if(boBox5.Text.Trim()=="")
{
boBox1.Focus();
}
else
{
MySql="selecttnamefrom教师,讲授,课程where教师.tno=讲授.tnoand讲授.cno=课程.cnoand课程.cname='"+boBox5.Text+"';";
其他代码与之前一样
}
教室借用
privatevoidbutton6_Click(objectsender,EventArgse)
{
try
{
if(boBox6.Text.Trim()=="")
{
boBox6.Focus();
}
else
{
if(boBox7.Text.Trim()=="")
{
boBox7.Focus();
}
else
{
if(boBox9.Text.Trim()=="")
{
boBox9.Focus();
}
else
{
MySql="insertinto借用(bno,clno,sno,Weekday,Period)values('"+boBox6.Text+"','"+boBox7.Text+"','"+this.textBox1.Text+"','"+boBox9.Text+"','"+boBox8.Text+"');selectbno,clno,sno,Weekday,Periodfrom借用wherebno='"+boBox8.Text+"'andclno='"+boBox7.Text+"'andWeekday='"+boBox9.Text+"'andPeriod='"+boBox5.Text+"'";
其他代码与之前一样
}
我要自习
privatevoidbutton7_Click(objectsender,EventArgse)
{
try
{
if(boBox3.Text.Trim()=="")
{
boBox3.Focus();
}
else
{
if(boBox4.Text.Trim()=="")
{
boBox4.Focus();
}
else
{
MySql="Select教学楼.bname,教室.clnoFrom教室,教学楼Where教学楼.bno=教室.bnoand教室.clnonotin(Select教室.clnoFrom教室,讲授where教室.clno=讲授.clnoand讲授.Usestaus=1and讲授.period='"+boBox12.Text+"'andweekday='"+boBox11.Text+"');";
其他代码与之前一样
}
3.管理员登陆成功界面
privatevoidbutton1_Click(objectsender,EventArgse)
{
Form8teacherinformation=newForm8();
teacherinformation.Show();
this.Visible=false;
}
privatevoidbutton2_Click(objectsender,E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 课程设计