学生成绩系统c语言

2024-07-25

学生成绩系统c语言(共8篇)

1.学生成绩系统c语言 篇一

1、课程设计的目的、任务

《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

2、软件需求分析和设计

2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1).插入一个数据(插入学生学号以及语数外三个成绩)。(2)修改一个数据。(3)删除学生成绩数据。(4)查找学生成绩。(5)查看学生成绩的排名(6)查看学生成绩分布(7)按esc键退出系统

2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能:(1)输出显示菜单。(2)输入学生的成绩(3)修改学生成绩(4)删除学生成绩(5)查询学生成绩(6)显示学生成绩排名(7)显示成绩分布统计(8)按esc键退出系统

2.3依据程序的功能需求,该系统的功能结构图如下

系统功能结构图

2.4 程序流程图:

主程序流程图

查找学生成绩

插入学生学号及成绩

修改学生的成绩

显示各个学科各分数段的人数

3、程序实现说明

3.1学生管理系统中各子程序如下:

(1).输入全部学生学号以及语文,英语,数学三科的成绩。子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。

代码:

insert proc near;定义进程子程序:插入学生,学号及 成绩 call input;调用input add n,1 ret insert endp

(2).修改输入的成绩。子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码:

modify proc near;定义进程子程序:修改学生学号,成绩 md1:output mess1;输出mess1 shuru;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找输入的学生是否存在

je qq1_1;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入。;结果相等则跳转到qq1_1 add si,1

cmp si,bx jbe md;小于等于则跳转到md output mess;输出mess jmp md1;不相等继续输入学号

qq1_1:;转入修改的值重新输入。mov di,si output mess2 output mess4 mov si,0 mov cx,3

qq3_1:shuruu;cmp dx,78h;

jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1]

分别输入语文,英语,数学成绩,并将其放 在缓冲区buf中 比较输入的成绩是否大于120,如果大于120的 话,那么重 新输入成绩 小于等于则转移到qq2_1 输出ts3 跳转到qq1_1 输出空格 将存入buf中的成绩,分别赋值给存放对应科 目的成绩的数组

mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp

(3).删除学生的成绩。子程序名:delete 子程序描述:通过子程序删除学生的成绩 代码:

de proc near;删除某个学生的记录 sc1:output mess1 shuru;调用宏shuru,接受输入的学号 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查询输入学号的学生信息是否存在,不存在的话,重新输入学号 je sc2;相等则转移到sc2 add si,1 cmp si,bx jbe sc;小于等于则转移到sc output mess;输出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等则转移到sc3 mov cx,bx

sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循环指令,执行操作(cx)<--(cx)-1.若 cx!=0,跳转到标号sc处循环执行;cx=0,则推出

循环,执行loop的下一条指令 sub n,1 sc3: ret de endp

(3).查询学生的成绩。子程序名:find 子程序描述:通过子程序查询学生的成绩 代码:

find proc near;定义进程子程序:查找学生成绩 call sum;求学生的总成绩 call ping;求学生的平均成绩

bj1:output mess1;输出mess1 shuru;二位数数据输入 mov bl,n mov bh,0 mov al,dl

mov si,0

bj: cmp al,xh[si];将输入的学号与输入的学号相比,je i;存在的话,将此学生的成绩输出。je表示结果相

等则转移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg

mov al,mat[si] cbw shuzii ax output bg;

mov al,pj[si] cbw

小于等于则转移到bj 为二位数据输出 输出空格 将字节变为字

为三位数据输出。输出空格 将字节变为字

为三位数据输出 输出空格的字符串,用于与标题栏对齐

shuzii ax output bg

mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii为三位数据输出

output bg;输出空格的字符串,用于与标题栏对齐 shuzi mc[si];shuzi为二位数据输出 ret find endp

(4).显示学生的成绩排名。子程序名:show 子程序描述:通过子程序显示学生的成绩排名 代码:

show proc near;定义进程子程序:显示结果排名 call sum;调用宏sum call ping;调用宏ping call rank;调用宏rank call shuchu;调用宏shuchu ret show endp

3.2程序运行抓图:

主菜单

修改学生成绩

删除学生成绩

显示各个学科各分数段的人数

4、程序总结

通过两个星期的学习,努力,终于完成了报告。系统可以很好的运行。这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。系统中用到了很多最近才学习的知识,比如宏,子程序。这些都使得代码的运行效率提高了,代码行数减少了。系统还用到了bios的清屏功能。这些功能如果不是做课程设计,我想我很难会接触到这些知识。

由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。互联网是强大的,大部分的问题通过网络都可以解决。部分找不到的问题,我就去请教班里学得好的同学。他们对知识的掌握远超过我。这样下来,很多问题都迎刃而解了。

课程设计是一个很好的掌握书本上知识的过程。平时上课之后,自己都不会想着去敲一些代码联系联系。通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。

2.学生成绩系统c语言 篇二

1 现有的体育中考成绩录入方式

当前中考体育测试数据采用EXCEL录入,然后编辑公式计算出每项科目的成绩,最后计算出总成绩,成绩表打印后由学生本人签字。由于考试中心监管人员少,存在以下几个问题:

1)成绩录入时要依照评分标准进行计算,工作量较大,录入速度慢。

2)录入完成后打印出纸质成绩上报考试中心后,在上报电子版成绩时,有些老师为了使部分好学生能取得好成绩,可能人为更改部分数据,数据保密性不好。

3)各学校业务人员的水平参差不齐,使得数据录入中存在各种各样的错误,如小数的位数不对、数字占两个字符位等。据统计,在去年上报考试中心的数据中多达一千处错误,考试中心工作人员花了将近一个月的时间,对所传送的数据进行了修改和校正,给成绩统计工作带来许多麻烦。

针对以上三个问题,以microsoft公司的C#.NET为开发工具,设计了体育中考成绩管理系统。设计该软件就是为了解决针前两年体育考试中采用手工录入方式慢、数据错误、信息容易被篡改、数据统计工作缓慢等问题。

1.1 总体结构设计(如图1所示)

1.2 信息导入

经调查,部分学校学生多,对于学号等信息逐个录入工作量大,而在七年级建档时对这些信息,学校已经用电子表格(EXCEL)的形式保存,将所需要和信息提取出来,另存为新的电子表格文件。通过导入EXCEL规定格式模板[3](包括姓名、性别、身份证号等)到数据库文件对体育考试工作人员来说工作量小,操作简便。

1.3 成绩计算、入库

对于导入的学生信息,体育成绩和分值都是空值,由教育局派出的督察员和现场测试人员对体育成绩依据现场测试进行录入,并依据评分标准分项计算出该成绩所对应的分数,将该项体育成绩和所得分数录入数据库。为了减少录入的工作量,在文本框输入体育成绩后,回车确认,系统在第二个文本框中自动计算学生成绩,录入成功后给出提示。在成绩计算时,依据甘肃省当前体育成绩总分为50分的内容进行计算,由于低分段、高分段和中间部分计算方法有差别,所以对每一个分项采用了分段线性化的方法使得程序计算出的成绩更合理。分段线性化在本系统中就是将每一个分项分为三段进行线性处理,各段按照一个公式进行计算,学生成绩显得更加合理。软件采用回车而不是点击按扭的方法减少了操作,提高了工作效率。整个分项录入完成后,最后一次计算出总成绩。

1.4 报表打印

