C语言学习系统.docx

上传人:b****5 文档编号:6889017 上传时间:2023-01-12 格式:DOCX 页数:69 大小:1.08MB
下载 相关 举报
C语言学习系统.docx_第1页
第1页 / 共69页
C语言学习系统.docx_第2页
第2页 / 共69页
C语言学习系统.docx_第3页
第3页 / 共69页
C语言学习系统.docx_第4页
第4页 / 共69页
C语言学习系统.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

C语言学习系统.docx

《C语言学习系统.docx》由会员分享,可在线阅读,更多相关《C语言学习系统.docx(69页珍藏版)》请在冰豆网上搜索。

C语言学习系统.docx

C语言学习系统

目录

前言1

第一章需求分析2

1.1需求概述2

1.2各子系统的功能模块及数据流程图3

1.3数据字典11

第二章数据库设计12

2.1概念结构设计12

2.2逻辑结构设计15

第三章系统的详细设计和实现19

3.1数据库连接方案19

3.2登录模块的设计20

3.3主界面模块设计21

3.4基础知识管理模块设计22

3.4.1基础知识学习管理模块设计22

3.4.2函数学习管理模块设计23

3.5经典例题管理模块设计24

3.6章节试题管理模块设计25

3.7二级模拟测试管理模块设计29

3.8我的题库管理模块设计31

3.9维护管理模块设计33

3.10系统管理模块设计36

3.10.1用户管理模块设计36

3.10.2权限管理模块设计37

第四章软件调试38

4.1软件测试的目标38f

4.2应用软件测试方法38

4.3各功能模块测试39

4.4整体测试39

第五章结论40

参考文献41

致谢42

附录A43

前言

C语言程序设计作为大学理工课必修的课程,是其它编程语言的必学入门课程,要求用一种结构化设计的编程思想,学好C语言可以很好地掌握一般程序设计的方法,这对学生来说是非常重要的。

学习C语言不仅需要一定的基础知识,而且要求上机练习,而历年来我校学生参加C语言二级考试通过率偏低。

由于C语言概念比较复杂,规则繁多,使用灵活,学生在刚刚学习C语言普遍觉得难度太大,学习起来枯燥乏味,不感兴趣。

有些同学不能独立解决编译错误问题,有些复杂程序的编程思路不清晰,鉴于这种情况,开发一款功能强大、界面友好的C语言辅助学习软件是很有必要的,它让您在短时间内学懂、学通C语言。

本系统作为辅助教学软件实现“以学生为中心”的开放式管理,使学生能够做到自我学习、自我指导、自我检验。

本系统在学习数据库的基础上,灵活运用数据库开发软件Delphi和数据库管理软件SQLServer,开发出能供教学使用的C语言学习系统,以方便教学。

本系统可供学生使用,学生可以通过使用本系统,巩固C语言基础知识,对自己进行测试,模拟考试国家计算机二级C语言。

创建自己的C语言题库。

因此,C语言学习系统应有以下功能:

1)基础知识管理:

收集了常用C语言知识点和函数,可以供用户浏览和查询。

2)经典例题管理:

收录了一些经典编程实例,并作了详细注释,给同学们起到抛砖引玉的作用,使用户了解编程算法,并提高用户阅读程序的能力。

3)章节试题管理:

用户可以通过此模块测试自己,了解自己的不足,起到查缺补漏的作用。

4)二级模拟测试管理:

真实模拟二级笔记考试,使用户熟悉二级C语言考试,提高通过国家二级C语言考试的可能。

5)系统维护管理:

用户可以建立自己特有的题库,提高学习效率。

 

第一章需求分析

1.1需求概述

C语言学习系统从大的方面分主要集中在C语言基础知识的学习、上机学习、例题详解等。

所以该系统主要是实现对数据的录入、插入、删除、查询、等功能。

其次,开发这个系统的目的就是帮助学生学好C语言、通过国家二级C语言等级考试,再者,为了帮助学生攻破易错点、难点,系统还应包含我的题库功能,用于构建学生自己独特的C语言题库。

根据这个系统所要实现的目的和任务,调查分析总结出这个系统最终实现的主要功能如下:

1)基础知识管理:

