c语言程序设计考试系统大学本科毕业论文_第1页
c语言程序设计考试系统大学本科毕业论文_第2页
c语言程序设计考试系统大学本科毕业论文_第3页
c语言程序设计考试系统大学本科毕业论文_第4页
c语言程序设计考试系统大学本科毕业论文_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

钟山职业技术学院毕业设计论文 C语言程序设计考试系统【摘要】:C语言是CombinedLanguage(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。C语言考试系统采用 MicrosoftVisualC++ 和MicrosoftSQLServer2000 相结合,很好的实现了登录验证功能。登录身份有管理员和学生。管理员是对整个考试系统的环境设置,其中包括对各个题型的题量设置、定义考试说明、考场要求和对学生的管理等。学生登录实现了让有考试权限的学生进入考试环境。在这个环境下,系统完全实现了随机抽题。C语言考试系统实现了嵌入turboc2.0编译器进行程序的编辑;采用了S数据库访问技术进行数据库的操作;完成了学生考试、管理员管理的功能。C语言考试系统提高网络教学质量的同时大大拓展了考试的灵活性,阅卷效率,以及保证了考试的公平性、答案的安全性。【关键词】:C语言 考试系统 数据库 编译器 文件操作1钟山职业技术学院毕业设计论文 C语言程序设计考试系统目录引言.......................................................................................................................3第一章C语言程序概述......................................................................................41.1C语言的演变及特点.................................................................................41.1.1C语言的发展过程..................................................................................41.1.2C语言版本..............................................................................................41.1.3C语言的特点..........................................................................................51.1.4C语言与其他语言的差别......................................................................51.2C语言的程序结构.....................................................................................61.2.1C源程序的结构特点..............................................................................61.2.2C语言程序结构组成..............................................................................7第二章C语言考试系统........................................................................................82.1C语言考试系统发展背景.........................................................................82.2C语言考试系统的组成.............................................................................82.2.1MicrosoftVisualC++..............................................................................82.2.2SQLSERVER2000(结构化查询语言SQL).......................................102.2.3Turboc2.0编译器..................................................................................12第三章学生成绩管理模块系统.........................................................................143.1学生成绩管理系统的重要性..................................................................143.2学生成绩管理系统设计..........................................................................143.2.1系统需求...............................................................................................143.2.2总体设计.................................................................................................143.2.3功能结构设计.......................................................................................153.2.4学生成绩管理系统运行过程.................................................................16第四章C语言考试系统发展前景展望..............................................................254.1C语言考试系统与其他语言系统的对比..................................................254.2C语言考试系统能够解决的一些问题......................................................254.3发展C语言考试系统的目的与意义........................................................26总结.....................................................................................................................27参考文献.........................................................................................................282钟山职业技术学院毕业设计论文 C语言程序设计考试系统引言C语言是1972年由美国的DennisRitchie设计的,并首次在UNIX操作系统的DECPDP-11计算机上使用。它由早期的编程语言BCPL发展演变而来的。在1970年,AT&T贝尔实验室的KenThompson根据BCPL语言设计出较先进的并取名为 B的语言,随后C语言问世了。随着微型计算机的日益普及,C语言出现了许多版本。由于没有统一的标准,使得这些C语言版本之间出现了一些不一致的地方。为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。C语言考试系统,是为了配合C语言的教学而设计的。它是C语言课件的一个重要组成部分。试卷可根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机阅卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。试题内容放在服务器上,考生通过准考证号进行登录,考试答案也存放在服务器中,这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用无纸化将是以后考试发展的必然趋势。考试是网络教学的重要部分,日渐普及的网络教学呼唤着功能强大的网络考试系统的出现。网络考试系统方便了传统考试中的各个环节。提高了试题治理的自动化、标准化、便捷化,也提高了试题的安全性和保密性。试题的自动生成,使每个考生都有一套不同的试题,把固定在单一试卷中的试题发展到了可以自由组合的题库,随着题库的建立,组卷变得方便了,测试的形式也发生着变化,由所有学生同考一张试卷的大规模的集体测试发展到了同一场考试使用等同考查效力的不同试卷,而且可以跨地域的进行同一考试,除了在本地也可以在异地进行,打破了以前考试的局限性。在成绩统计方面,可以方便快捷地实现成绩统计,如各种均值,方差,分布等的计算,同时还可以方便地评判考试的信度和效度。通过使用试题自动生成系统完全摆脱了纸和笔,考生使用计算机答卷,然后通过网络提交试卷,系统自动阅卷。基于计算机网络的考试需要专门的较高水平的技术支持,网络考试已经发展成为一种产业。发展网络教学有着非常深远的意义,网络教学在全世界范围内得到了迅速的发展。在国外,美国每年大约有近1700万人通过网络接受教育和培训;欧洲网络教育规模也很大,巨大的需求推动了网上教育业的快速发展。目前,在国际市场上比较闻名的网上教育软件产品有:Lotus公司LearningSpace,英属哥伦比亚大学计算机科学系开发的WebCT,WBTSystem公司的TopClass和加拿大SimonFraser大学开发的Virtual-U 等。美国的NTU,英国的OpenCollege都是十分典型的网络教育示例。3钟山职业技术学院毕业设计论文 C语言程序设计考试系统第一章 C语言程序概述1.1C 语言的演变及特点1.1.1C 语言的发展过程C语言的原型ALGOL60语言(也称为A语言)。1963年,剑桥大学将 ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)语言。1967年,剑桥大学的MatinRichards对CPL语言进行了简化,于是产生了BCPL语言。1970年,美国贝尔实验室的KenThompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。为了使UNIX操作系统推广,1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。1978年BrianW.Kernighian和DennisM.Ritchie 出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。1987年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准3.C语言的主要特点,即经典的87ANSIC。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,象PC-DOS、WORDSTAR等就是用这种方法编写的。1990年,国际化标准组织ISO(IntrernationalStandardOrganization)接受了87ANSIC为ISOC的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSIC为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则略有差别。1.1.2C 语言版本1983年,美国国家标准协会( AmericanNationalStandardsInstitute) 在标准C基础上制定了C语言新标准,于 1983年发表,称为ANSIC,它比标准C有了更大的发展。目前广泛流行的 C语言版本有MicrosoftC 或称MSC。BorlandTurboC或称TurboC。AT&TC,QuickC等。4钟山职业技术学院毕业设计论文 C语言程序设计考试系统1.1.3C 语言的特点(1)C是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。(2)C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的, 这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。(3)C语言功能齐全。C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并且引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能, 支持多种显示器和驱动器。 而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。(4)C语言适用范围大。虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。1.1.4C 语言与其他语言的差别C语言吸取了汇编语言的精华汇编语言是一种面向机器的低级语言,尽管它的编程要比高级语言麻烦得多,但目标程序质量高,运行快,所以在工业自动化控制系统等领域仍然被广泛使用,显现出强大的生命力。1)C语言提供了对位、字节及地址的操作,使程序可以直接访问硬件。2)C语言吸取了宏汇编技术中的一些灵活处理方式,提供了宏替换命令#define和5钟山职业技术学院毕业设计论文 C语言程序设计考试系统文件包含的预处理命令#include。3)C语言程序能与汇编语言程序实现无缝连接,可以在C语言程序中方便地引用汇编语言程序。4)C语言编译生成的目标程序代码质量高,执行效率高,运行速度快。与汇编程序生成的目标程序代码执行效率相比,只低10%~20%,这是其他高级语言所无法达到的。C语言继承和发扬了高级语言的优势1)继承了Pascal语言具有丰富数据类型的特点,并具有完备的数据结构。2)吸取了FORTRAN语言中模块结构的思想,C语言中每个函数都是独立的,允许单独进行编译。这有利于大程序的分工协作和调试。3)允许递归调用,使有些算法的实现简明、清晰。4)发扬了高级语言面向用户、可读性强、容易编程和维护等特点,使C语言易学、易读、易懂、易编程、易维护。5)具有良好的可移植性,它没有依赖于硬件的输入输出语句,便于在不同硬件结构的计算机之间移植。1.2C 语言的程序结构1.2.1C 源程序的结构特点一个实现某种特点功能的C语言程序(一个或多个文件)应包含若干个函数,每个函数又是由若干条语句组成的。同其他的高级语言一样,C语言的语句用来向计算机系统发出操作指令。一条语句经编译后会产生若干条机器指令。因此,C语言程序的结构形式如图所示。说明:1)一个C语言源程序可以由一个或多个源文件组成。2)每个源文件可由一个或多个函数组成。3)一个源程序不论由多少个文件组成,都有且只能有一个main函数,即主函数。4)源程序中可以有预处理命令(#include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。6钟山职业技术学院毕业设计论文 C语言程序设计考试系统1.2.2C 语言程序结构组成1)数组。数组是一种非常重要的线性结构的数据类型,在程序设计中常常使用。同时,C语言中,“字符串”可以通过字符数组来实现。数组的定义和使用在C语言中具有相当重要的位置。在介绍数组的应用时,可结合《数据结构》课程中排序与检索的常用算法,通过实例说明数组的具体应用。2)指针。指针是C语言中最灵活,最活跃的数据类型,是C语言的核心。要学习好C语言,必须掌握指针的概念极其应用。C语言指针应用,在数据链式存储中,指针是数据中不可分割的一个部分,既使在顺序存储的数据中,指针也是数据扫描(遍历)、查找定位、插入、删除、统计等各种数据加工处理的重要手段和工具。同时必须指出,指针应用不当也会带来意想不到的后果。3)函数。C语言是一种函数式语言,函数是C语言程序的基本组成部分。在教学中,可以通过一些实际例子说明,使学生掌握C语言函数定义、函数调用、参数传递等内容,树立程序模块的基本思想。4)变量存贮属性。存贮属性关系到变量的作用范围,函数(模块)间的程序接口,对树立程序设计的全局观念,变量存贮属性起重要作用。5)文件。在实际应用中,我们一般通过文件的形式与外设进行交流,“文件”是C语言实际应用的主要方式,应介绍文件的打开、读、写、关闭等基本操作。6)结构体。在实际应用中,数据结构类型往往以结构体形式出现。只有掌握结构体类型的定义和使用,才能在实际应用中发挥C语言作用。7钟山职业技术学院毕业设计论文 C语言程序设计考试系统第二章 C语言考试系统2.1C 语言考试系统发展背景在线考试系统就是人们经常谈论中的一个例子,在我国,不论是机关单位还是大中小学校,考试频率堪称世界之最,而传统的考试一般要经过出题,印试卷,安排考场,监考,收集试卷,评改试卷,讲评试卷和分析试卷。不仅如此,在线考试系统还打破了考场的时空局限性,考生可以自由选择考试的时间和地点,而条件是只要具有一台能上互联网的电脑就行了,考生考试结束后,即可产即查询自己的考试分数,名次等信息,还可以对照标准答案对答错的试题进行适当的分析,全部科目考试结束后,考生还可以打印自己的成绩单,与传统考试不同的是,在线考试系统需要管理员添加足够多的题库来保证每个考生随机抽出来的题目是不一样的,保证了考试的公证性。语言是各大学所有理工科学生的必修课,是计算机专业编程语言的入门课程,C语言考试系统,是为了配合C语言的教学而设计的。它是C语言课件的一个重要组成部分。试卷可根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机阅卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。试题内容放在服务器上,考生通过准考证号进行登录,考试答案也存放在服务器中,这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用无纸化将是以后考试发展的必然趋势。2.2C 语言考试系统的组成完整的C语言考试系统应具有题库、 自动组卷模块、学生考试模块、考试成绩管理模块,用以实现计算机自动出卷、答卷、批卷流程的全程管理。而我下面所介绍的就是这4个模块的核心元件。2.2.1MicrosoftVisualC++VC是微软公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC类库。MFC中封装了大部分WindowsAPI函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样我们就可以从一个较高的起点编程,节省了大量时间。另外,它提供了大量的代码,指导用户编程是实现某些技术和功能。因此 VC++提供的高度可视化的应用程序开发工具和 MFC类库,可使应用程序开发变得简单。8钟山职业技术学院毕业设计论文 C语言程序设计考试系统C++1)C++的组成1、C子语言。C++支持C语言的几乎全部功能,在语法上与 C语言仅有极微妙的差别。2、面向对象的C++。C++首先作为一门面向对象的语言而闻名,这个特点在这里不再详述。3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。4、STL(C++标准模板库)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的naive代码低些,但是其安全性与规范性使它大受欢迎。2)C++的优势传统上认为,C++相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。一般认为,使用Java或C#的开发成本比C++低。但是,如果能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。在Java和C#大谈软件工程的时候,C++实际上已经悄悄地将软件工程性提升到一个前所未有的高度。MFCMFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种ApplicationFramework ,随微软 VisualC++ 开发工具发布。MFC应用程序的总体结构通常由开发人员从 MFC类派生的几个类和一个 CWinApp类对象(应用程序对象)组成。VC是WinDOS下开发人员使用的专业C++SDK(SDK,StandardSoftWareDevelopKit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinDOS(用MFC编写的程序绝大部分都在WinDOS中运行)中实现内部处理的类,如数据库的管理类等。(1)一些重要的MFCCWnd:窗口,它是大多数“看得见的东西”的父类( Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。CDocument文档:负责内存数据与磁盘的交互。最重要的是 OnOpenDocument(读9钟山职业技术学院毕业设计论文 C语言程序设计考试系统入),OnSaveDocument(写盘),Serialize (读写)。CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。(2)MFC编程的优势随着编程语言的推陈出新,MFC一些缺点日益突出。最重要的就是入门门槛相对其他语言要高,而且同样完成一个任务代码量相对较多。但是MFC真的没有任何优势了吗?不是,面对底层程序,它能很轻松的与WindowsAPI或驱动程序结合,就是在自己的代码中直接使用API函数,而API和驱动程序的资料都是以C语言为基础的,这使得VC程序员能够更轻松的使用WindowsAPI。这样造成了一个很有意思的现象,即入门时VC程序员要付出更多的努力来学习,但是一旦掌握后,开发其他领域的程序或使用第三方软件时,如工业控制类的程序,由于底层的程序都是用C语言编写,反倒是VC程序员能够更快的掌握该领域的编程技术。而很多其他的编程语言甚至找不到相关的资料。这就说明VC(MFC)实际上是一种入门困难,但是扩展学习却很轻松的语言框架。如果既限于某一领域的话VC毫无优势可言,但是如果开发一个新的领域的应用程序或者该程序涉及多个应用领域的话,可减少重复学习的频率和难度,VC(MFC)的优势会立刻显现出来。2.2.2SQLSERVER2000(结构化查询语言 SQL)1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准 SQL文本。目前SQL标准有3个版本。基本SQL定义是ANSIX3135-89,“DatabaseLanguageSQLwithIntegrityEnhancement”[ANS89],一般叫做SQL-89。SQL-89定义了模式定义、数据操作和事务处理。SQL-89和随后的ANSIX3168-1989,“DatabaseLanguage-EmbeddedSQL”构成了第一代SQL标准。ANSIX3135-1992[ANS92]描述了一种增强功能的SQL,现在叫做SQL-92标准。SQL-92包括模式操作,动态创建和SQL语句动态执行、网络环境支持等增强特性。在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。1)SQLServer2000特点完全的Web支持:SQLServer2000提供了以Web标准为基础的扩展数据库编程功能。丰富的XML和Internet标准支持允许使用内置的存储过程以XML格式轻松存储和检索数据。还可以使用XML更新程序容易地插入、更新和删除数据。通过Web轻松访问数据。也可以使用HTTP来向数据库发送查询、对数据库中存储的文档执行全文搜索、以及通过Web进行自然语言查询。SQLServer2000分析服务功能被扩展到了Internet。通过Web浏览器来访问和控制多维数据。10钟山职业技术学院毕业设计论文 C语言程序设计考试系统高度的可伸缩性和可靠性使用SQLServer2000 可以获得非凡的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力,SQLServer 满足了苛刻的电子商务和企业应用程序要求。 SQLServer2000利用了对称多处理器 (SMP)系统。SQLServerEnterprise Edition 最多可以使用32 个处理器和64GBRAM。向外扩展可以将数据库和数据负载分配给多台服务器。通过增强的故障转移群集、日志传送和新增的备份策略, SQLServer2000达到了最大的可用性。(2)SQL数据库的数据结构数据结构分为数据的逻辑结构和数据的物理结构。 数据的逻辑结构是从逻辑的角度(即数据间的联系和组织方式)来观察数据,分析数据,与数据的存储位置无关。数据的物理结构是指数据在计算机中存放的结构,即数据的逻辑结构在计算机中的实现形式,所以物理结构也被称为存储结构。这里只研究数据的逻辑结构,并将反映和实现数据联系的方法称为数据模型。(3)SQL数据库中常用的几个系统表1、sysobjects系统对象表。 保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等sysobjects 重要字段解释:sysObjects(Namesysname, --object 名称id int, --objectidxtypechar(2), --object 类型typechar(2), --Object 类型uid smallint, --object 所有者的ID... -- 其他的字段不常用到。)该表中包含该数据库中的所有对象,如有那些表存储过程视图等信息2、sysColumns数据库字段表。当前数据库的所有字段都保留在里面。重要字段解释:sysColumns(namesysname,--字段名称idint,--该字段所属的表的IDxtypetinyInt,--该字段类型,关联systypes表lengthsmallint,--该字段物理存储长度...)比如要查询某一个张表的有那些字段和这些字段的长度3、sysusers当前数据库的系统组,以及用户。11钟山职业技术学院毕业设计论文 C语言程序设计考试系统sysusers(uidsmallint, -- 用户idnamesmallint, -- 名称uidvarbinary(85),-- 属于一个登陆....)对数据库的用户进行管理2.2.3Turboc2.0 编译器(1)编译器的工作原理与总体结构编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。一个现代编译器的主要工作流程如下图:源代码(sourcecode) → 预处理器 (preprocessor) →编译器(compiler) →汇编程序(assembler) →目标代码(objectcode) →链接器(Linker) →可执行程序(executables)(2)编译参数的设置12钟山职业技术学院毕业设计论文C语言程序设计考试系统主要通过IDE的菜单项Project-Settings-C/C++页来完成。我们可以看到这一页的最下面ProjectOptions中的内容,一般如下:1)General:一些总体设置。Warninglevel用来控制警告,其中Level1是最严重的级别;Warningsaserrors将警告当作错误处理;Optimizations是代码优化,可以在Category的Optimizations项中进行更细的设置;Generatebrowseinfo用以生成.sbr文件,记录类、变量等符号,可以在Category的ListingFiles项中进行更多的设置。Debuginfo,生成调试:None,不产生任何调试;LineNumbersOnly,仅生成全局的和外部符号的调试到.OBJ文件或.EXE文件,减小目标文件的尺寸;2)C++Language:pointer_to_memberrepresentation用来设置类定义/引用的先后关系,一般为Best-CaseAlways表示在引用类之前该类肯定已经定义了;EnableExceptionHandling,进行同步的异常处理;EnableRun-TimeTypeInformation迫使编译器增加代码在运行时进行对象类型检查;DisableConstructionDisplacements,设置类构造/析构函数调用虚函数问题。3)CodeGeneration:Processor表示代码指令优化,可以为80386、80486、Pentium、PentiumPro,或者Blend表示混合以上各种优化。 Userun-timelibrary 用以指定程序运行时使用的运行时库, 有一个原则就是,一个进程不要同时使用几个版本的运行时库。连接了单线程库就不支持多线程调用, 连接了多线程库就要求创建多线程的应用程序。4)Customize:DisableLanguageExtensions ,表示不使用微软为标准 C做的语言扩展;EliminateDuplicateStrings ,主要用于字符串优化,使用这个参数,使得charsBuffer="Thisisacharacterbuffer";chartBuffer="Thisisacharacterbuffer";sBuffer 和tBuffer 指向的是同一块内存空间 ;EnableFunction-LevelLinking ,告诉编译器将各个函数按打包格式编译 ;Enablesminimalrebuild ,通过保存关联到.IDB文件,使编译器只对最新类定义改动过的源文件进行重编译,提高编译速度 ;5)Listing Files:Generatebrowseinfo 的功能上面已经提到过。这里可以进行更多的设置。ExcludeLocalVariablesfromBrowseInfo 表示是否将局部变量的放到.SBR文件中。Listingfiletype可以设置生成的列表文件的内容:Assembly-OnlyListing仅生成汇编代码文件;AssemblyWithMachineCode生成机器代码和汇编代码文件;MachineCode,andSource生成机器码、源代码和汇编代码文件。6)Optimizations:代码优化设置。可以选择MaximizeSpeed生成最快速的代码,或MinimizeSize生成最小尺寸的程序,或者Customize定制优化。13钟山职业技术学院毕业设计论文 C语言程序设计考试系统第三章 学生成绩管理模块系统3.1 学生成绩管理系统的重要性语言考试中需要考虑到计算机死机、异常重启、突然断电等一些意外事故的发生,所以我们有必要对每一位考生的试卷(包括试题和考生的答案以及考试剩余时间)进行保存,以便在适当的时候进行恢复,由于每一份试卷上的信息量很大,而且类型也不一样,如果按传统方法保存的话,将会是件相当复杂的事情,还好学生成绩管理系统为我们提供了对象序列化功能,我们可以新建了一个RandPaper类,上面包括了随机生成的试卷的所有信息,当考生登录后,生成一个RandPaper对象,然后将这个对象序列化后保存到数据库中,以后需要恢复试卷时,从数据库中读取后将其反序列化后即可得到原来对象的所有属性值。这个保存函数每隔一定时间要执行一次,这里可以采用JavaScritp来控制。3.2 学生成绩管理系统设计3.2.1 系统需求1.当前学生信息:通过结构体 structstudent 来保存学生的姓名、学号、性别、语文、数学、英语和计算机等等相关信息,并且通过cin函数来给当前学生输入初始信息。学生成绩查询:输入一个学号,在文件中查找此学生,若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。同时也可以全部把各科的平均成绩,最高和最低分输出。新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,然后将该生的信息保存下来。输出全部学生信息和全部学生成绩。5.退出系统。6.附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓氏先进行模糊查询,以便后面精确查找。3.2.2 总体设计仔细阅读系统要求,首先将此系统化分为如下几个部分(即如下几个函数)(1)输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数 cin(stu*p1) 来实现此操作。(2)查询模块:可用 stu*lookdata(stu *p1)来实现。找到就输出此学生全部信息,14钟山职业技术学院毕业设计论文 C语言程序设计考试系统包括学生的语文、数学、英语和计算机等的成绩。3)插入模块:可用insert()函数来实现。其中通过学号的大小来比较的,并且以此来排序。输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来输出语文、数学、英语和计算机等成绩的平均分数、 最高和最低分数。退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。3.2.3 功能结构设计界面设计:此系统界面采用图形和数字化菜单设计。主界面初步设计如下:学生成绩管理系统请选择相应的数字执行相应的功能::是否输入其他数据:查看数据:插入数据:查找数据:更新数据:保留数据:显示或打印数据:语文成绩状况:数学成绩状况:英语成绩状况:计算机成绩状况:帮助:退出系统数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedefstructstudent{charname[MAX];intnum[MAX];charsex[MAX];intchinese;intmathematic;15钟山职业技术学院毕业设计论文 C语言程序设计考试系统intenglish;intcomputer;structstudent*next;}3.2.4 学生成绩管理系统运行过程#include"stdio.h"#include"stddef.h"#include"stddef.h"#include"string.h"#defineMAX10typedefstructstudent{ /* 定义结构体*/charname[MAX]; /* 姓名*/intnum[MAX]; /* 学号*/charsex[MAX]; /* 性别*/intchinese; /* 语文*/intmathematic; /* 数学*/intenglish; /* 英语*/intcomputer; /* 计算机*/structstudent*next; /* 结构体指针*/}stu;stu*head; /* 头指针*/voidprint() /* 显示或打印函数*/{system("cls");printf("\t\t\tScoreManageSystem\n");/*成绩管理系统*/printf("<1>EnterRecord\t");/*输入数据*/printf("<2>Display\t");/*显示*/printf("<3>Insert\t");/*插入数据*/printf("<4>Quest\t");/*访问数据*/printf("<5>Update\t");/*以前数据*/printf("<6>Save\t");/*保留数据*/printf("<7>Fresh\t");/*更新数据*/printf("<8>ChineseAverage\t");/*语文平均成绩*/printf("<9>MathAverage\t");/*数学平均成绩*/printf("<10>EnglishAverage\t");/*英语平均成绩*/printf("<11>ComputerAverage\t");/*计算机平均成绩*/16钟山职业技术学院毕业设计论文 C语言程序设计考试系统printf("<12>Quit\t\n"); /* 退出*/}voidcin(stu*p1) /* 输入相关数据的函数*/{printf("Entername:\n");scanf("%s",&p1->name);printf("Enternum:\n");scanf("%d",&p1->num);printf("Entersex:\n");scanf("%s",&p1->sex);printf("Enterscore:\n");printf("Enterchinese:\n");scanf("%d",&p1->chinese);printf("Entermath:\n");scanf("%d",&p1->mathematic);printf("EnterEnglish:\n");scanf("%d",&p1->english);printf("EnterComputer:\n");scanf("%d",&p1->computer);}stu*cindata() /* 其他数据是否继续输入的函数 */{stu*p1,*p2;inti=1;charch;p1=(stu*)malloc(sizeof(stu));head=p1;while(i){cin(p1);printf("DoyouWanttoContinue?yesorno"); /* 是否继续输入数据*/ch=getchar();ch=getchar();if(ch=='n'||ch=='N'){i=0;p1->next=NULL;}else{p2=p1;17钟山职业技术学院毕业设计论文 C语言程序设计考试系统p1=(stu*)malloc(sizeof(stu));p2->next=p1;}}return(p1->next);}stu*lookdata(stu*p1) /* 查看数据的函数*/{while(p1!=NULL){printf("Num:%d\t",p1->num);printf("Name:%s\t",p1->name);printf("Sex:%s\t",p1->sex);printf("\n");printf("Chinese:%d\t",p1->chinese);printf("Math:%d\t",p1->mathematic);printf("English:%d\t",p1->english);printf("Computer:%d\t",p1->computer);printf("\n");p1=p1->next;}returnp1;}voidinsert() /* 通过比较学号来插入数据的函数 */{stu*p1,*p3,*p2;charch;p1=head;p3=(stu*)malloc(sizeof(stu));p3->next=NULL;if(head==NULL){head=p3;return;}cin(p3);while(p1!=NULL&&(p1->num<p3->num)) /* 通过学号的比较来插入*/{p2=p1;p1=p1->next;}if(p2==head){p3->next=head;head=p3;return;}p3->next=p1;18钟山职业技术学院毕业设计论文 C语言程序设计考试系统p2->next=p3;}find(stu*p2) /* 通过姓名查找查看数据的函数 */{charname[20];intb=0;printf("Enterthenameofthestudentyouwanttofind:"); /* 通过姓名查看*/scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("Thedatayouwanthasbefound\n");printf("Name:%s\t",p2->name);printf("Num:%d\t",p2->num);printf("sex%s\t",p2->sex);printf("\n");printf("Chinese:%d\t",p2->chinese);printf("Math:%d\t",p2->mathematic);printf("English:%d\t",p2->english);printf("Computer:%d\t",p2->computer);printf("\n");b=1;}elseif(b==0)printf("sorrynotfinddata!");p2=p2->next;}if(b==1){print();printf("Findone\n");}else{print();19钟山职业技术学院毕业设计论文 C语言程序设计考试系统printf("Notfind\n");}}voidcaverage() /* 求各学生语文平均分、最高和最低分成绩的函数 */{stu*p1;inti;floatmax=0.0,min=200.0;floatsum=0.0,aver=0;p1=head;if(p1==NULL)printf("notdata!");else{for(i=0;p1!=NULL;i++,p1=p1->next)sum+=p1->chinese;aver=sum/i;p1=head;for(i=0;p1!=NULL;i++,p1=p1->next){if(max<p1->chinese)max=p1->chinese;}p1=head;for(i=0;p1!=NULL;i++,p1=p1->next)if(min>p1->chinese)min=p1->chinese;}printf("ChineseAverage:%f",aver);printf("ChineseMax:%f",max);printf("ChineseMin:%f",min);}/*各学生数学、英语、计算机的平均分、最高和最低分成绩函数参照语文成绩的函数运行程序*/update(stu*p2) /* 通过姓名查找来更新数据 */{20钟山职业技术学院毕业设计论文 C语言程序设计考试系统charname[10]; /*p2 为指向结构体structstudent 的指针*/intb=0;printf("EnterTheName"); /* 输入姓名*/scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("Findyoudata\n");scanf("Name:%s",p2->name);scanf("Num:%s",p2->num);scanf("Sex:%s",p2->sex);scanf("Chinese:%d",p2->chinese);scanf("Math:%d",p2->mathematic);scanf("english:%d",p2->english);scanf("Computer:%d",p2->computer);printf("Success!");b=1;}elseif(b==0)printf("SorrynotFinddata!");p2=p2->next;}if(b==0){print();printf("SorrynotFinddata!");}else{print();printf("Finish!");}}save(stu*p2) /* 保留数据函数*/{FILE*fp;charfile[10];printf("Enterfilename"); /* 输入文件名*/21钟山职业技术学院毕业设计论文 C语言程序设计考试系统scanf("%s",file);fp=fopen(file,"w");while(p2!=NULL){fprintf(fp,"%s",p2->name);fprintf(fp,"%s",p2->num);fprintf(fp,"%s",p2->sex);fprintf(fp,"%d",p2->chinese);fprintf(fp,"%d",p2->mathematic);fprintf(fp,"%d",p2->english);fprintf(fp,"%d",p2->computer);p2=p2->next;}fclose(fp);}charpassword[7]="123456"; /* 定义初始密码*/voidmain() /* 主函数*/{intchoice;stu*p2;chars[8];intflag=0,i; /* 标志项*/intn=3;do{printf("Enterpassword:\n");scanf("%s",s);if(!strcmp(s,password)) /* 进行密码匹配验证*/{printf("PASS\n\n\n");flag=1;break;}else{printf("ErrorEnteragain:\n");n--;}}22钟山职业技术学院毕业设计论文 C语言程序设计考试系统while(n>0);if(!flag){printf("youhaveEnter3times!"); /* 输入密码超过了 3次!!*/exit(0); /* 自动退出*/}/* 密码验证成功后进入的界面 */printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /* 操作界面*/printf("\t\tWelcomtotheMis\n");printf("Author:-----\tClass:------\tNum:------\n");/* 作者,班级和号码*/printf("Adress:HG\n"); /* 地址*/printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");printf("\t\tEnterOP:\n");printf("\n\n\n\n");printf("==============\t\t==============\n");printf("==============\t\t==============\n");printf("\t\tEntertheMISyesorno\n"); /* 问进入系统与否*/scanf("%d",&choice);if(choice=='n'||choice=='N')exit(1);print();while(1){printf("Enterchoice:");scanf("%d",&i);if(i<1||i>13){printf("Enternumfrom1to13:\n");/*再从1-13中进行选择*/exit(1);}switch(i){case1:p2=cindata();/*其他数据是否继续输入的函数*/break;case2:23钟山职业技术学院毕业设计论文 C语言程序设计考试系统p2=lookdata(head); /* 查看数据的函数*/break;case3:insert(); /* 通过比较学号来插入数据的函数 */break;case4:find(head); /* 通过姓名查找查看数据的函数 */break;case5:update(head); /* 通过姓名查找来更新数据 */break;case6:save(head); /* 保留数据函数*/break;case7:print(); /* 显示或打印函数*/break;case8:caverage(); /* 求各学生语文平均分、最高和最低分成绩的函数 */break;case9:maverage(); /* 求各学生数学平均分、最高和最低分成绩的函数 */break;case10:eaverage();/* 求各学生英语平均分、最高和最低分成绩的函数 */break;case11:comaverage();/* 求各学生计算机平均分、最高和最低分成绩的函数 */break;case12:; /* 空操作*/case13:exit(1); /* 退出*/break;}scanf("%d",&i);}24钟山职业技术学院毕业设计论文 C语言程序设计考试系统第四章C语言考试系统发展前景展望4.1C语言考试系统与其他语言系统的对比B/S结构:此种结构是适用因特网(Internet)的发展而出现的,最大的优点是客户端不需要安装软件,只要有IE就能运行,因此它在实际距离较远的网络中应用能发挥最大的优点。最大的缺点是数据安全性低,对服务器要求高,数据传输速度慢。C/S结构:此种结构是传统的结构,技术非常成熟,具有安全的存取模式,网络通信量低,响应速度快。缺点是必须安装客户端程序,维护难度大成本高。大多数大型软件(包括 Windows)都是用C、C++编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。其他的语言都不如 VC有历史优势。而且VC的开发工具很多,从控件公司到硬件开发商,其产品大多数都提供 VC接口的。BorlandC++或C++Builder也很不错,并不比 VC差。但BC的版本兼容性不强,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。4.2C语言考试系统能够解决的一些问题(1)用户安全与权限设置问题在配置考试系统时,可以首先在服务器端建立ksgroup组和若干个用户,而且ksgroup包含这若干个用户,使若干个用户分别对应机房若干台计算机,即:机房的若干台计算机分别以相应设定好的用户名登陆本机和连接服务器。其次,将服务器的考试目录文件夹及数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论