由于每个学校最后都要上报纸质和电子版两种材料,所以该系统设计了报表打印功能。该软件采用了水晶报表,可以根据查询条件打印出相应记录。比如可以根据学校名称打印出每个学校的学生成绩。另外在报表中设计了记录号,每次打印的人数一目了然。

1.5 参数设置

根据《国家学生体质健康标准测试项目评分表》[4],男生和女生的体育考试项目有区别,并且每一个项目要分几段进行计算,这几段的计算方法也有一定的区别。因此对每一项的基本数据以参数设置的方式存入一个文本文件中。例如女生仰卧起坐8.9-10分这个区间的计算方法一致,只设置8.9分所对应的次数为39,其他分值所对应的次数采用公式可以直接计算。程序依据所设的基本参数比对计算出每一项成绩,从而得到学生的总成绩。

1.6 用户管理

参数设置中的参数是用来计算成绩的依据,改变其中的数据,使得部分考生的成绩出现错误,使学生的成绩不公平,因此需要对操作人员分配权限。另外,管理员可以管理全部用户,并且给每个考点分配用户名和密码,而每个考点的用户没有这些权限,因此设计了用户管理功能,提高的成绩的公平性和可靠性。

2 系统开发

软件系统开发是根据用户的需求确定开发工具,然后运用开发工具进行编码和测试的过程。本系统开发工具选用微软件的c#.NET,后台数据库选用

Microsoft Access。

2.1 开发工具

采用MicrosoftVisualStudio2010中的C#.NET[5,6],该开发语言结合了VB的可视化操作和C++的效率,成为近年来﹒NET开发的首先语言。本系统采用C#编写了应用程序项目,使用了多文档窗体的单机版形式,其中,成绩计算采用了分段线性化的方法,使得学生成绩更加合理。

2.2 数据库设计

当前常用的数据库一般有三种类型,大型数据库多采用oracle,一般用于电力、电信等大型用户。中型数据库采用SQLServer,大部分企事业单位都采用中型数据库。小型数据库(桌面型数据库)采用Access,而数据库的存储容量可以达到2G[7],数据量小时采用该数据库。本系统只应用于县内,且今年九年级毕业人数为6007人,因此本系统采用小型数据库采用Access。

2.3 部分源码

1)Excel数据导入源码如下:

2)分段线性化程序如下

3)参数设置程序如下

2.4 软件界面

为了简化操作,系统将Excel文件中的基本信息导入数据库中,读取数据导入主界面如图2所示。

对中长跑等成绩测试后,就可以录入数据库,并按照一定的规则计算该项目的分数。每一项录入完毕后,可以计算学生的总成绩。成绩计算、入库界面如图3所示。

最后除了给教育局上报电子版的数据库外,还要上交纸质版的报表,报表界面如图4所示。

为了确保系统的安全性,学校业务人员可以依据考试中心分配的旧密码修改密码,界面如图5所示。

3 结语

该系统已成功应用于静宁县2016年体育中考考试中,具有录入数据快,操作简单,数据上报过程中不易被修改等特点,但是在互联网快速发展的今天,软件系统应当与时俱进,由单机版变成B/S结构,后台数据库采用SQLserver[8],将数据放在教育局的服务器上,现场测试的数据能在教育局的服务器端看到。这样实时性更好,更符合系统发展的需求,也是软件改进的方向。

参考文献

[1]谢卓锋.对我国体育中考实施情况的审视与思考[J].首都体育学院学报,2008,20(5):7-9.

[2]黄龑.中考体育存在的问题与对策分析[J].体育文化导刊.2010,(08):87-90.

[3]赵林林,何永鑫.基于GIS的油田地面工程可视化管理系统的实现[J].计算机应用与软件,2015,32(3):93-96.

[4]南京工业大学体育部.《国家学生体质健康标准测试》(2014修订版)单项指标与权重、单项评分表[S],2014

[5](美)Ying Bai著,施宏斌译.C#数据库编程实战经典[M].北京:清华大学出版社,2011.

[6]张保贵.基于c#.net的超市管理系统的设计与实现[D].电子科技大学硕士论文,2013.

[7]微软.Access 2010规格[DB/OL].https://support.office.com/zh-cn/article/Access-2010-规格-1e521481-7f9a-46f7-8ed9-ea9dff1fa854,2016.

3.学生成绩系统c语言 篇三

关键词:数据同步;客户端;C语言

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2010) 16-0000-02

The C-language Design Research of Data Synchronization System Client

Dai Xiuhong

(Liaoning Petrochemical College,Jinzhou121000,China)

Abstract:The research data synchronization system of the client's C language design,data synchronization system proposed by the client data synchronization process and data management and monitoring,this paper addresses generated in the process of enterprise information system database of multiple inter-related business data synchronization,data synchronization process in particular,face three major issues:how to accurately access the source system data,howto keep the data is safe,timely and correct sent to the target system and how to synchronize data and processes on a unified monitoring and management.

Keywords:Data synchronization;Client;C language

對于业务系统来说数据的正确性将直接影响到企业的正常工作和发展,因此对数据同步的过程和数据进行监控和管理就显得尤为重要。同步系统使用了独立的数据库来存放所有同步的数据,同步系统的客户端可以对同步的数据和过程进行管理。客户端登陆时需要设置同步系统服务器端的IP地址并输入正确的用户名、密码才能进入客户端系统进行操作。本文研究数据同步系统客户端的功能设计和异常信息日志表等数据表的设计。数据同步系统包括数据同步系统服务器端、数据同步系统客户端和数据同步系统转发器端。同步系统服务器端对源数据发送方进行身份验证并接收源系统发送的数据后保存在数据同步系统数据库的待发送表中,数据同步系统转发器端将数据从待发送表中取出发送给数据接收方,而通过数据同步系统客户端可以实现对数据同步过程中的同步数据和同步过程的监督和管理。

一、同步数据的查询、新增和修改模块

在成功登录同步系统客户端后可以对待发送数据表、已发送数据表和异常信息日志表的数据进行管理。其主要功能包括:

(一)待发送表数据的查询、修改功能。待发送表中保存了所有未发送到目标系统的正常状态消息和发送失败的异常状态消息,通过数据同步客户端可以查询到这些数据并进行修改操作,考虑为了保护数据的完整性和一致性,数据同步系统的客户端没有开放数据删除的功能。

(二)已发送表数据的查询。己发送表中保存了所有正确发送到目标系统的所有数据,可以通过数据同步系统客户端查询这些数据,但不允许修改和删除操作。

(三)异常信息日志表数据的查询。异常信息日志表记录了数据同步系统服务器本身在运行过程中发生的异常信息、源数据发送方调用同步系统服务器端接口时发生的异常信息和数据同步系统转发器端向数据接收系统发送数据时发生异常的信息,通过数据同步系统客户端可以查询所有的异常信息,为相关系统负责人进行故障排查提供了依据。

二、异常状态数据管理