通过对18大类70多个知识点,通过对C语言的一些最基本的语法知识、函数解释和算法详尽的解释说明,学习C语言的基础知识,使学生打牢基础。

基础知识管理主要包含基础知识学习和函数学习两个部分。

主要通过浏览和查询功能来实现。

◆知识浏览,用户可以对自己感兴趣的知识点进行查看。

◆知识查询,用户输入自己想查看的知识点或函数,然后系统显示对应信息。

2)经典例题管理:

收录一些经典编程实例,配有详细的实例代码,从而给学生起到抛砖引玉的作用,使他们能快速的进阶C语言学习。

经典例题管理主要包括题目定位、加入题库和答案及分析的查看。

◆题目定位,可以查看上一题、下一题,也可以自由转到某一题。

◆答案及分析的查看,用户可以对例题的答案和分析进行查看。

◆加入题库,用户把做错的题目或者认为比较好的题目加入到自己的题库中。

3)章节试题管理:

通过对每章的测试,了解自己的不足,实现自我检测的功能。

章节试题管理主要包括题目定位、用户答题、加入我的题库和作答情况显示。

◆题目定位,用户可以查看上一题、下一题,也可以自由转到某一题。

◆用户答题,用户根据题目内容选择答案。

◆加入题库,用户把做错的题目或者认为比较好的题目加入到自己的题库中。

◆作答情况显示,系统把用户所选择的答案及作答情况进行显示。

4)二级模拟测试管理:

模拟考试国家计算机C,使您轻松通过国家计算机等级考试二级C语言。

二级模拟测试管理主要包括题目定位、用户答题、作答情况显示和计时。

◆计时,显示乘余时间,交卷时间到时系统自动提示用户交卷。

5)我的题库管理:

方便用户对题目的管理,用户可以添加自己的注释。

我的题库管理主要包括题目定位、编辑删除题库、题库情况显示。

◆题目定位,用户可以查看上一题、下一题,也可以自由转到某一题。

◆编辑删除题库,用户可添加自己的注释,也可以编辑、删除题目。

◆题库情况显示,显示题库数量及加入的时间。

6)系统维护管理:

管理员可增加删除系统操作人员,并设定操作人员的权限。

通过对用户进行权限管理范围设定,减轻操作内容,也可对单个用户权限及范围进行修订,从而保证系统在实施中的灵活性。

1.2各子系统的功能模块及数据流程图

C语言学习系统包括系统管理模块、维护模块、基础知识管理模块、经典例题模块、章节试题管理模块、二级模拟管理模块和我的题库管理模块。

系统框图如图1.1所示。

图1.1C语言学习系统功能模块框图

 

其中每个功能都由若干相关联的子功能模块组成。

C语言学习系统的数据流图如图1.2所示。

图1.2C语言学习系统数据流图

1)基础知识管理

基础知识管理主要包含基础知识学习和函数学习两个部分。

主要通过浏览和查询功能来实现。

包含的功能模块如图1.3所示。

图1.3基础知识管理模块功能框图

从以上的分析可以得出其数据流程图,如图1.4所示。

图1.4基础知识管理模块数据流图

 

2)经典例题管理

经典例题管理主要包括题目定位、用户答题、加入我的题库和作答情况显示功能模块如图1.5所示。

图1.5经典例题管理模块功能框图

其对应的数据流程图如图2.6所示。

图2.6经典例题管理模块数据流图

3)章节试题管理

通过对每章的测试,了解自己的不足,实现自我检测的功能。

章节试题管理主要包括题目定位、用户答题、加入我的题库和作答情况显示。

功能模块如图1.7所示。

 

图1.7章节试题管理模块功能框图

其对应的数据流程图如图1.8所示。

 

图1.8章节试题管理模块数据流图

4)二级模拟测试管理

二级模拟测试管理用于模拟考试国家计算机C,使您轻松通过国家计算机等级考试二级C语言。

包含的功能模块如图1.9所示。

图1.9二级模拟测试管理模块功能框图

其对应的数据流程图如图1.10所示。

图1.10二级模拟测试模块数据流图

5)我的题库管理

方便用户对题目的管理,用户可以添加自己的注释。

我的题库管理主要包括题目定位、编辑删除题库、题库情况显示。

功能模块如图1.11所示。

 

