计算机考试系统设计与实现.doc

上传人:laozhun 文档编号:4123851 上传时间:2023-04-06 格式:DOC 页数:33 大小:338KB
返回 下载 相关 举报
计算机考试系统设计与实现.doc_第1页
第1页 / 共33页
计算机考试系统设计与实现.doc_第2页
第2页 / 共33页
计算机考试系统设计与实现.doc_第3页
第3页 / 共33页
计算机考试系统设计与实现.doc_第4页
第4页 / 共33页
计算机考试系统设计与实现.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《计算机考试系统设计与实现.doc》由会员分享,可在线阅读,更多相关《计算机考试系统设计与实现.doc(33页珍藏版)》请在三一办公上搜索。

1、目录内容摘要:1关 键 词:1Abstract:1Key words:1第一章 引 言11.1 项目开发背景1第二章 PHP MYSQL简介2.1 PHP介绍22.2 MYSQL介绍3第三章 系统分析 3.1可行性分析5 3.2需求分析53.2.1.数据流图(DFD)73.2.2数据字典11第四章 总体设计 4.1模块设计13 4.2 系统维护与改进21第五章 数据库详细设计5.1确定数据库的存储结构225.2数据库的实施与维护235.3数据库的维护28参考文献29致谢30第二章PHP MYSQL简介2.1 PHP介绍PHP,是英文超级文本预处理语言Hypertext Preprocessor

2、的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。 它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以

3、用C、C+进行程序的扩展! 94年由Rasmus Lerdorf创建,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在1995年中,PHP2.0发布了。第二版定名为PHP/FI

4、(Form Interpreter)。PHP/FI加入了对mySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI;1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。 PHP 的简称原本为 Personal Home Page,是Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的 Perl

5、 程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开发布,希望可以透过社群来加速程序开发与寻找错误。这个发布的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。 在1997年,任职于 Technion IIT 公司的

6、两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.5。经过几个月测试,开发团队在1997年11月发布了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写 PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine7,他们也在以色列的 Ramat Gan 成立了 Zend Technol

7、ogies 来管理 PHP 的开发。 在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine5。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。 2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中

8、,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。2.2 MYSQL介绍 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其

9、是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。 MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的 MySQL AB创始人之一Mon

10、ty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。 MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。系统特性1使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性 2支持AIX、FreeBSD、H

11、P-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 3为多种编程语言提供了API。这些编程语言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 4支持多线程,充分利用CPU资源 5优化的SQL查询算法,有效地提高查询速度 6既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名 7提供TCP/IP、ODBC和

12、JDBC等多种数据库连接途径 8提供用于管理、检查、优化数据库操作的管理工具 9可以处理拥有上千万条记录的大型数据库 10支持多种存储引擎 第三章 系统分析3.1可行性分析本系统的开发利用MY SQL 作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。使用Visual S作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。综上所述,本系统的设

13、计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。1.4.3运行上可行性:本系统为一个小型的学生信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。3.2 需求分析 21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。教育系统学生管理现状分析 学校工作流程分析学校

14、工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长。并对各科老师进行安排。每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名。教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行

15、维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。 学校具体需求分析学生:对各科成绩的查询及查看本班成绩排名等情况。任课老师:输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名。输出本班科目的成绩及排名情况。班主任:输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求。输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况。教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息。

16、3.2.1.数据流图(DFD) 创建实体关系图(1) 在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的事物,将其演化成数据对象;(2) 一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接;(3) 如果存在连接,应创建一个或多个关系;(4) 对每一个关系,确定其关联类型;(5) 重复步骤(2)到步骤(4),直到定义了所有关系。(6) 定义每个实体的属性;(7) 形式化并复审实体关系图;(8) 重复步骤(1)到(7),直到数据建模完成。举例分析:* 实体:学生、课程、成绩。* 实体属性定义:学生:学号、姓名、性别、出生日期、入学年月课程:课程编号、课程名称、课程学分、课

17、程描述成绩:学号、课程编号、分数、考核日期* 实体关系图: 首先分析学生成绩管理系统的用户要求,找出该系统应该包括的实体。显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性(见上)。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。那么,学生的选课信息是否需要成为实体呢?由于成绩信息包含了选课信息,因此选课信息不用单独记录。最终,确定系统的实体是学生、课程和成绩。接着,我们分析这些实体之间的关联关系。从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图。 创建数据流模