在数据同步的过程中可能会出现各种的异常情况如:源系统组织的数据问题、数据接收系统服务器问题、身份验证问题等各种情况,在异常发生时需要将发生异常的数据暂停发送,并将待发送数据表中的一些相关数据的状态进行修改防止造成数据错误。若在数据同步系统转发器将正常状态的数据发送给某个数据接收方时发生了异常,则该条数据的状态将变为异常状态,所有待发送数据表中与该条数据相同转发类型和数据接收系统的所有数据的状态将同时更新为异常状态,此时数据同步系统转发器端将停止向该数据接收方发送数据,但不会对其它的数据接收方产生影响。通过数据同步客户端可以查询到异常发生时的时间和异常信息等,系统负责人可以根据异常信息快速的判断异常发生的可能原因并及时的进行处理,若是由于源系统方发送的数据问题产生异常,则可以在待发送查询页面中查询到该数据并进行修改保存操作。在系统负责人确认异常情况已经解决后可以查询待发送表中的异常状态数据并修改其状态为正常状态,此后数据同步系统转发器将自动将这些暂停发送的数据发送给数据接收方。通过数据同步系统客户端的异常状态数据管理可以有效的提高数据同步系统的可靠性和安全性。

三、转发类型管理

在同步系统服务器端发布以后将会有多个业务系统调用同步系统的服务器端接口,随着业务的发展可能会改变原先制定的数据同步对象,如原来A系统的数据需要同步给B系统,而现在则需要同时同步给C系统或者将B系统换成D系统。如果每次改变业务需求时都需要修改同步系统的代码并重新分布的话将会对其余的业务也产生影响,这应该是尽量避免的。

在同步系统服务器端接收源系统发送的数据时会根据传入的转发类型参数字段查找数据同步系统数据库转发类型表中相同转发类型的所有数据记录,然后根据每条记录中的目标系统字段生成相应的数据插入待发送数据表,例:在转发类型表中存在两条数据A和B,数据A的转发类型字段、目标系统字段、目标系统接口字段和是否可用字段分别为ES_CS_001,CA,GetDataFromA和True,数据B的转发类型字段、目标系统字段、目标系统接口字段和是否可用字段分别为ES_CS_001,CB,GetDataFromB和True,若源数据发送方传入的转发类型参数字段的值为ES_CS_001,则数据同步系统服务器端将根据A和B的值向待发送表中插入两条待发送数据,数据同步系统转发器在进行数据转发时将分别取出这两条记录并分别调用CA系统的GetDataFromA方法和CB系统的GetDataFromB方法发送数据。可以通过数据同步系统客户端将数据B记录的是否可用字段设置为false,此后在数据同步系统服务器端接收ES_CS_001转发类型的数据时将只会在待发送表中插入一条记录。因此在数据同步业务需求发生改变时只需修改转发类型表中的数据字段内容即可实现相应的数据同步业务功能的增、改而无需修改任何的代码,实现了代码的重用。

四、数据同步系统客户端实现

(一)服务器端初始化。数据同步系统主要为源数据发送系统提供了数据接收的接口,在对源数据发送方进行身份验证后将接收到的数据存储到数据库中等待转发器进行转发。本文首先数据同步的整个过程进行介绍,然后详细描述了数据同步系统客户端从初始化到运行以及接收源数据发送方的数据并存储到数据库的整个过程。在.NET中可以通过二步来实现Remoting服务器端初始化:

第一步:指定通道。在Remoting中通过通道(channel)来实现两个应用程序域之间对象的通信。为了实现跨越应用程序域进行通信,同步系统客户端必须先指定通信的通道。Remoting的通道主要有两种:Tcp类型通道和Http类型通道。在.Net的System.Runtime.Remoting.Channel命名空间里定义了IChannel接口,其中就包括了这两种通道类型。HttpChannel类型存在于命名空间System.Runtime.Remoting.Channel.Http中。通过使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。TcpChannel类型存在于命名空间System.Runtime.Remoting.Channel.Tcp中。Tcp类型通道使用了基于Socket的传输方式并通过Tcp协议来跨越Remoting边界传输序列化的消息流。TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。指定通道代码如下:

public class Server

[STAThread]

static void Mai。(stringy[]args)

