软件工程课程设计学生信息管理系统.docx
《软件工程课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计学生信息管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
软件工程课程设计学生信息管理系统
软件工程课程设计任务书
课题
名称
学生信息管理系统
设计
目的
本课程设计的目的是通过实践使学生经历一个软件系统开发的全过程并受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识去分析、解决实际问题。
实验
环境
1、Windows7及以上
2、SQLServer2008
3、VS.NET
任务
要求
任务:
完成《学生信息管理系统》系统的分析设计工作,并选用适当的开发工具完成系统的开发。
要求:
1、完成需求分析;
2、进行数据库的概念设计;
3、进行数据库的逻辑设计;
4、进行数据库的物理设计;
5、进行应用程序设计;
6、编程实现。
工作进度计划
序号
起止日期
工作内容
1
2017.06.12-2017.06.13
需求分析
2
2017.06.13-2017.06.14
概念设计
3
2017.06.14-2017.12.15
逻辑设计
4
2017.06.15-2017.06.17
系统设计
5
2017.06.18-2017.06.19
课程设计报告纂写
指导教师(签章):
2017年6月15日
计算机工程系
软件工程
课程设计报告
选题名称:
学生信息管理系统
系(院):
计算机工程与软件工程学院
专业:
计算机科学与技术
班级:
姓名:
学号:
指导教师:
学年学期:
2016~2017学年第2学期
2017年6月15日
摘要:
学生信息管理系统是一个小型的管理系统,其开发技术是后台数据库的建立和维护、前端应用程序的开发两个方面。
数据库要体现数据精简和数据一致性、联系强的特点,应用程序要体现功能健全和使用方便的特点。
设计报告介绍了与学生相关的信息,划分数据库,将系统划分为录入新生信息、程序学生信息、更新学生信息、删除学生信息、添加用户、修改密码、添加班级、添加课程、退出系统等功能,来了解学生的基本身份信息。
系统达到的预期的目标是录入新生信息、程序学生信息、更新学生信息、删除学生信息、添加用户、修改密码、添加班级、添加课程、退出系统的增删改查的功能。
本系统只是个人的基本信息的增删改查,可随着添加更多的程序去实现更多的功能。
关键词:
数据库;ER图;
软件工程课程设计报告
1需求分析
1.1系统需求
随着学校人数的不断扩大,学生的信息不断增多,面对如此庞大的信息量,传统的统计学生信息的方法不仅占用大量的人力物力,而且容易出错,已经不再使用,这需要我们设计出一个简单方便的计算机系统来解决这个问题,来对学校所有学生的信息进行处理。
方便进行增删改查的功能,使一切更加方便。
现代科技的进步已经是日新月异,应将这种方便的技术应用于人民的日常生活,方便人民。
保障信息的正确性、完整性、实时性。
1.2可行性分析
了解了系统的具体的功能,对其实现的可行性进行分析。
该系统所需的硬件设备市场价格低,操作系统采用Windows7的操作系统,采用C#编写的,技术上是可行的。
每个人都有学号,所以登录号和密码均可以设置为学号,所以管理上也是可行的。
1.3功能需求
学生信息管理系统具有以下功能:
学籍管理:
对学生的信息档案进行管理,主要包括学生档案信息的修改、删除、添加、档案查询及档案输出等,其中档案查询可以根据学号、姓名查询需要的信息;档案输出可以输出学生档案、成绩、课程表等。
学生档案记录主要包括:
学号、姓名、出生日期、年龄、性别、政治面貌、入学时间、个人简介、照片、家庭住址、邮编、所在系别以及所学专业等字段。
成绩管理:
对学生的成绩进行管理,主要就是成绩查询,成绩查询可以按学号、姓名进行查询。
成绩记录主要包括:
学期、学号、姓名、课程号以及成绩字段等。
课程管理:
学生可以通过该模块进行课程表查看、打印课程表。
选修课选择:
对学生报选修课进行管理,学生可以对自己喜爱的课程进行选择。
系统维护:
教师对学生的密码进行管理,主要包括增加新用户和用户修改。
其中用户修改可以实现对学生的密码修改和学生用户名的删去。
系统辅助工具:
通过该模块用户可以打开一些辅助工具,如记事本和记事本。
退出系统:
离开本学生信息管理系统。
图1模块图
1.4数据流图
图2数据流图
2概念设计
数据字典
名字:
档案信息表
描述:
学生的档案信息
定义:
学号+姓名+出生日期+年龄+性别+政治面貌+入学时间+个人简介+照片+家庭住址+邮编+所在系别以及所学专业
位置:
输出到屏幕
名字:
成绩表
描述:
学生的成绩表
定义:
学期+学号+姓名+课程号+成绩字段
位置:
输出到屏幕
名字:
课程管理
描述:
数据流
定义:
选课
位置:
输出到屏幕
图3ER图
3逻辑设计
3.1E-R模型向关系模式的转换
(1)若实体间的联系是1:
1的,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。
(2)若实体间的联系是1:
N的,则在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。
(3)若实体间的联系是M:
N的,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
课程关系模式(课程号,课程名,学分)
学生关系模式(学号,姓名,性别,年龄,民族,籍贯,班级,政治面貌,身份证号,职位,所学专业)
班级关系模式(学号,课程号,班级号,年级,最大人数)
3.2表格设计
3.2.1用户信息表
表3-1用户信息表
列名
数据类型
允许空
UserName
Varchar(10)
否
Password
Varchar(10)
是
3.2.2班级信息表
表3-2班级信息表
列名
数据类型
允许空
ClassNumber
Varchar(10)
是
Grade
Varchar(10)
是
MaxNumber
Varchar(10)
是
StudentNumber
Varchar(10)
否
CourseNumber
Varchar(10)
否
3.2.3课程信息表
表3-3课程信息表
列名
数据类型
允许空
CourseNumber
Varchar(10)
否
CourseName
Varchar(10)
是
Credit
Varchar(10)
是
3.2.4学生信息表
表3-4学生信息表
列名
数据类型
允许空
Name
Varchar(10)
是
StudentNumber
Varchar(10)
否
Sex
Varchar(10)
是
Age
Varchar(10)
是
【National】
Varchar(10)
是
Home
Varchar(10)
是
Class
Varchar(10)
是
Politic
Varchar(10)
是
IdNumber
Varchar(10)
是
Position
Varchar(10)
是
Skill
Varchar(10)
是
4编程实现
4.1用户登录
图4-1用户登录界面
代码:
privatevoidLogin_Click(objectsender,EventArgse)
{
stringConnString="DataSource=ADMIN-PC;DataBase=MSM;UserID=sa;Pwd=123";
SqlConnectionconn=newSqlConnection(ConnString);
stringsql=string.Format("selectPasswordfromUserInfowhereUserName='{0}'",UserName.Text.Trim());
try
{
conn.Open();
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read())
{
if(this.Password.Text.Trim()==(string)reader["Password"].ToString().Trim())
{
this.Hide();
Interfaceinter=newInterface();
inter.Show();
}
else
{
MessageBox.Show("密码出错!
","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.UserName.Clear();
this.Password.Clear();
this.UserName.Focus();
}
}
else
{MessageBox.Show("此用户不存在!
","存在提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch(Exceptionex)
{MessageBox.Show("出错信息!
"+ex.Message);}
finally
{conn.Close();}
}
4.2登录主界面
图4-2登录主界面
代码:
privatevoidEntryNewInformation_Click(objectsender,EventArgse)
{
EntryNewInformationeni=newEntryNewInformation();
eni.Show();
}
privatevoidInquireStuInformation_Click(objectsender,EventArgse)
{
InquireStuInformationisi=newInquireStuInformation();
isi.Show();
}
privatevoidUpdateNewInformation_Click(objectsender,EventArgse)
{
UpdateNewInformationuni=newUpdateNewInformation();
uni.Show();
}
privatevoidAddUser_Click(objectsender,EventArgse)
{
AddUserau=newAddUser();
au.Show();
}
privatevoidChangePassword_Click(objectsender,EventArgse)
{
ChangePasswordcp=newChangePassword();
cp.Show();
}
privatevoidAddClass_Click(objectsender,EventArgse)
{
AddClassac=newAddClass();
ac.Show();
}
privatevoidAddCourse_Click(objectsender,EventArgse)
{
AddCourseaco=newAddCourse();
aco.Show();
}
privatevoidExitSystem_Click(objectsender,EventArgse)
{
if(MessageBox.Show("您确定要退出吗","操作提示",MessageBoxButtons.YesNo)==DialogResult.Yes)
this.Close();
}
privatevoidDeleteStuRecord_Click(objectsender,EventArgse)
{
DeleteStuRecorddsr=newDeleteStuRecord();
dsr.Show();
}
4.3录入新生信息
图4-3录入新生信息
代码:
privatevoidKeep_Click(objectsender,EventArgse)
{
stringConnString="DataSource=ADMIN-PC;DataBase=MSM;UserID=sa;Pwd=123";
SqlConnectionconn=newSqlConnection(ConnString);
if(this.StudentNumber.Text==""||this.Name.Text==""||this.Sex.Text==""||this.Age.Text==""||this.National.Text==""||this.Home.Text==""||this.Class.Text==""||this.IdNumber.Text==""||this.Politic.Text==""||this.Position.Text==""||this.Skill.Text=="")
{MessageBox.Show("请输入完整信息!
","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
stringsql=string.Format("insertintoStudentInfo(Name,StudentNumber,Sex,Age,[National],Home,Class,Politic,IdNumber,Position,Skill)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')",this.Name.Text,this.StudentNumber.Text,this.Sex.Text,this.Age.Text,this.National.Text,this.Home.Text,this.Class.Text,this.Politic.Text,this.IdNumber.Text,this.Position.Text,this.Skill.Text);
SqlCommandcmd=newSqlCommand(sql,conn);
try
{
conn.Open();
intcount=cmd.ExecuteNonQuery();
if(count<1)
{MessageBox.Show("录入失败","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
else
{MessageBox.Show("录入成功!
","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch(Exceptionex)
{MessageBox.Show("出错信息!
"+ex.Message);}
finally
{conn.Close();}
}
}
4.4查询学生信息
图4-4查询学生信息
代码:
privatevoidInquire_Click(objectsender,EventArgse)
{
stringConnString="DataSource=ADMIN-PC;InitialCatalog=MSM;UserID=sa;Pwd=123";
SqlConnectionconn=newSqlConnection(ConnString);
if(this.NameInquire.Text=="")
{
MessageBox.Show("请输入查询项目","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
try
{
stringName;
stringStudentNumber;
stringSex;
stringAge;
stringNational;
stringHome;
stringClass;
stringPolitic;
stringIdNumber;
stringPosition;
stringSkill;
conn.Open();
stringsql=string.Format("select*fromStudentInfowhereName='{0}'",this.NameInquire.Text);
SqlCommandcmd=newSqlCommand(sql,conn);
SqlDataReaderreader=cmd.ExecuteReader();if(!
reader.HasRows)
{
MessageBox.Show("对不起,没有您要查找的用户","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
this.listView1.Items.Clear();
while(reader.Read())
{
Name=(string)reader[0];
StudentNumber=(string)reader[1];
Sex=(string)reader[2];
Age=(string)reader[3];
National=(string)reader[4];
Home=(string)reader[5];
Class=(string)reader[6];
Politic=(string)reader[7];
IdNumber=(string)reader[8];
Position=(string)reader[9];
Skill=(string)reader[10];
ListViewItemlvitem=newListViewItem(Name);
lvitem.Tag=(string)reader["Name"];
this.listView1.Items.Add(lvitem);
lvitem.SubItems.AddRange(newstring[]{StudentNumber,Sex,Age,National,Home,Class,Politic,IdNumber,Position,Skill});
}
}
reader.Close();
}
catch(Exceptionex)
{MessageBox.Show("出错信息!
"+ex.Message);}
finally
{conn.Close();}
}
}
4.5更新学生信息
图4-5更新学生信息时显示
图4-6更新学生信息后显示
代码:
首先在查找主段的基础上,将查找的值一次赋给TextBox所对应的值。
privatevoidKeepChange_Click(objectsender,EventArgse)
{
stringConnString="DataSource=ADMIN-PC;DataBase=MSM;UserID=sa;Pwd=123";
SqlConnectionconn=newSqlConnection(ConnString);
if(this.NName.Text!
=null||this.NStudentNumber.Text!
=null||this.NSex.Text!
=null||this.NAge.Text!
=null||this.NNational.Text!
=null||this.NHome.Text!
=null||this.NClass.Text!
=null||this.NIdNumber.Text!
=null||this.NPolitic.Text!
=null||this.NPosition.Text!
=null||this.NSkill.Text!
=null)
{
stringsql=string.Format("updateStudentInfosetSex='{0}',Age='{1}',[National]='{2}',Home='{3}',Class='{4}',IdNumber='{5}',Politic='{6}',Position='{7}',Skill='{8}'whereName='{9}'",this.NSex.Text.Trim(),this.NAge.Text.Trim(),this.NNational.Text.Trim(),this.NHome.Text.Trim(),this.NClass.Text.Trim(),this.NPolitic.Text.Trim(),this.NIdNumber.Text.Trim(),this.NPosition.Text.Trim(),this.NSkill.Text.Trim(),this.NameInquire.Text.Trim());
SqlCommandcmd=newSqlCommand(sql,conn);
conn.Open();
try
{
intcount=cmd.ExecuteNonQuery();
if(count<1)
{
MessageBox.Show("更新出错","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
else
{
MessageBox.Show("更新成功!
","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
catch(Exceptionex)
{MessageBox.Show("出错信息!
"+ex.Me