18、型通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的原子加工;中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。(1) 第0层DFD将整个系统表示成一个加工; (2) 确定并标记主要的输入和输出;(3) 分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工;(4) 标记所有加工和箭头;(5) 重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。第

19、2层DFD图对第1层DFD图中的一个加工查询学生成绩进行展开。绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。对于学生成绩管理系统而言,整个系统就是一个加工学生成绩管理。从用户的需求描述可知,教务人员是数据的源点,学生是数据的终点。另外,教务人员需要录入学生信息、课程信息和成绩,说明学生信息、课程信息和成绩是数据流;同样,查询请求和查询结果也是数据流。根据上述分析,得到如图所示的第0层DFD。绘制下一层数据流图时,细化第0层的加工学生成绩管理,从而描述系统的主要功能。从第0层DFD得知,学生信息是教务人员需要录入的一个信息,因此加入一个

20、加?quot;录入学生信息,同样得到录入课程信息、登记成绩两个加工。另外,数据流查询请求和查询结果应该由加工查询成绩来完成。这样,我们用录入学生信息、录入课程信息、登记学生成绩和查询学生成绩四个加工代替第0层的学生成绩管理,同时增加这些数据流对应的数据存储,即学生、课程和成绩,最后得到如图所示的第1层DFD。为了继续进行分解,我们分析第1层DFD中的加工查询学生成绩。学生查询成绩时需要提供合法性检查,因此,查询学生成绩可以分解为合法性检查和查询成绩两个处理步骤,从而形成如图所示的第2层DFD。根据以上实例和经验,绘制数据流图应当遵循以下原则:(1) 分层时,子图的输入、输出数据流必须和父图中相

21、应加工的输入、输出数据流一致;(2) 加工的编号应该唯一且具有层次性;(3) 加工不应该只有输入或只有输出,通常既有输入又有输出;(4) 数据流图不应反映处理的顺序;(5) 加工之间应通过数据存储进行通信,避免从一个加工直接流到另一个加工;(6) 数据应通过加工进行流动,避免从一个数据存储直接流到另一个数据存储;(7) 数据流图中所有元素的命名应当对客户有意义,且与业务相关;(8) 不要在一个图中绘制7个以上的加工,否则难于绘制和理解。3.2.2 数据字典以下列出学生成绩管理系统的部分数据字典条目:数据项名:学生 描述:包括学生的主要信息别名:无定义:学号 + 姓名 + 性别 + 出生日期 +

22、 入学年月数据量:10000左右峰值:随时,但经常在新生入学时期其他说明:在系统功能扩充时可能增加定义项举例分析:* 第0层DFD图教务人员维护学生信息和课程信息,并登录学生的选课成绩;学生查询自己的成绩单。l 第1层DFD图对第0层DFD图中的一个加工学生成绩管理进行展开。l数据流名:学号 描述:唯一标识学生的编号别名:无类型: 字符串长度:6位字符其他说明:学号不能重复数据流名:学生成绩查询 描述:系统处理的一个命令别名:无频率: 10000次左右峰值:随时,但经常在学期开学其他说明:在系统功能扩充时可能增加种类 第四章 总体设计4.1 模块设计本系统包括登陆模块,系统查询模块,系统管理模

23、块,系统设置模块。其中,登陆模块实现用户管理,注册管理功能;系统查询模块实现学生成绩和信息查询及浏览功能;系统管理模块实现录入、修改、删除成绩管理,统计管理功能;系统设置模块实现注销用户,修改密码功能。 4.1.1 登陆模块的设计(1) 登陆窗体 (在登陆窗体之前为一个欢迎窗体)功能:设置了权限管理,登陆成功后,对各个模块进行操作。操作:欢迎窗体消失后自动生成该窗体,输入用户名和密码,选择登陆模式。登陆窗体如图3.1所示。4.1.2 系统查询模块的设计与实现学生成绩和学生信息查询窗体,如图4.4所示。功能:查询、浏览学生信息。可以查询单一记录,也可以浏览所有信息。操作:单击显示即可浏览所有学生