{

try{

//设置端口

IDictionary htPort=new Hashtable();

htPort[""port""]=9996;

//设置名称

htPort[""name""]=""channel";

//指定通道类型

BinaryServerFormatterSinkProvider serverProv=new

BinaryServerFormatterSinkProvider();

serverProv.TypeFilterLevel=

System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

BinaryClientFormatterSinkProvider clientProv=new

BinaryClientFormatterSinkProvider();

TcpChannel channel=new TcpChannel(htPort,clientProv,serverProv);

//注册通道

ChannelServices.RegisterChannel(channel);

}

第二步:设置远程对象的激活方式。在访问远程的一个对象实例时,必须在服务器端创建通道并对该对象进行初始化。这种客户端通过通道来创建远程对象的方式,称为对象的激活。在Remoting中,远程对象的激活分为两种:服务器端激活和客户端激活。服务器端激活,即WellKnow方式激活:在激活对象实例之前会在一个URI上来发布这个类型,并为此类型配置一个WellKnown对象,然后根据指定的地址或端口来发布对象.Net Remoting把服务器端激活又分为两种模式:SingleTon和SingleCall模式。SingleCall模式是一种无状态模式,客户端调用远程对象方法时,会为每一个客户端建立一个远程对象实例,而远程对象实例的销毁和资源回收则由.NET提供的垃圾回收机制自动管理。考虑到会有多个业务系统调用数据同步系统服务器端,需要为每个访问同步系统服务器端的对象建立一个远程对象实例,所以本系统采用了WellKnown模式中的SingleCall模式。

(二)接口實现。数据同步系统必须提供数据接收接口用于获得源数据发送方的数据,数据同步系统服务器端将接口函数封装在可串行化的类中并生成.dll文件然后发给源数据发送方,源数据发送方引用该dll文件并通过设置远程对象的工P地址、端口和激活方式来获取远程对象。远程处理框架需要提供必要的基础结构,以便隐藏远程对象调用方法和返回结果的复杂性。所有需要跨越应用程序域的本地对象都必须按数值来传递并且用Serializable属性标记,否则需要继承并实现ISerializable接口。在应用程序域内部,数据类型按数值传递,而所有的对象按引用传递。MarshalByRefObject是通过使用代理进行消息通讯从而跨越应用程序域边界的对象的基类。没有从MarshalByRefObject继承的对象会以隐式方式按值封送。在Remoting中能够传递的远程对象可以是各种类型,包括复杂的DataSet对象。通过继承MarshalByRefObject可以使任意对象变为远程对象。当客户端激活远程对象时,将接收到该远程对象的代理。对该代理的所有操作都将重新定向,使远程处理基础结构能够正确截取和转发调用。远程对象定义如下:

//允许运行库串行化一个对象

[Serializable]

//远程对象必须继承MarshalByRefObject

public class Message:MarshalByRefObject

{//为源系统提供的接口

public bool GetMsgFromOrigin(byte[]identify,string oriSystem,string operatorName,string transType,string xmlStr)

{

//实例化业务逻辑层对象

MSDS.BizFacade.Message message=new MSDS.BizFacade.Message();

//调用业务逻辑层函数

return message.GetMsgFromOrigin(identify,oriSystem,operatorName,transType,xmlStr);

catch(Exception ex)

//向接口调用方抛出异常信息

throw new Except.ion(ex.Message);

finally

//释放资源

ServicedComponent.Dispose0bject (message);}}

五、结论

在企业信息化发展过程中,建立了大量的信息管理系统,这些系统之间存在一定的关联关系,部分数据在多个系统内都需要被使用。但由于缺乏有关企业信息管理模型方面的标准和规范,造成这些信息系统之间存在兼容性差、数据信息资源难以交流共享等问题,当一个业务系统对其数据库中的某些信息进行更新时,将导致该系统与其它多个系统内数据的不一致性,从而对公司业务的正常运作造成了阻碍。通过对本人所在企业的需求调研,本文设计并实现了用于解决企业数据同步问题的数据同步系统。系统采用Visual Studio 2003的开发环境,使用C语言实现系统开发。实现了在企业范围内多个业务数据库之间的数据交换与同步。系统投入正式运行,并取得了较好的应用效果。

参考文献:

[1]杨柳,蔡英蔚.基于XML格式异构数据同步模型的研究[J].中国电力教育,2008,22

[2]沈敏,许华虎.基于XML的分布式异构数据库数据同步系统的研究[J].计算机工程与应用,2005,41,5:184-186

[3]梁利妓,吴国平.一种基于XML的异构数据源集成方案[J].现代计算机,2004,3:27-29

4.学生成绩系统c语言 篇四

一、题目内容的描述

学生通讯录管理系统设计

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。

功能要求如下:

1、能建立、修改和增删学生通讯录

2、能够按多种方式进行查询,例如按姓名、按电话号码等。

3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。

二、应用程序功能的详细说明

1、应用程序实现了可视化的系统操作界面。

2、对学生通讯录形成了系统化的管理,操作简便明了。

3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。各项功能均可按照文字提示操作,浅显易懂。

4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。

5.可以将信息保存在文件(“student.txt“)中,亦可将信息从文件中读取出来,灵活方便。

三、主要模块的算法描述

学生通讯录管理系统

刷新学生信息readfile()

查询学生信息seek()

增加学生信息insert()

显示学生信息display()

退出系统

修改学生信息modify()

删除学生信息del()

保存当前学生信息save()

汇总当前学生数目number()

系统帮助help()

查询学生信息

按姓名查询

退出

按学号查询

开始

以可读写的方式打开一个数据文件

将此文件的内容读出,并存入一个新的结构体类型的数组中。

调用menu()菜单函数

进入while()主循环

输入1-8中的一数值,选择相应操作。

输入是否为0

判断键值,调用相应函数,完成相应功能。

是否已对修改存盘

调用函数save()函数,进行写数据文件操作

结束

模块一:头文件,变量定义,函数的声明

对系统所使用的变量进行定义,对函数进行声明。

模块二:录入学生信息

声明函数void

readfile(),说明一个文件指针FILE

*fp打开文

件“student.txt“。

模块三:学生信息的查找

声明void

seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支。

模块四:学生信息的修改

声明void

modify()为学生信息修改函数,通过switch(item)设定

所要修改的项目。

模块五:刷新学生信息

声明void

sort()将录入学生系按升序排列,用的是“冒泡排序法”

实现排序。

模块六:增加学生信息

声明void

insert()插入学生信息,先通过判断学生是否存在,若

否则继续输入,若是则跳出,重新循环。

模块七:删除学生信息

声明void

del()实现学生信息删除,通过学号对比确定要删除的信

息,然后用后一个替换掉。

模块八:显示学生信息

通过display()函数输出学生信息。

模块九:保存信息

通过fp=fopen(“student.txt“,“w“);写入信息。

模块十:汇总学生数目

通过number()函数将已有男女生及总学生数目汇总出来。

模块十一:系统帮助

通过help()函数帮助操作。

模块十二:界面菜单

通过switch(num)调用以上各函数,实现功能。

1、程序采用模块化设计,各模块独立,可分块调试,个模块由主函数控制调用。

2、其中主要模块(readfile()、seek()、modify())都是利用数组,指针来实现数据结构设计。

3、数据库设计的任务是确定系统所需要的数据库。数据库是表的集合,通常一个系统只需一个数据库。设计人

是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。通讯信息表包括以下字段:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail。学号为主索引。

四、结束语

我设计的程序总体功能大都能够运行顺利,但有许多地方比较复杂,需要进一步修改,进行简化。通过这次课程设计的锻炼,我收获很多,具体归纳为以下几点:

1、首先,也是最重要的一点,学会如何将一个复杂的问题简化,将一个较大的问题分成几个小问题,再一一解决这些小问题。在设计一个程序之前,要学会对程序功能进行规划,将其分为几个不同的功能模块,要思路清晰,简单易用;

2、学会灵活运用已有的知识,同时适当的拓展一些知识;比如,这次设计过程中,有一些函数以前就很少用到,甚至没有见过,但对程序的设计及用户界面的改善带来方便;

3、解决问题时,要尽可能考虑全面。每一个细节都很重要,既要避免功能的重复,也要避免功能疏漏的地方!

4、在这次课程设计过程中,参考了许多资料,发现C语言真的很有意思!比如我看到一个关于用C语言编写的小程序:五子棋、俄罗斯方块、推箱子等,等这次课程结束后,我就想利用C语言编写这些小游戏。曾经认为C是个挺枯燥的课程,现在发现这不仅仅是个简单的课程,而是个很实用的计算机工具!

五、程序源代码清单

#include

#include

#include

#define

BUFLEN

#define

LEN

#define

N

struct

record

{

char

code[LEN+1];

char

name[LEN+1];

int

age;

char

sex[3];

char

time[LEN+1];

char

add[30];

char

tel[LEN+1];

char

mail[30];

}stu[N];

int

k=1,n,m;

void

readfile();

void

seek();

void

modify();

void

insert();

void

del();

void

display();

void

save();

void

number();

void

menu();

int

main()

{

while(k)

menu();

system(“pause“);

return

0;

}

void

readfile()//刷新学生信息

{

char

*p=“student.txt“;

FILE

*fp;

int

i=0;

if

((fp=fopen(“student.txt“,“r“))==NULL)

{

printf(“Open

file

%s

error!

Strike

any

key

to

exit!“,p);

system(“pause“);

exit(0);

}

while(fscanf(fp,“%s

%s%d%s

%s

%s

%s

%s“,stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)

{

i++;

i=i;

}

fclose(fp);

n=i;

printf(“录入完毕!\n“);

}

void

seek()//查询学生信息

......void

modify()//修改学生信息

......void

sort()//对学生信息按学号排序

{

int

i,j,*p,*q,s;

char

temp[10];

for(i=0;i

{

for(j=n-1;j>i;j--)

if(strcmp(stu[j-1].code,stu[j].code)>0)

{

strcpy(temp,stu[j-1].code);

strcpy(stu[j-1].code,stu[j].code);

strcpy(stu[j].code,temp);

strcpy(temp,stu[j-1].name);

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j].name,temp);

strcpy(temp,stu[j-1].sex);

strcpy(stu[j-1].sex,stu[j].sex);

strcpy(stu[j].sex,temp);

strcpy(temp,stu[j-1].time);

strcpy(stu[j-1].time,stu[j].time);

strcpy(stu[j].time,temp);

strcpy(temp,stu[j-1].add);

strcpy(stu[j-1].add,stu[j].add);

strcpy(stu[j].add,temp);

strcpy(temp,stu[j-1].tel);

strcpy(stu[j-1].tel,stu[j].tel);

strcpy(stu[j].tel,temp);

strcpy(temp,stu[j-1].mail);

strcpy(stu[j-1].mail,stu[j].mail);

strcpy(stu[j].mail,temp);

p=&stu[j-1].age;

q=&stu[j].age;

s=*q;

*q=*p;

*p=s;

}

}

}

void

insert()//增加学生信息

......void

display()//显示当前学生信息

{

int

i;

printf(“所有学生的信息为:\n“);

printf(“学生学号,学生姓名,年龄,性别,出生年月,地址,电话,E-mail\n“);

printf(“--------------------------------------------------------------------\n“);

for(i=0;i

{

printf(“%6s,%7s,%5d,%5s,%9s,%8s,%10s,%14s\n“,stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

}

void

save()//保存当前学生信息

{

int

i;

FILE

*fp;

fp=fopen(“student.txt“,“w“);

for(i=0;i

{

fprintf(fp,“%s,%s,%d,%s,%s,%s,%s,%s\n“,stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

fclose(fp);

}

void

number()//汇总学生数目

{

int

i,girl,boy=0;

for(i=0;i

if(strcmp(stu[i].sex,“1“)==0)

{boy++;}

girl=n-boy;

printf(“男生人数是:%d\n女生的人数是:%d\n“,boy,girl);

printf(“总的学生人数为:%d“,n);

}

void

help()//系统帮助

{

printf(“输入性别时男为1,女为2“);

printf(“\n3.增加学生信息后,切记保存按7;\n“);

printf(“\n4.谢谢您的使用!\n“);

}

void

menu()//可视化的系统操作界面

{

int

num;

printf(“

\n\n

学生通讯录管理系统

\n\n“);

printf(“

*********************系统功能菜单************************

\n“);

printf(“

--------------------------------

-------------------------------

\n“);

printf(“

1.刷新学生信息

2.查询学生信息

\n“);

printf(“

*********************************************

\n“);

printf(“

3.修改学生信息

4.增加学生信息

\n“);

printf(“

*********************************************

\n“);

printf(“

5.按学号删除信息

6.显示当前信息

\n“);

printf(“

*********************************************

\n“);

printf(“

7.保存当前学生信息

8.汇总学生数目

\n“);

printf(“

*********************************************

\n“);

printf(“

9.系统帮助

10.退出系统

\n“);

printf(“

---------------------------------

------------------------------

\n“);

printf(“

************************************************************

\n“);

printf(“请选择菜单编号:“);

scanf(“%d“,&num);

switch(num)

{

case

1:readfile();break;

case

2:seek();break;

case

3:modify();break;

case

4:insert();break;

case

5:del();break;

case

6:display();break;

case

7:save();break;

case

8:number();break;

case

9:help();break;

case

10:k=0;break;

default:printf(“请在1-10之间选择\n“);

}

5.基于C语言多维立体系统研究专题 篇五

【摘 要】 针对于高职院校中,开设的C语言程序设计课程,在教学过程中还存在着传统教学、多媒体教学和混合型教学模式,其形式单一,枯燥乏味。而该课程的教学内容对于初学语言的学生来说,知识内容抽象,教师授课难教,学生也难学。为了更好的转变传统教学模式,本文主要提出多维立体教学系统,本人结合多年的教学经验,从教学手段,以及教学方法等一些方面对C语言程序设计课程进行教学模式改革和教学实践改革,从而提高学生学习兴趣,培养学生独立分析问题、解决问题、自主创新的能力。

【关键词】 高职 C语言 立体教学

在高职院校计算机专业中,C语言程序设计一门专业必修课,同时也是许多非计算机专业的公共基础课。它主要培养学生的算法思想,程序意识,它是高校学生所接触到的第一门程序设计语言,其重要性可想而知。目前,针对于大部分的高职院校采用传统的授课方式,没有真正摆脱“教本位”的模式。面对当前高职学生的基础知识薄弱,学习主动性和动手能力较差。为引起学生的学习热情,那就将C语言教学必须要创新授课思路、创新教学模式,营造学生的主观能动性,遇到问题能够分析并解决问题的能力。本人结合现有的多年的教学经验、教学资源进行整合,改进了C语言程序设计的教学,为让学生能较快地掌握程序设计基本方法,切实提高学生的学习兴趣,一直以来都是值得探索的问题。关于C语言教学问题分析

对于C语言这门课程教材的选取直接影响到学生所学知识的实用性、系统性、及新颖性。对于目前存在的关于C语言教材种类繁多、内容老旧、良莠不齐等差异,就需要教师对教材要认真的选择。在教材中还存在形式陈旧,案例单一,练习不突出重点和难点,理论与实际运用脱节等多方面问题,而真正适合高职院校学生来使用的C语言教材并不多。高职院校大部分采用教材多为普通高校所采用的教材、案例教材、项目教材等。

除教材外,据调查大部分的高职院校对C语言这门课的改革较少,传统的教学方法使得学生除了能对课本的内容掌握之外,根本不能独立的自行编写程序,根本不能达到将理论与实践联系到一起的能力,更谈不上与市场需求相结合,对于高职生来说不能很快的适应工作岗位的需求。C语言多维立体教学系统

为学生树立一个正确的学习目标是教师教好学生,如何学好一门课的根本所在。教师和学生之间要承现出一种交互关系,实现学生的“学”与教师的“导”的高效互动,更好的提高学生的学与操作技巧。传统的教学模式存在交互性弱、理论与实践缺乏联系等缺点。本人将多年C语言程序设计课程的教学经验给以总结,逐渐引入多维立体教学系统。该系统由立体化教学资源、理论知识教学环节立体化、实验实践立体化三个子系统构成多维度、立体化的学习模式,语言学习者定制完全个性化的学习模式,能全面提升学习者的C语言运用水平,改变学生的认识结果,真正实现学知所用、学会所用、学有所用且学会“学”。

2.1 立体化教学资源

教学资源立体化,以现有纸质教材为主要核心、以其配套的多媒体课件、素材资源作为基本资源。而立体化教学则是以课程为单位,将教材与多媒体资源相整合,归纳总结为教师的主讲教材、教师的参考教材、学生实验指导书、电子图书、CAI课件、案例库、试题库等,我们将这些称为教学包。其发现形式以网络、光盘等传递。这样使得教师在教学中充分发挥,取其各自的优势,满足学生们的多种应用需求。既在课堂讲授新知识,又能课下将重点、难点重复和强调,学生也可通过教学包中的内容来补充自己不足,相互配合。这样即可节省资源,也能提高教学质量。

2.2 理论知识教学环节立体化

全方位多角度的课堂教学,立体化教学模式,可利用新的教育理念、新技术手段、新教学方法、将教师和学生、理论教学与实践教学、教学与考核紧密结合起来,构建一个完整的、丰富的、互动的课程系统的教学模式。理论知识教学中本人一般采用,CAI课件+程序窗口+案例+板书+课堂提问+小组讨论+举一反三+课后作业的这种教学手段,这样学习理论知识的同时,学生课堂就能验证,通过循序渐进的案例引入,可将知识内容逐渐加深,通过对新的问题的提出、思考、解答来引出新的知识点。这样的教学环节设计,使得课堂的气氛及师生的互动更为激励学生的好学特性。在教学中发现实用且效果好。学生记忆扎实,课后巩固。

2.3 实验实践立体化

以前大多数教师授课侧重于讲理论、重结果的知识传授,而现在很多教师有了问题意识,从提出问题到解决问题,从而激发学生们的创新潜力和意识。为避免学生把“创新”作为一个临时项目任务来对待,根据高职院校培养学生的目标,开始反思课程教学,削减一些较老旧的教学内容和设置重复的课程,将创新实验项目深入到学生的教学活动中,同时增加实践和实验教学的环节。

教师为学生制定专门的学生实验指导书,包括实验目的、实验要求、及要求每位学生手写实验报告等,学生可以进行分组实验。实验课是实践教学的重要组成部分,必须充分重视。这类课程逐步将转变老师的验证性操作转化为学生的探索性操作,有条件的实验室要逐步开出综合自主性、操作性实验。要严格训练学生实验操作技能和对实验数据分析处理技能。结语

结合多年的教学经验的实践,使我知道作为C语言程序设计作为一门基础语言,要让知识点繁杂、晦涩难懂内容被学生被所了解与掌握是很难的,这使得我们更需要在今后的教学过程中不断改进教学方法来应对教学过程中出现的问题。作为教师更要善于把复杂的问题简单化。本人也会继续将C语言程序设计这门课程立体教学系统更加完善。

参考文献:

6.学生成绩系统c语言 篇六

//定义最多的航班数

#define PRINT “%dtt%stt%stt星期%stt%dn ”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count

//宏定义输出格式

struct air

//定义结构体数组 { int num;

//定义航班号

char start[20];//航班起始站

char over[20];//终点站

char time[10];//飞行时间

int count;

//机票数量 }s[N];

int i,m=0;

//定义全局变量 char ii[10];

void add();//函数声明增加航班信息函数 void print();

//显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件

void save();//保存文件 void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小

void main()//主函数 { int j;

chushihua();//系统初始化判断是否存在原始数据文件

printf(“

欢迎使用飞机订票系统n”);//打印出系统主界面

do {

printf(“================================== ”);

printf(“1.增加航班信息n”

“t2.浏览航班信息n”

“tt3.查找航班信息(按航班号)tt╮(╯_╰)╭n”

“ttt4.航班排序(按航班号)n”

“tttt5.订票业务n”

“to(︶︿︶)ottt6.退票业务n”

“tttttt0.退出n”);printf(“================================== ”);

printf(“请在0-6中选择以回车键结束: ”);scanf(“%d”,&j);switch(j){

case 1: add();//调用增加航班函数

break;

case 2:print();//调用显示模块

break;

case 3:search();//调用查找模块

break;

case 4:paixu();//调用排序函数

break;

case 5:dingpiao();//调用订票模块

break;

case 6:tuipiao();//调用退票模块

break;

case 0:

//退出系统

save();

printf(“谢谢使用,再见!”);

break;} }while(j!=0);//判断是否调用其他函数

}

void chushihua()//定义系统初始化函数 { if(access(“hangban.dat”,0)){

build();} else

read();} void build()//定义建立数据文件函数 { FILE *fp;//定义文件指针

if((fp=fopen(“hangban.dat”,“wb”))==NULL)//打开文件并判定是否出错

{

printf(“创建文件失败!”);//打印出错提示

getchar();

return;} printf(“请依次输入航班信息(以回车键结束):n”);

//打印提示信息

printf(“------------n”);for(i=0;i

printf(“请输入航班号: ”);

scanf(“%d”,&s[i].num);//输入航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[i].start);//输入起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[i].over);//输入终点站

printf(“请输入时间(星期几): ”);

scanf(“%s”,s[i].time);//输入时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[i].count);//输入机票数

fwrite(&s[i],sizeof(struct air),1,fp);

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);

if(strcmp(ii,“y”)!=0)

//判断是否继续添加航班信息

{

fclose(fp);

//关闭文件

return;

} } }

void read()

//定义读取文件函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){

printf(“创建文件失败!”);

getchar();

return;} i=0;while(!feof(fp)){

fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据

i++;

m++;//计算存在航班数

} m--;fclose(fp);}

void save()//定义保存函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL)

{

printf(“创建文件失败!”);

getchar();

return;} for(i=0;i

//逐块保存数据

fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}

void add()//定义增加航班信息函数 { do{

printf(“请依次输入您要增加的航班信息(以回车键结束): n”);

//打印提示信息

printf(“------------n”);

printf(“请输入航班号: ”);

scanf(“%d”,&s[m].num);//读取航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[m].start);//读取起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[m].over);//读取终点站

printf(“请输入时间: ”);

scanf(“%s”,s[m].time);//读取时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[m].count);//读取机票数

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判断是否继续添加 }

void output()//定义输出格式函数 { printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题

for(i=0;i

printf(PRINT);//打印出信息

}

void print()//定义显示航班信息函数 { printf(“n目前我们有如下航班:n”);output();

//调用输出格式函数

printf(“n请按回车键返回上层菜单 ”);getchar();getchar();}