图1.11我的题库管理模块功能框图

其对应的数据流程图如图1.12所示。

图1.12我的题库管理模块数据流图

6)系统管理

管理员可增加删除系统操作人员,并设定操作人员的权限。

通过对用户进行权限管理范围设定,减轻操作内容,也可对单个用户权限及范围进行修订,从而保证系统在实施中的灵活性。

功能模块如图1.13所示。

 

图1.13系统管理模块功能框图

其对应的数据流程图如图1.14所示。

图1.14系统管理模块数据流图

 

1.3数据字典

根据以上对各功能模块及其数据流图的分析,可以得出系统的数据字典如表1所示。

表1C语言学习系统数据字典

基础知识信息

编号,名称,内容

章节试题信息

章节编号、章节名称、内容、答案

经典例题信息

例题_题号,内容,分析,答案

二级测试信息

套数_编号,题型,答案、题目内容

我的题库信息

题库_编号,用户名、题号,题目内容、用户注释

用户信息

用户编号,用户名、密码、权限

函数信息

编号,函数名称,函数内容

 

第二章数据库设计

在概念结构的设计过程中,设计者要对用户需求进行综合、归纳和抽象,形成一个独立于具体计算机和数据库管理系统的概念模型。

数据逻辑设计的主要任务是将概念结构转换为SQLServer2000支持的数据模型,并将性能进行优化。

2.1概念结构设计

根据以上分析可以得出各个实体关系图如下:

1)基础知识E-R图

图2.1基础知识E-R图

2)函数E-R图

图2.2函数E-R图

3)经典例题E-R图

图2.3经典例题E-R图

4)

章节试题E-R图

图2.4章节试题E-R图

5)二级试题E-R图

图2.5二级试题E-R图

6)我的题库E-R图

图2.6我的题库E-R图

7)用户E-R图

图2.7用户E-R图

 

8)系统E-R图

系统E-R图如图2.8所示。

图2.8系统E-R图

2.2逻辑结构设计

1)C语言基础知识表

C语言基础知识表用于记录各个C语言基础知识点的信息,C语言基础知识表包括编号,名称,内容,C语言基础知识表的设计如表2.1所示。

 

表2.1C语言基础知识表

字段名

数据类型

长度

允许空

说明

编号

int

4

主键

名称

varchar

30

内容

varchar

1000

2)函数表

函数表用于记录各个函数的信息,函数表包括编号,函数名称,函数内容,函数表的设计如表2.2所示。

表2.2函数表

字段名

数据类型

长度

允许空

说明

编号

int

4

主键

函数名称

varchar

30

函数内容

varchar

1000

3)经典例题表

经典例题表主要记录经典例题的相关信息,包括例题号,内容,分析,答案等基本字段,表的设计如表2.3所示。

表2.3经典例题表

字段名

数据类型

长度

允许空

说明

题号

int

4

主键

内容

varchar

500

分析

varchar

300

答案

varchar

5

4)章节试题测试表

章节试题测试表表用于记录章节试题测的信息,主要包括编号,章节名称,题号,题目内容,题目答案等这些字段,表的设计如表2.4所示。

表2.4章节试题测试表

字段名

数据类型

长度

允许空

说明

编号

int

4

主键

章节名称

varchar

30

题目内容

varchar

1000

题目答案

varchar

10

5)二级试题表

二级试题表用于记录教职工学历的信息,主要包括编号,套数,题型,题目内容,答案等字段,表的设计如表2.5所示。

表2.5二级试题表

字段名

数据类型

长度

允许空

说明

编号

int

4

主键

套数

varchar

20

题型

varchar

20

题目内容

varchar

1000

答案

varchar

30

6)我的题库表

我的题库表表用于记录我的题库的信息,主要包括题编号,日期,内容,用户名,答案,注释等字段,表的设计如表2.6所示。

 

表2.6我的题库表

字段名

数据类型

长度

允许空

说明

用户编号

int

4

主键

题目编号

datatime

8

用户编号

varchar

1000

注释

varchar

200

日期

datatime

8

7)用户表

用户表用于记录用户的信息,主要包括编号,用户名,密码,权限,P_0,P_N等字段,表的设计如表2.7所示。

表2.7用户表

字段名

数据类型

