1、帮助文档学生成绩管理系统文档软件工程题 目:学生成绩管理系统学 院: 数信学院 专 业: 软件专业 班 级: 08级软件班 组 名: 第四组 组 成 员: 周昊颖(组长) 赵亚慧 陈艳华 郝梦洁 指导教师: 完成日期: 一、绪论1、引言1.1编写目的 该系统的编写目的是提高学生成绩管理的工作效率,使人们从乏味的数据登记和统计工作中解脱出来,保证工作的准确率,为老师及同学提供充足的信息和快捷的查询手段。数据库作为计算机应用的一部分,对学生成绩查询进行管理具有手工管理无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长等。这些优点能够极大地提高学生成绩查询和管理的效率。1.
2、2项目背景 目前国内一些科研、企事业单位均已经开始应用计算机进行数据类管理,实践表明计算机管理能提高工作效率。与此类似,今年来许多学校也都逐渐应用计算机来进行学生成绩的管理。为响应国家提高人口素质的号召,许多学校每年都在扩招,这在一定程度学校的成绩管理带来许多不便:每个学期要登记考试成绩,学期结束要进行相应的统计。因为工作强度大,所以需要有一种管理方便、错误率小的管理方法来取代人工管理,而应用计算机管理是最有效的途径。2、任务描述2.1目标 学生成绩管理系统为老师及同学提供充足的信息和快捷的查询手段。学生成绩管理系统涉及不同类别的用户,分别为学生、教师和管理员。学生只能对系统的信息进行查询和反
3、馈。而老师则可以对信息进行录入和修改,并根据相关信息对学生的成绩进行求平均值、排序和求总和等相关的操作,但是不能对系统进行管理和进行系统权限的分配。管理员账户则拥有教师和学生拥有的全部权限。2.2运行环境 软件环境:Windows XP操作系统 硬件环境:内存1G,硬盘100G配置以上的计算机3、数据描述3.1输入收据 用户名:000 密码:000 权限:用户 用户名:111 密码:111 权限:管理员3.2输出数据 权限是学生:进入学生成绩查询界面进行操作 权限是教师:进入教师管理界面进行操作 权限是管理员:进入管理员管理界面进行操作4、功能要求学生成绩管理系统主要应用于学校。通过调查,通用
4、的学生成绩管理系统包括学生信息管理、教师信息管理、成绩管理等功能。在系统设计的时候,需要遵循以下原则。(1) 良好的人机界面。(2) 方便的数据查询。(3) 在相应的权限下,增添、修改和删除数据方便。二、需求分析1、需求调查11组织机构调查 曾经调查某一个学校的教务管理人员了解相关学生管理的知识,根据其提供的内容进行分析总结2、功能需求21功能划分 经过分析,学生成绩管理系统所必备的功能应当有登录系统、系统管理、教师管理和学生管理等,其中每个功能都由若干相关联的子功能模块组成。22功能描述 (1)“登录系统”模块完成以下功能: 系统对登录人员的身份进行验证。当前系统权限设置。 (2)“管理员管
5、理”模块完成以下功能: 管理员进入系统程序可以添加、删除管理员及修改当前管理员密码。 管理员可以添加、删除用户,修改用户密码。 管理员可以执行系统所具有的所有操作功能 (3)“教师管理”模块完成以下功能: 成绩的添加,修改和查询。 成绩的排序、统计等操作。 (4)“学生管理”模块完成以下功能: 查询个人成绩、个人基本信息 3、数据描述 31数据库描述学生成绩管理系统中的实体包括:学生、课程、用户,这些实体组成的E-R图如下: 4、性能需求41 数据精确度登录系统的时间不超过20秒 42时间特性:响应时间:2秒更新处理时间:2秒 数据转换与传输时间:视操作系统和计算机而异43适应性:学生成绩管理
6、系统适应性强,可以在所有Windows操作系统 5、运行需求 51 用户界面 界面由Microsoft Visual Studio 2010设计实现,完全基于windows兼容的桌面平台 52 硬件接口 本系统要求运行计算机具有数据库服务器53基本要求 建议环境1) 操作系统: windows系列2) 数据库管理系统:VF数据库3) 开发工具:Microsoft Visual Foxpro软件需求:操作系统WINDOWS 2000 Advance Server以上;数据库服务器端软件Microsoft Visual Foxpro硬件需求:,P4 3.0G Xeon CPU /1G内存/360G
7、(10K) SCSI硬盘的服务器,P3以上微机的客户机,P4 3.0G Xeon CPU /1G内存/36G(10K) RAID硬盘的数据库服务器三、总体设计1、总体结构和模块外部设计 11功能结构根据业务流程和数据流程画出总体功能结构图如下图所示: 12模块设计 管理员模块可以调用教师模块和学生模块。教师模块可以调用学生模块。学生模块属于底层模块不可以调用任何模块。13总体结构设计 备注:箭头表示调用关系 3、数据库设计 31逻辑设计 SC表:记录学生的学号、课程号和成绩 字段名数据类型含义说明空值情况snochar学号不为空cnochar课程号不为空gradefloat成绩可为空Stude
8、nt表:描述学生的基本信息例如学号、姓名、性别、年龄和系别等 字段名数据类型含义说明空值情况snochar学号不为空snamechar姓名可为空sexchar成绩可为空ageint年龄可以为空deptchar系别可以为空Course表:记录了每一门课程的信息如课程号、课程名、先修课程号和学分字段名数据类型含义说明空值情况cnochar课程号不为空cnamechar课程名可为空prechar先修课程可为空xuefenfloat学分可以为空4、外部接口设计41用户界面:界面布局,显示宽度、颜色等如下图所示:5、出错处理设计 51 出错输出信息 出错后弹出错误提示对话框 52出错处理对策: 出错后弹
9、出出错提示对话框确定后重新改正输入的内容继续执行。如果出现严重的错误则需要重新启动学生成绩管理系统以便继续进行工作。四、详细设计1、代码设计 学号设计含义:前两位代表入学年份,其后两位是所在系,在后两位代表本人学号,如0701012、程序设计21、逐个模块给出以下说明: 管理员模块功能 输入项目 :输入管理员的账户、密码并选择管理员权限 输出项目 :管理员的管理页面,可对整个系统的任何一个 模块中的任何一项进行添加、修改和查询 教师管理模块的功能 输入项目 :教师的账户、密码并选则教师权限 输出项目:教师的管理页面,可以对学生进行相关的操作 学生管理模块的功能 输入项目 :输入学生的账户、密码
10、并选择学生权限 输出项目:学生的管理页面,学生可以查询自己的相关信 息23、 接口 限制条件 :同一种权限内的用户名和密码必须是唯一的。五、系统实现 该系统新建了几个类命名空间以减少相同代码的重复编写,例如数据库的连接、数据的读入和数据的现实等。以下是改学生管理系统实现的部分代码,其中加粗的为自己编写,其余的为系统自动生成,编程语言使用的是C#语言。 (1)数据库连接的实现: public SqlConnection conndatabase() string mySqlConnectionString = ( Data Source=localhost; Persist Security I
11、nfo=False; Integrated Security=SSPI; Initial Catalog=stu_Data); SqlConnection mySqlConnection = new SqlConnection(mySqlConnectionString); try mySqlConnection.Open(); catch MessageBox.Show(打开数据库失败,提示); return mySqlConnection; (2)系统的登录实现: private void button1_Click(object sender, EventArgs e) myClass.
12、BaseClass myLoginIni = new myClass.BaseClass(textBox1.Text.Trim (),comboBox1 .Text.Trim(); string sqlString = select user,password from LoginTest where quanxian= + comboBox1.Text.Trim() + ; SqlDataReader myDataReader =myBaseClass.myRead(sqlString); while (myDataReader.Read() if (myDataReader.GetValu
13、e(0).ToString() = textBox1.Text.Trim() if (myDataReader.GetValue(1).ToString() =textBox2.Text.Trim() myDataReader.Close(); this.Visible = false; switch (comboBox1.SelectedIndex) case 0: myStudentInfoAdmin.ShowDialog(); break; ; case 1: myTeacherInfoAdmin.ShowDialog(); break; ; case 2: myAdmin.ShowDi
14、alog(); break; this.Close(); return; else MessageBox.Show(密码错误!, 提示); textBox2.Text = ; textBox2.Focus(); return; else textBox1.Focus(); continue; MessageBox.Show(输入的用户名错误, 提示); textBox1.Text = ; textBox1.Focus(); return; private void button2_Click(object sender, EventArgs e) This. Close(); private
15、void Form1_Load(object sender, EventArgs e) comboBox1.SelectedIndex = 0; private void button3_Click(object sender, EventArgs e) this.Hide(); Admin.Show(); (1) 基本功能函数的实现: 构造函数用来传递用户名和权限 public BaseClass(string struserName,string trquanxian) userName = struserName; quanxian = strquanxian; 将查到的值显示出来 pu
16、blic void ShowDataGrid(string sqlStr, DataGridView myDataGridView) SqlDataAdapter mySqlDataAdapter = new qlDataAdapter(sqlStr,link .conndatabase(); DataSet myDataSet = new DataSet(); mySqlDataAdapter.Fill(myDataSet); myDataGridView.DataSource = myDataSet.Tables0.DefaultView; myDataGridView.Visible =
17、 true; 读入数据的操作 public SqlDataReader myRead(string sqlString) SqlCommand mySqlCommand = new SqlCommand(sqlString, link.conndatabase(); SqlDataReader myDataReader = mySqlCommand.ExecuteReader(); return myDataReader; (2) 删除用户函数的实现: public bool deUser(string sqlString,ComboBox myComboBox) int i; for (i=
18、0; i 0) try Convert.ToInt32(textBox5.Text.Trim(); catch MessageBox.Show(输入年龄类型错误, 警告); textBox5.Text = ; textBox5.Focus(); return; if (Convert.ToInt32(textBox5.Text.Trim() 120 | Convert.ToInt32(textBox5.Text.Trim() 1) MessageBox.Show(输入年龄超出范围, 警告); textBox5.Text = ; textBox5.Focus(); return; string
19、sqlString1 = select * from Student where no=+textBox2.Text.Trim()+; SqlDataReader myDataReader = myBaseClass.myRead(sqlString1); if(myDataReader.HasRows) MessageBox.Show(此学号已经存在, 提示); textBox2.Text = ; textBox2.Focus(); return; string sqlString = ( insert into Student(sno,sname,age,sex,dept)values(
20、+ textBox2.Text.Trim().ToString() + , + textBox3.Text.Trim().ToString() + , + textBox5.Text.Trim().ToString() + , + textBox6.Text.Trim().ToString() + ,); switch (comboBox1.SelectedIndex) case 0: sqlString += 男; break; ; case 1: sqlString += 女; break; ; sqlString += ); sqlString += ( insert into Logi
21、nTest(user,password,quanxian) values(+ textBox2.Text.Trim().ToString() +, + textBox2.Text.Trim().ToString() + ,学生); SqlDataReader myDataReader1 = myBaseClass.myRead(sqlString); MessageBox.Show(添加成功, 提示); textBox2.Text=; textBox3.Text=; textBox5.Text=; textBox6.Text=;myItemsAddClass.ItemsAdd(学号,Stude
22、nt,comboBox3); return; (5)学生信息查询实现 private void button1_Click(object sender, EventArgs e) string sqlString = ( select Student.sno,sname,sex,age,dept from Student); myBaseClass.ShowDataGrid(sqlString ,dataGridView1); 六、系统测试1、测试方案: 采用黑盒测试中等价类划分的方法进行学生管理系统的功能进行测试。由于很多的模块测试用的方法基本相同,所以在文档中只写出了部分的测试项目和测试用
23、例,其他的就一带略过。2、测试项目说明 21测试项目名称及测试内容 (1)登录测试 输入一个有效的用户; 用户名错误; 密码错误 (2)添加学生信息测试 年龄大于200 输入已经存在的学生信息 不输入信息就保存 输入不存在的正确的学生信息22 测试用例 输入:用户为1 密码111,权限管理员 输出:用户名 错误输入:用户名0001,密码222,权限管理员输出:密码错误输入:用户名111,密码111,权限管理员输出:进入页面七、设计总结 这次完成的这个学生成绩管理系统确实给我们组成员留下了很深的印象,也让我更深刻的认识到了动手的必要性。一方面,这次的这个作业锻炼了我们的动手能力和动脑能力,使自己
24、可以在电脑前静下心来认真的思考学习,领会老师讲过的设计思想,从而锻炼自己编程的能力。虽然平时也会写些小的程序,但都达不到锻炼自己的目的,往往由于过于急躁而放弃,但是,这次我们强迫自己必须静下心一点点做成了,有一种成就感。但更多的是锻炼了自己的思维能力和动手能力和分析解决问题的能力。另一方面,我们体会最深的那就是一个我们必须学会调试自己的程序,当遇到输出结果和预想的有出入是,自己经过思考一点一点的去调试自己的程序,找出问题的所在,然后静下心慢慢的解决它,我觉得这是一个程序员必须具备的能力。出错了并不可怕,要自己一点一点的解决。另外,在做之前,一定要先明白目的,这样设计起来才有根据,设计出来的系统才能是正确的还有就是好多以前没学过的东西自己一定要努力的看,这样才能
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1