void search()//定义查询函数 { int n;

do {

printf(“n请输入航班号: ”);

scanf(“%d”,&n);//输入查询的航班号

for(i=0;i

{

if(s[i].num==n)//按航班号判定输出条件

{

printf(“n您所查找的航班信息为:n ”);

printf(“航班号tt起始站tt终点站tt时间tt机票数 nn”);

printf(PRINT);//显示信息

printf(“n查询完毕,按回车键继续”);

getchar();

getchar();

return;

} } printf(“n对不起,没有您需要的信息!n ”);printf(“是否重新查找?请键入y或n以回车键结束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 }

void dingpiao()//定义订票业务函数 { int n;char a[10]=“y”;do {

search();//调用查询模块

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能订票。n”);//未查找到所需航班

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

do

{

printf(“请输入您要订的机票数(以回车键结束): ”);

scanf(“%d”,&n);//输入所订机票数

if(n<=0)

//判定机票数是否出错

{

printf(“输入错误!至少需订1张机票。n”);

}

else if(s[i].count==0)//判定机票是否售完

{

printf(“对不起,你所选择的航班的机票已售完!n”);

break;

}

else if(s[i].count!=0&&s[i].count>=n)//判定机票数是否大于等于订票数

{

s[i].count=s[i].count-n;

printf(“订票成功!”);

break;

}

else if(s[i].count

{

printf(“对不起,你所选择的航班只剩 %d张机票n”, s[i].count);

printf(“是否需要重新输入机票数?请输入y或n以回车键结束: ”);//判定是否重新输入订票数

scanf(“%s”,a);

}

}while(!strcmp(a,“y”));

printf(“是否需要订其他航班的机票?请输入y或n以回车键结束: ”);

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票 }

void tuipiao()//定义退票函数 { int n;char a[10];do {

search();//调用查询函数

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能退票。n”);

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