长度

允许空

说明

编号

int

4

主键

用户名

varchar

20

密码

varchar

10

权限

varchar

15

P_0

bit

1

P_N

bit

1

 

第三章系统的详细设计和实现

该系统设计主要包括九大模块,分别为登录模块、主界面模块、系统管理模块、基础知识管理模块、经典例题模块、章节试题管理模块、二级模拟管理模块和我的题库管理模块、维护模块。

3.1数据库连接方案

3.1.1方案分析

SQLServer2000数据库连接方案就是通过驱动程序与数据库建立连接,对数据库进行访问。

SQLServer2000是C/S类型的数据库,客户端应用程序可以通过ADO技术,选择合适的驱动程序连接服务器端的数据库,能够使多客户连接同一数据库,从而实现数据共享。

客户端连接数据库的过程如图3.1所示。

3.1.2实施过程

在delphi中新新建一个工程,再在工程中新建一个数据模块DataModule,在DataModule中放置一个TADOConnection和其它数据库访问组件(如图3.2),其它数据库组件都引用模块中的TADOConnection组件作为数据源,这种方式保证一个工程中只建立了一个数据库连接,减少了对资源的占用。

图3.1ADO通过驱动程序连接数据库图3.2DataModule窗体

双击TADOConnection组件,打开ConnectionString属性对话框,进行数据库连接设置,如图3.3所示。

图3.3

TADOConnection组件连接

3.2登录模块的设计

本系统的登录模块采用的是用户级别登录,进入系统时,必须输入正确的用户名和密码才能进入,并且登录时按不同的权限进行登录,这各登录方式可以将用户的使用权分为不同的等级,以防止普通用户对程序的错误操作。

登录模块流程图如图3.4所示。

图3.4登录模块流程图

用户登录窗体设计界面含tlabel和tedit及tbutton,窗体的运行界面如图3.5所示。

图3.5用户登录窗体

登录窗体显示后,在窗体中输入用户名、密码和用户级别,单击确定按钮,在该按钮的OnClick事件中对用户名、密码和用户级别进行判断,如果与数据表中的某行记录相同,则进入主窗体;否则,清空用户名、密码和用户级别文本框,进行重新输入,当登录次数超过3次时,退出本系统。

为了美化界面,本模块中使用了一副登录图片。

3.3主界面模块设计

主界面承担整个应用程序导航的作用,是应用程序的导航界面,使用户更直观、更清晰地了解程序业务流程和操作流程。

主界面的设计在保证界面美观的同时还要注意主界面的易于操作性,使用户方便、快捷地通过主界面导航引擎进入业务界面。

主程序界面如图3.6所示。

图3.6主界面窗体

3.4基础知识管理模块设计

基础知识管理基础知识管理主要包含基础知识学习和函数学习两个部分。

实现的主要是浏览和查询功能。

3.4.1基础知识学习管理模块设计

基础知识学习管理的流程图如图3.7所示。

图3.7基础知识学习管理的流程图图3.8函数学习管理的查询流程图

在窗体设计中,基础知识学习管理使用了Treeview和数据感知控件DBmemo,用户在Treeview控件中单击想查看的C语言知识点后,通过DBmemo来显示知识点内容。

基础知识学习管理窗体如图3.9所示。

 

图3.9基础知识学习管理窗体

3.4.2函数学习管理模块设计

函数学习管理又分两个模块,分别是浏览和查询模块,浏览模块流程图如图3.7所示,查询流程图如图3.8所示。

函数学习管理使用了Combobox、DBmemo、Edit和button,函数学习管理除了浏览功能外,还有查询功能,在Edit中输入想查询的函数名称,单击确定按钮后,函数内容就显示在DBmemo中。

函数学习管理窗体如图3.10所示。

图3.10函数学习管理窗体

3.5经典例题管理模块设计

经典例题管理主要是对一些经典编程实例进行查看,经典例题管理的流程图如图3.11所示。

图3.11经典例题管理的流程图

 

图3.12经典例题管理窗体

经典例题管理主要用了button、DBedit、DBmemo和Groupbox等控件。

经典例题管理窗体如图3.12所示。

查看分析按钮代码如下:

ifbtnjie.Caption='查看分析'then

begin

btnjie.Caption:

