软件工程课程设计任务书指导教师(签章):2017 年 6 月15 日计算机工程系软件工程课程设计报告选题名称:学生信息管理系统系(院):计算机工程与软件工程学院专业:计算机科学与技术班级:姓名:学号:指导教师:学年学期:2016 ~ 2017 学年第 2 学期月15 日摘要:学生信息管理系统是一个小型的管理系统,其开发技术是后台数据库的建立和维护、前端应用程序的开发两个方面。
数据库要体现数据精简和数据一致性、联系强的特点,应用程序要体现功能健全和使用方便的特点。
设计报告介绍了与学生相关的信息,划分数据库,将系统划分为录入新生信息、程序学生信息、更新学生信息、删除学生信息、添加用户、修改密码、添加班级、添加课程、退出系统等功能,来了解学生的基本身份信息。
系统达到的预期的目标是录入新生信息、程序学生信息、更新学生信息、删除学生信息、添加用户、修改密码、添加班级、添加课程、退出系统的增删改查的功能。
本系统只是个人的基本信息的增删改查,可随着添加更多的程序去实现更多的功能。
关键词:数据库;ER图;目录1 需求分析.................................................................................................. 错误!未定义书签。
2 概念设计.................................................................................................. 错误!未定义书签。
3 逻辑设计.................................................................................................. 错误!未定义书签。
4 编程实现.................................................................................................. 错误!未定义书签。
总结与体会.................................................................................................... 错误!未定义书签。
致谢.......................................................................................................... 错误!未定义书签。
参考文献........................................................................................................ 错误!未定义书签。
软件工程课程设计报告1 需求分析1.1 系统需求随着学校人数的不断扩大,学生的信息不断增多,面对如此庞大的信息量,传统的统计学生信息的方法不仅占用大量的人力物力,而且容易出错,已经不再使用,这需要我们设计出一个简单方便的计算机系统来解决这个问题,来对学校所有学生的信息进行处理。
方便进行增删改查的功能,使一切更加方便。
现代科技的进步已经是日新月异,应将这种方便的技术应用于人民的日常生活,方便人民。
保障信息的正确性、完整性、实时性。
1.2 可行性分析了解了系统的具体的功能,对其实现的可行性进行分析。
该系统所需的硬件设备市场价格低,操作系统采用Windows7的操作系统,采用C#编写的,技术上是可行的。
每个人都有学号,所以登录号和密码均可以设置为学号,所以管理上也是可行的。
1.3 功能需求学生信息管理系统具有以下功能:学籍管理:对学生的信息档案进行管理,主要包括学生档案信息的修改、删除、添加、档案查询及档案输出等,其中档案查询可以根据学号、姓名查询需要的信息;档案输出可以输出学生档案、成绩、课程表等。
学生档案记录主要包括:学号、姓名、出生日期、年龄、性别、政治面貌、入学时间、个人简介、照片、家庭住址、邮编、所在系别以及所学专业等字段。
成绩管理:对学生的成绩进行管理,主要就是成绩查询,成绩查询可以按学号、姓名进行查询。
成绩记录主要包括:学期、学号、姓名、课程号以及成绩字段等。
课程管理:学生可以通过该模块进行课程表查看、打印课程表。
选修课选择:对学生报选修课进行管理,学生可以对自己喜爱的课程进行选择。
系统维护:教师对学生的密码进行管理,主要包括增加新用户和用户修改。
其中用户修改可以实现对学生的密码修改和学生用户名的删去。
系统辅助工具:通过该模块用户可以打开一些辅助工具,如记事本和记事本。
退出系统:离开本学生信息管理系统。
图1 模块图1.4 数据流图图2 数据流图数据字典名字:档案信息表描述:学生的档案信息定义:学号+姓名+出生日期+年龄+性别+政治面貌+入学时间+个人简介+照片+家庭住址+邮编+所在系别以及所学专业位置:输出到屏幕名字:成绩表描述:学生的成绩表定义:学期+学号+姓名+课程号+成绩字段位置:输出到屏幕名字:课程管理描述:数据流定义:选课位置:输出到屏幕图3 ER图3.1 E-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 用户登录界面代码:private void Login_Click(object sender, EventArgs e){string ConnString = "Data Source=ADMIN-PC;DataBase=MSM;User ID=sa;Pwd=123";SqlConnection conn = new SqlConnection(ConnString);string sql=string.Format("select Password from UserInfo where UserName='{0}'",;try{conn.Open();SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader reader = cmd.ExecuteReader();if (reader.Read()){if ( == (string)reader["Password"].ToString().Trim()) {this.Hide();Interface inter = new Interface();inter.Show();}else{MessageBox.Show("密码出错!", "操作提示", MessageBoxButtons.OK, rmation);;;;}}else{ MessageBox.Show("此用户不存在!", "存在提示", MessageBoxButtons.OK, rmation);}}catch(Exception ex){ MessageBox.Show("出错信息!" + ex.Message); }finally{ conn.Close(); }}4.2 登录主界面图4-2 登录主界面代码:private void EntryNewInformation_Click(object sender, EventArgs e){EntryNewInformation eni = new EntryNewInformation();eni.Show();}private void InquireStuInformation_Click(object sender, EventArgs e){InquireStuInformation isi = new InquireStuInformation();isi.Show();}private void UpdateNewInformation_Click(object sender, EventArgs e) {UpdateNewInformation uni = new UpdateNewInformation();uni.Show();}private void AddUser_Click(object sender, EventArgs e){AddUser au = new AddUser();au.Show();}private void ChangePassword_Click(object sender, EventArgs e){ChangePassword cp = new ChangePassword();cp.Show();}private void AddClass_Click(object sender, EventArgs e){AddClass ac = new AddClass();ac.Show();}private void AddCourse_Click(object sender, EventArgs e){AddCourse aco=new AddCourse();aco.Show();}private void ExitSystem_Click(object sender, EventArgs e){if (MessageBox.Show("您确定要退出吗", "操作提示", MessageBoxButtons.YesNo) == DialogResult.Yes)this.Close();}private void DeleteStuRecord_Click(object sender, EventArgs e){DeleteStuRecord dsr = new DeleteStuRecord();dsr.Show();}4.3 录入新生信息图4-3 录入新生信息代码:private void Keep_Click(object sender, EventArgs e){string ConnString = "Data Source=ADMIN-PC;DataBase=MSM;User ID=sa;Pwd=123";SqlConnection conn = new SqlConnection(ConnString);if (""|| == "" || == "" || == "" || == "" || == "" || == "" || == "" || == "" || == "" || == ""){ MessageBox.Show("请输入完整信息!", "操作提示", MessageBoxButtons.OK, rmation);}else{string sql = string.Format("insert intoStudentInfo(Name,StudentNumber,Sex,Age,[National],Home,Class,Politic,Id Number,Position,Skill)values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10 }')", ,, , , , , , , , , ;SqlCommand cmd = new SqlCommand(sql, conn);try{conn.Open();int count = cmd.ExecuteNonQuery();if (count < 1){ MessageBox.Show("录入失败", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{ MessageBox.Show("录入成功!", "操作提示", MessageBoxButtons.OK, rmation);}}catch(Exception ex){ MessageBox.Show("出错信息!" + ex.Message); }finally{ conn.Close(); }}}4.4 查询学生信息图4-4 查询学生信息代码:private void Inquire_Click(object sender, EventArgs e){string ConnString = "Data Source=ADMIN-PC;InitialCatalog=MSM;User ID=sa;Pwd=123";SqlConnection conn = new SqlConnection(ConnString);if ( == ""){MessageBox.Show("请输入查询项目", "操作提示",MessageBoxButtons.OK, rmation);}else{try{string Name;string StudentNumber;string Sex;string Age;string National;string Home;string Class;string Politic;string IdNumber;string Position;string Skill;conn.Open();string sql = string.Format("select * from StudentInfowhere Name='{0}'", ;SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader reader = cmd.ExecuteReader(); if (!reader.HasRows){MessageBox.Show("对不起,没有您要查找的用户", "操作提示", MessageBoxButtons.OK, rmation);}else{;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];ListViewItem lvitem = new ListViewItem(Name);lvitem.Tag = (string)reader["Name"];;string[] { StudentNumber, Sex, Age, National, Home, Class, Politic, IdNumber, Position, Skill });}}reader.Close();}catch(Exception ex){ MessageBox.Show("出错信息!" + ex.Message); }finally{ conn.Close(); }}}4.5 更新学生信息图4-5 更新学生信息时显示图4-6 更新学生信息后显示代码:首先在查找主段的基础上,将查找的值一次赋给TextBox所对应的值。