printf(“请输入您要退的机票数目: ”);

scanf(“%d”,&n);//输入所退票数

if(n<=0)

//判定票数是否有效

printf(“输入错误!至少需退1张机票。”);

else

{

s[i].count=s[i].count+n;

printf(“退票成功!”);

}

printf(“是否继续? 请键入y或n以回车键结束: ”);//判定是否继续退票

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定并跳出循环

}

void paixu()//定义排序函数 { int n;

printf(“n******************************************************************************** ”);

printf(“1.按航班号从小到大排序n”

“t2.按航班号从大到小排序n”);printf(“******************************************************************************** ”);

printf(“请在1-2中选择以回车键结束: ”);scanf(“%d”,&n);//输入排序方式

switch(n){

case 1:paixu1();//调用从小到大排序函数

break;

case 2:paixu2();//调用从大到小排序函数

break;} printf(“排序后的航班信息为:n”);output();

//显示排序后航班信息

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();}

void paixu1()//定义从小到大排序函数 { int k,j;struct air t;for(i=0;i

{

k=i;

for(j=i+1;j

if(s[k].num>s[j].num)

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } }

void paixu2()//定义从大到小排序函数 {

} int k,j;struct air t;for(i=0;i

if(s[k].num

k=j;if(i!=k){

t=s[k];

s[k]=s[i];

7.C语言智能化在线学习评价系统 篇七

现有的测试系统都注重测试的结果, 缺乏对试卷的分析。不能透过试卷测试考生的知识结构和各项能力, 不能针对学生不理解的知识点进行个别化指导, 而这些恰恰是考试的目标所在。

本文设计了一个C语言智能化在线学习评价系统。利用Web系统的跨平台性, 学生能够通过浏览器方便地使用系统。系统考虑学生就某一知识点的掌握情况, 针对学生不懂的知识点给出评价并进行个别化测试, 返回测试结果, 给出相应的评价, 以利于学生更好地学习C语言课程。

1 学习评价系统的分析与设计

1.1 系统实现的目标

为了便于学生通过跨平台的网络系统和浏览器, 全面了解和掌握学生对C语言课程的掌握情况, 在任何时间任何地点进行自主化学习。本智能化在线评价系统的设计目标是实现界面友好, 方便操作, 交互性良好, 便于增强老师和学生, 学生与学生之间的交流, 评价结果清晰明确, 便于学生及时了解学习情况并调整学习策略的系统。为实现这些设计目标, 本系统主要实现了课前评价, 课后评价以及课程讨论区这几方面的内容:

a) 课前评价

系统能够根据学生提交的静态信息进行分析, 针对选择不同风格的学生给出相应的试题。通过测试结果, 判断出学生对C语言课程某一知识点预习的情况, 根据该预习情况做出评价, 对应采取何种学习策略给出相应的建议。

b) 课后评价

学生通过建议, 采用针对该知识点相应的学习策略进行学习后, 再次进入本系统测试。通过测试结果, 判断出该学生对这一知识点的掌握理解程度, 根据学生的掌握程度做出评价, 建议学生采用什么样的学习策略进行调整, 用以巩固所学知识点。

c) 课程讨论区