='取消查看';

dbmemo2.DataField:

='题目分析';

end

else

begin

dbmemo2.DataField:

='';

btnjie.Caption:

='查看分析';

end;

通过以上代码可以自由切换查看状态。

3.6章节试题管理模块设计

用户在进行章节试题测试时,可以选择综合练习方式或者章节练习方式,在设计综合练习方式时,自定义了一个过程,用于生成互不相同的随机数,随机数存放在数组中。

在题目定位中,定义了一个位置指针,通过试题起始位置和位置位置指针便可以定位出题目编号。

作答情况通过StringGrid显示。

相关流程图如图3.13、3.14和3.15所示。

图3.13综合练习流程图图3.14章节练习流程图

图3.15加入题库流程图

章节试题管理窗体设计中,练习方式的选择用了Radiobutton,题目定位用了Button,作答情况的显示用了StringGrid,此外还使用了RadioGroup,Panel等控件。

章节试题管理窗体如图3.16所示。

图3.16章节试题管理窗体

相关代码:

◆随机数组生成代码

procedurecreatrandon;

varj,k,compare:

integer;

begin

j:

=1;

whilej

begin

Randomize;

compare:

=trunc(1+random(ti_counts));//ti_counts为题目总数

fork:

=1tojdo

begin

ifcompare=a[k]then

break;

end;

ifk=j+1then

begin

a[j]:

=compare;

j:

=j+1;

end;

end;

end;

//该过程用于生成在题目总数范围内的个数为设定数量的互不相同的随机数

◆插入题库代码

DataModule1.adoquery.Close;

DataModule1.adoquery.SQL.Clear;

DataModule1.adoquery.SQL.Add('select*from我的题库表');

DataModule1.adoquery.Open;

counts:

=DataModule1.adoquery.RecordCount+1;//我的题库中的题目数量

DataModule1.adoquery.Close;

DataModule1.adoquery.SQL.Add('insertinto我的题库表(题目编号,题目内容,题目答案,日期)values(:

a,:

b,:

c,:

d)');

DataModule1.adoquery.Parameters.ParamByName('a').Value:

=counts;

DataModule1.adoquery.Parameters.ParamByName('b').Value:

=DataModule1.ADOLian.fieldbyname('题目内容').AsString;

DataModule1.adoquery.Parameters.ParamByName('c').Value:

=DataModule1.ADOLian.fieldbyname('答案').AsString;

DataModule1.adoquery.Parameters.ParamByName('d').Value:

=datetimetostr(now());

showmessage('加入成功');

 

3.7二级模拟测试管理模块设计

二级模拟测试主要实现的功能有计时、作答情况显示、题目定位和题目显示。

流程图如图3.17所示。

图3.17二级模拟测试管理流程图

二级模拟测试管理窗体设计中,使用了Timer、Radiobutton、RadioGroup、Panel和StringGrid等控件。

窗体如图3.18所示。

图3.18二级模拟测试管理窗体

相关代码:

◆定时器的OnTimer事件代码

procedureTFormErce.Timer1Timer(Sender:

TObject);

varn,s:

integer;

min,sec:

string;

begin

iftimer1.Tag>0then

begin

s:

=timer1.Tag-1;

timer1.Tag:

=s;

n:

=sdiv60;

s:

=smod60;

ifn<10then

min:

='0'+inttostr(n)

else

min:

=inttostr(n);

ifs<10then

sec:

='0'+inttostr(s)

else

sec:

=inttostr(s);

label2.Caption:

='剩余时间:

'+min+':

'+sec

end

else

begin

timer1.Enabled:

=false;

showmessage('时间到,请交卷!

');

BtnJiao.OnClick(sender);

end;

end;

◆作答情况显示代码

if((point<=15)and(radiogroup1.Itemindex>=0)and(radiogroup1.Itemindex<=3))then

string1:

=radiogroup1.Items[radiogroup1.Itemindex]//1~15为选择题

elsestring1:

='';

if((point>15)and(point<=20))then//16~20为填空题

string1:

=edit1.Text;

string2:

=DataModule1.ADOQuery.Fields[4].AsString;

stringgrid1.Cells[1,point]:

=string1;//第二列显示用户所做答案

ifstring1

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1