24、信息或成绩信息,输入学号点击查询可查询单独记录。4.1.3 系统管理模块的设计与实现(1)学生成绩录入删除窗体,如图4.5所示。功能:设置权限管理,管理人员可以录入删除学生成绩和信息。操作:在文本框处填写信息后点击添加实现录入成绩功能,输入学号点击删除实现成绩删除功能。 录入主要实现代码:XmlElement newscore = doc.CreateElement(score);newscore.InnerText = ;root.AppendChild(newscore);XmlNode root1 = doc.DocumentElement.LastChild;XmlElement ne

25、w姓名 = doc.CreateElement(姓名);new姓名.InnerText = txtName.Text;root1.AppendChild(new姓名);删除主要实现代码:string a = txtSN2.Text;if (a = ) MessageBox.Show(请输入学号!, 对不起); return; XmlNode delscore = doc.SelectSingleNode(/score学号=' + txtSN2.Text + '); delscore.ParentNode.RemoveChild(delscore);(2)学生成绩修改窗体,如

26、图4.6所示。功能:修改学生成绩信息。操作:填写信息后,输入新的成绩,点击修改。成绩修改主要实现代码: string a = txtName.Text; if (a = ) MessageBox.Show(请输入姓名!, 对不起); return; XmlDocument doc = new XmlDocument(); doc.Load(Scores.xml); DataSet ds = new DataSet(); XmlNode upscore = doc.SelectSingleNode(/score姓名=' + txtName.Text + '); XmlElem

27、ent Root = doc.DocumentElement; XmlNode 成绩 = doc.SelectSingleNode(/score姓名=' + txtName.Text + '/成绩); XmlElement Score = doc.CreateElement(成绩); Score.InnerText = txtScore.Text;upscore.ReplaceChild(Score, 成绩);(3)统计窗体,如图4.7所示。 功能:统计学生人数,考试人数,不及格人数,优秀人数,计算平均成绩。 操作:分别输入根元素统计学生人数和成绩人数,点击不及格人数、平均

28、成绩、优秀人数会连接相应的计算窗体,点击确定进行计算。统计不及格人数实现代码: XmlNodeList list = doc.GetElementsByTagName(g); for (int i = 0; i list.Count; i+) int s=0; if (int.Parse(listi.InnerText) 60) s+; textBox1.Text = s.ToString(); 计算平均成绩实现代码: XmlDocument doc = new XmlDocument();doc.Load(Scores.xml); XmlNodeList list = doc.GetElem

29、entsByTagName(g); for (int i = 0; i SetFieldType(CFieldExchange:outputColumn);/AFX_FIELD_MAP/ CCourse diagnosticsvoid CCourse:AssertValid() constCRecordset:AssertValid();void CCourse:Dump(CDumpContext& dc) constCRecordset:Dump(dc);/ MainFrm.h : interface of the CMainFrame classclass CMainFrame : pub

30、lic CFrameWndprotected: / create from serialization onlyCMainFrame();DECLARE_DYNCREATE(CMainFrame)/ Attributespublic:/ Operationspublic:/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CMainFrame)virtual BOOL PreCreateWindow(CREATESTRUCT& cs);/AFX_VIRTUAL/ Implementationpubl

31、ic:virtual CMainFrame();protected: / control bar embedded members/CStatusBar m_wndStatusBar;/CToolBar m_wndToolBar;/ Generated message map functionsprotected:/AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnPassword();afx_msg void OnUser();afx_msg void OnStudent

32、();afx_msg void OnTeach();afx_msg void OnTeacher();afx_msg void OnScore();afx_msg void OnQueryTeach();afx_msg void OnQueryScore();afx_msg void OnCourse();/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line./

33、 CScoreAddDlg dialogCScoreAddDlg:CScoreAddDlg(CWnd* pParent /*=NULL*/): CDialog(CScoreAddDlg:IDD, pParent)/AFX_DATA_INIT(CScoreAddDlg)/AFX_DATA_INITvoid CScoreAddDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CScoreAddDlg)DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStudent);DDX_Control(pDX, IDC_SCORE_SCORE, m_cScore);DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);/AFX_DATA_MAPBEGIN_MESSAGE_MAP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号