讨论区, 即知识论坛。学生可以按知识点进行查询, 跟同学探讨就该知识点的学习方法。如果实在不能理解, 可以向老师进行发问。老师登陆论坛可以跟学生进行交互, 回答学生问题, 对学生不理解的知识点进行个别化的学习指导。

1.2 系统功能模块图

本系统要实现学生信息采集、课前评价、课后评价、知识论坛, 以及学习策略调整等功能, 功能模块图如图1所示。

2 学生信息采集

本模块主要完成对学生静态信息的采集。由于不同学生学习风格各不相同, 对同一知识点, 采用的学习方法和学习方式都有所差别。所以系统要求把学生的学生风格记录下来, 以利于学习策略的选择。系统采用注册登陆的方法来进行学生静态信息的采集, 根据学生的选择, 推测学生的学习风格, 便于更好地进行知识点测试。

学生注册登陆系统后, 进行学生静态信息的采集如下图:

从图1的信息采集表中, 可以分析出学生的部分性格特征:内向、好静。系统主要从学生登陆注册的信息中获得学生的静态信息, 从而推测出学生的兴趣爱好以及性格特征。以便在学习策略调整中给出相应的调整建议。如:学生喜欢阅读, 相应的反馈给学生与C语言课程学习相关的书籍。

3 课前评价

系统鼓励学生在学习前对将要学习的知识点进行课前预习。通过预习, 学生对所学知识点已经有所了解, 再利用本系统进行学前测试, 有助于学生发现该知识点的理解漏洞和听课重点。本系统的课前评价主要采用遗传算法作为组卷算法, 结合一定组卷策略, 实现组卷的全自动化。如果对生成试卷部分不满意的化, 也可以进行手动修改。试题抽取采用智能化组卷, 针对学生风格给出相应的题型。根据测试结果给出需要进一步加强的评价, 学生通过调整学习策略, 对该知识点的某一部分进行特别强化, 用以加深对该知识点的印象。

4 课后复习

为检测学生对知识点的掌握, 系统在学生学习后进行课后测验。系统采用智能化组卷, 题目针对学生不理解的知识点, 即学生预习的薄弱环节进行重点强化。根据学生测验结果, 分析学生接下来应采用何种学习策略继续学习, 给出评价, 即对学生学习该知识点后的学习效果进行评价。为实现本模块, 运用面向对象的建造方法, 设计一个简单的学生类如下:

5 学习策略调整

为促使学生更加全面的掌握知识点, 从而调整学生的学习方式。学习策略的调整贯穿与整个系统, 参照学生的学习风格, 性格特点等, 在相应的阶段给出合适的反馈意见和评价。课前评价根据学生的静态信息, 运用智能组卷算法抽取相应的试题进行测试, 通过测试结果给出相应的评价。对学生将要学习的知识点给出智能化的建议, 让学生作为参考, 调整学习策略。学生用调整后的学习策略学习。然后再来进行课后评价, 同样采用智能组卷法, 针对学生薄弱缓解进行测试, 给出评价。对学生是否能够进行下一知识点学习做出判断。推荐学生进入讨论区跟同学探讨学习方法, 学习内容, 或者就不明之处, 向老师发问。老师对学生进行个别辅导。

6 结论

本文利用B/S架构, 以及面向对象的方法设计了该C语言智能化学习评价系统。系统通过智能组卷算法, 根据学生风格筛选出适合当前测试的题目。推测出学生那些知识点需要强化, 针对知识点开设知识点论坛讨论区。通过本系统学生能够更加深刻了解到自己那些知识掌握的不足和努力的方向, 不足之处是学生风格难以把握, 难于给出有效的学习调整方案。针对系统测试评价的单一性, 对于自制力较差的学生, 将来可以加设学习娱乐环节, 寓教于乐, 全方面考虑到学生的用户体验。

摘要:为了考查学生对C语言课程的掌握情况, 该文设计了一个C语言课程学习的智能在线评价系统。便于进行智能化个别化和主动式的辅助学习。该系统采用B/S架构和面向对象技术设计, 根据学生的在线评测结果, 对学生应掌握的知识和学习情况进行评价, 并对学生应采取的学习策略进行智能化调整。

关键词:C语言,智能化,在线评价系统

参考文献

[1]谭浩强.C程序设计[M].3版.北京:清华大学出版社, 2008:1-3.

[2]李洛, 黄达峰.智能化C语言自学系统的设计与实现[J].宁波职业技术学院学报, 2012, 16 (5) :42-45.

[3]C Programming[EB/OL].[2012-05-06]http://www2.its.strath.ac.uk/courses/c/.

[4]吴运命, 赵秀玲.网络考试测评系统的研究现状与发展趋势[J].软件导刊, 2010, 9 (10) :99-100.

[5]廖汗成.智能化在线考试测评系统的设计[J].科技广场, 2006.

[6]丁海燕, 桂进阳.智能教学系统设计_以基于Web的日本语导学系统为例[J].云南大学学报 (自然科学版) , 2011, 33 (S1) :290-293.

[7]张翠善.基于Web和数据挖掘的智能教学系统设计[J].科技资讯, 2007 (29) :78-79.

[8]周晓军.多媒体智能教学系统研究与设计[M].北京:北京语言大学出版社, 2009:85-101.

8.职业技校学生的C语言教学探究 篇八

关键词:C语言程序 教学方法 职业技校学生

时代的飞速发展促使我国科技力量不断同步提升。计算机技术的普及及向其他学科的快速渗透让计算机知识的重要性日益凸显。职业技校的计算机专业学生将来想要有很好的就业渠道和就业选择,就必须对计算机工作原理有正确的理解,同时需具备熟练操作和使用的能力。

C语言程序设计作为计算机专业课程中的基础内容,可以说是一名计算机从业者的必备基本技能,属于进行计算机软件开发所用的入门语言,为后续的其他计算机专业课程的学习打下坚实基础,将计算机解决实际问题由可能变成了现实。

经过该课程的多年教学,笔者发现虽然C语言属于概念简单、类型丰富、表达能力强的短小精悍型计算机程序设计语言,但因为它的灵活性和多样性,学生掌握的情况皆不太理想,当然这和学生自身情况也有密不可分的关系。如何将这门基础课程讲好,让学生在学习的过程中主动提高自学能力和应用能力,让枯燥的理论知识变得实用好理解,下面就谈谈笔者的一些感悟与探究。

一、实际教学中存在的问题

1.学生的计算机水平参差不齐

职业技校学生的招生范围比较广泛,对于计算机的掌握水平也是参差不齐,有的学生甚至都没有接触过计算机。此外,部分学生的数学功底薄弱,逻辑分析能力不强,在学习的过程中又缺乏积极性和主动性。这给后续的教学带来了很大的困难。

巨大的水平差异使得在教学过程中,有点基础的学生满足于一知半解,掌握了书本上的基本概念或是常见例题就自我满足,学习的内容不踏实稳固,独立解题时就会错误百出;而基础较差的学生跟不上普通教学进度,日积月累问题增多,丧失了学习的信心,失去了学习热情。

2.教师的课堂教学方式单一

课堂教学是目前主要的教学手段,通过增加了多媒体演示等方式来帮助学生更快更好地掌握C语言的实际应用,但若仅仅依靠课堂例题的讲解和示范操作,忽视基础语法等知识点的重要性,同样会出现很多问题。对于很多刚刚接触编程语言的学生来讲,最大的问题就是觉得入门难,上课按照老师的讲解依样画葫芦可以听懂学会,但是课后一旦遇到新的程序就又不理解程序的实际功能了,如果要用程序来实际解决问题就更加有难度,根本不知道如何下手也没有具体的思路,从而产生了畏惧感。

如若过重地强调语法细节,大量在课堂讲解基础理论知识,甚至以计算机考级真题和模拟题作为讲解和练习的重点,又会使得课程的实用性大大降低,学生也会感觉到枯燥无味,丧失学习兴趣。长此以往,学生们仅仅注重了语法的学习,没有真正领悟程序语言设计的基本思想和方法,更不可能独立编写出有实用价值的程序。

3.上机实践的局限性

作为一门计算机课程,C语言课程的学习必不可少的就是学生上机操作训练。该过程既需要学生掌握概念,又需要动手操作,还需要调试运行出结果。但目前学生在实际上机时,往往对布置的任务敷衍了事,有的甚至直接抄袭其他学生的程序。同时,上机操作的指导老师往往只有一位,而学生编写程序的方法却不会相同,于是出现的问题既有共性的也有个性的。这样就导致不能及时解答每位学生的问题,使部分学生的程序不能继续调试,白白浪费课堂上宝贵的上机实践时间。

二、问题解决方案探究

1.激发和培养学生的学习兴趣

任何学科的学习与学生的学习兴趣是息息相关的,C语言的学习也不例外。针对目前职业技校学生没有过多接触过计算机语言,其他基础知识比较欠缺,本课程的理论知识枯燥深奥的特点,不仅仅要采取多媒体演示的方案进行教学,还要穿插一些既具有趣味性又具有实用性的程序进行讲解展示,例如“猴子吃桃”“鸡兔同笼”“水仙花数”等问题,吸引学生的注意力,通过简单模仿和后期深入练习,体验到编程后的成就感,促使学生激发起自身学习的动力。

2.合理设置教学目标,调整教学方式

教师在课前要对学生进行充分的熟悉和了解,针对学生的实际情况和教学大纲的要求,合理设置教学目标,调整教学方式。

在实际教学中笔者发现,学生对于基本的概念理解记忆往往没有在实际应用中发现问题后强调概念的重要性效果好。于是在平时的课堂教学中,笔者往往弱化基本格式的死记硬背,强化各种形式的实际应用,选择性地挑选例题讲解,将原本晦涩难懂的语法知识通过例题引出,让学生更快地掌握程序编写的实际应用,培养解题的正确思维模式,让教学效果变得既有广度又有深度。

学生在实际解题操作时,特别是遇到条件语句、循环语句和数组这部分有难度的内容时,容易产生畏难情绪。这就要求教师合理设置教学目标,设置一些难度适宜的分解目标,深入浅出,缩小问题台阶,让学生有能力逐步解决问题,激发学生自己动脑筋想方法,从而达到掌握教学重难点的要求。要知道学校中编程语言的学习只是一个基础,学好C语言是程序设计的一个良好开端,切忌设计好高骛远的目标,让学生永远失去了继续主动学习的热情。

教学过程中,不光采用多媒体演示的方法,还可以采用其他多种手段促进学生对内容理解。例如在讲解交换两个数的位置的教学过程中,笔者引入了现场模拟,课堂上携带了一杯可乐、一杯雪碧和一个空杯,让同学现场表演,要交换就必须将其中一种饮料腾入到另一个空杯中,即需要增加的另一个变量,这样另一种饮料才能换到前面的饮料杯中,然后腾出来的饮料倒入另一个饮料的杯子,从而实现了交换操作。在教学中引入了现场模拟,使学生更容易对这些抽象的内容加深理解,更重要的是碰到类似的问题他们会触类旁通,从而慢慢培养出编程的兴趣。

3.教学形式多样,注重团队精神

由于职业院校学生的基础薄弱,学习自制力较差,上课易走神分心,甚至有的会开小差,利用上机实践的机会玩电脑游戏,大大影响了课堂的教学效果。学生的学习能力也有高低,要完成相同的学习任务就会出现时间和掌握程度上的差异。

在实际教学中,笔者会根据各个学生不同的情况进行分组,让每组学生的综合水平基本持平,将能力较强的学生设为组长,通过任务布置和团队分工的合理安排,让每个学生都在课堂上积极行动起来,并且在相互讨论和分析优劣利弊中取长补短,起到了提优补差的效果,培养了学生的团队协作能力,这在今后计算机编程的工作中也是十分重要的能力。

4.改革考核方式,优化评价机制

C语言的学习内容和其他课程有些异同,不能片面强调考试试卷答题的正确率。在平时教学中,笔者以考核为手段,重在激励和鼓舞学生将知识内容掌握牢固。平时的每次上机实践都是一次考核,配套的实验报告中必须要包含流程图、调试过程和问题分析,在规定时间内完成后根据质量评分,计入最后的学期成绩评分,这样使每位学生对每次上机实践课程都非常重视,最大限度地激励学生的学习潜能。

C语言的教学重点是培养学生分析问题与解决问题的能力,而这种能力的培养是与学生的刻苦学习分不开的。如何通过这门课的教学来提高职业技校学生分析问题、解决问题的能力和编程的能力,让其具备更强的就业能力,还需要进行不断的探讨和实践。笔者会在今后的教学过程中细心观察,不断地去探索研究,不断丰富教学经验,找到一条能获得理想教学效果的途径,为中职教育事业贡献一份力量。

上一篇:爱吹牛的孩子作文下一篇:雅思口语写作中话题词汇的重要性