C语言程序设计题库管理系统

合集下载

C语言试题库系统的开发与实现

C语言试题库系统的开发与实现

我 国现 阶段 高校 c 言课 程考 试 一般 是在任 课 教 师结 束一 学期 的教 学 之后 自行 命题 和 组织 阅卷 ,教师 命题 时要 花 费 语 大量 的 时 间去 搜集 考 试题 目, 要做 大 量 的重 复工 作 ,而 以往很 多 高质 量 的考 题 没有 保 存 下来 。同时 ,考试 结 束往 往 会 导致 每 年 高校 进行 考 试 的试 题 质量 、 难度 、 区分 度 、可 信 度 、 阅卷 的复 杂度 等 有所 差 异 ,缺 乏 一个 按 照教 学 要求 建 立 的统 一 的标 准C 言试 题 库系 统 。基于 此 ,本 文提 供 一个专 门的c 言试 题库 系 统 。本系 统提 供c 言试 题 库 的建 立 、试 语 语 语 卷生 成 、试 题 库 管理 和评 卷 系 统 的完 整解 决 方案 。利用 本 系 统可 以通过 一 些简 单 的操 作 和 设置 ,在 短 时 间 内生成 一 套 带评 卷 系 统 的考 试试 卷 。 该系 统在 很 大程 度 上减 轻 任课 教 师 的工 作 量 ,建 立一 种 灵活 性好 ,可 修 改 、可扩 展 的试 题 库
B sc . 比较合 适 。 a i6 O
图1
该 C 言 试 题 库 系 统 以v 语 言 为 基 础 , 以A c S 数 语 B ceS
3 2 二 级模 块 结构 . 1 )试 题 库 管 理 模块 。如 图2 示 ,该 模 块 由填 空题 所 库 、 选 择题 库 、编 程 填 空 题库 、编 程 改 错 题 库 、编 程 阅
图2
2 1年 6 下 第 1期 ( 第2 0 ) 01 月 8 总 4期
中国教 育技 术装备
技 术在 线
徐 华 c言 题 系 的 发 实 伟 :语 试 库 统 开 与 现

《C语言程序设计基础》考试系统的设计开发

《C语言程序设计基础》考试系统的设计开发
生 成试 卷 技 术是 计 算 机 辅 助 教 学的 重 要 研 究 方 向 。 本 文 重 点 介 绍 了针 对 《 C语 言 程 序 设 计 基 础 》 程 而 开 发 使 用 的 考 试 系 课 统 。 用 Vsa C+ +开 发 考 试 系统 的应 用界 面 。在 开发 过 程 中, 使 i l u 完成 了考 试 系统 的 实现 及 对 试 题 进 行 评 价 。 关键词 : C语 言 ; 试 系统 ; 计 考 设 中 图分 类 号 :P 1. T 311 文献标识码 : A 文章 编 号 :6 1 l 8 ( 0O 0 — O 5 —0 l7 一 5 0 2 1 ) 2 1 l 2
其 中的关 键字段 , 操作层 提 供相应 的数 据服 务 。 为
式 显示在 系统 界面 上 , 方便 使 用者 对系统 的操作 。
2 响应 使 用者 的操作 , . 显示 相应 的结果
2 提供 功能模 块 调用 的接 口 . 对 于 使 用者 的操 作 , 以 由操 作层 调 用 相应 的 可 功能模 块 , 命令 请求 通过 对应 接 口提交 给数据层 。 将 数 据层 处理 的结果 , 过对 应接 口发 送到 功能模块 , 通
1 51

个重要 内容 。在 考试 系统 的实 现过 程 中 , 据层 数
完 成操作 层 与 数 据层 的连 接 。使 用 日期 时 间类 ( C Tm 类 ) ie 进行定 时组 件 的使用 , 于控 制考试 时间 , 用


考试 系统结 构
3 控制 使用 者 的非法输 入 .
在开 发基 于《 C语 言 程 序 设 计 基 础 》 程 考 试 课 系统 的过 程 中 , 应用 分 层 结 构进 行 考 试 系 统体 系设 计 。系统分 层 的设 想是 考 虑 从 实 际 应用 出发 , 考 将 试 系统 中各 个应 用 模块 进 行 有 序 组 织 , 得各 个 模 使 块 的调用层 次 清 晰。 在考 试 系 统 的 设计 过 程 中, 按 照各 个应 用模块 的 功 能把 模 块 放 置 于两 层 实 现 , 即 操作 层与 数 据 层 。其 中 , 作 层 使 用 V sa C+ + 操 i l u

c语言管理系统设计源代码

c语言管理系统设计源代码

c语言管理系统设计源代码以下是一个简单的C语言管理系统示例,用于管理学生信息。

该系统可以添加、删除、修改和查找学生信息。

c复制代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct student {char name[50];int roll;float marks;};struct student students[100];int count = 0;void add_student() {struct student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter roll number: ");scanf("%d", &new_student.roll);printf("Enter marks: ");scanf("%f", &new_student.marks);students[count] = new_student;count++;}void delete_student() {int index;printf("Enter index of student to delete: ");scanf("%d", &index);for (int i = index; i < count - 1; i++) {students[i] = students[i + 1];}count--;}void modify_student() {int index;struct student new_student;printf("Enter index of student to modify: "); scanf("%d", &index);printf("Enter new name: ");scanf("%s", new_);printf("Enter new roll number: ");scanf("%d", &new_student.roll);printf("Enter new marks: ");scanf("%f", &new_student.marks);students[index] = new_student;}void find_student() {char name[50];printf("Enter name of student to find: "); scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) { printf("Roll number: %d\n", students[i].roll); printf("Marks: %.2f\n", students[i].marks); return;}}printf("Student not found.\n");}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Delete student\n");printf("3. Modify student\n");printf("4. Find student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case1: add_student(); break;case2: delete_student(); break;case3: modify_student(); break;case4: find_student(); break;case5: exit(0); break; // exit the program here, otherwise the loop will keep running indefinitely, as it is in the do-while loop above. We are not returning, but rather exiting the program completely, so we do not need to return anything. The return value of main is always 0, and this is how the program exits. If you want to return a value other than 0, you can do so like this: return 1; or return -1; or return any other integer value you want to represent an error condition. The operating system will interpret this as the program's exit status. In this case, it will be seen as successful, as it is returning 0. The return value of main is not used for anything in this program, but it can be used in other programs to determine whether the program exited successfully or with an error. For example, if you were writing a shell script that executed this program and needed to know if it was successful or not, you could check the return value of the program and act accordingly. This is a common practice in programming, and it is important to understand how it works so that you can use it effectively in your own programs.。

C程序设计题库(含答案)

C程序设计题库(含答案)
else if(x<10.0) y = 1.0/x;
else y = 1.0;
printf("%f\n",y);
}
A.0.000000B.0.250000C.0.500000D.1.000000
(3)下列程序的运行结果是( )
#include <stdio.h>
void main()
{
int a = 2, b = -1, c = 2;
答案:B
4、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)
A、6.500000 B、6 C、5.500000 D、6.000000
5、以下的选择中,正确的赋值语句是()。
A) a=1,b=2 B) j++ C) a=b=5; D) y=int(x)
A) 10<回车>B) 10.0,22.0,33.0<回车>
22<回车>
33<回车>
C) 10.0<回车> D) 10 22<回车>
22.0 33.0<回车> 33<回车>
答案:B
2.三大结构
(1)下列程序的运行结果是()
#include <stdio.h>
void main()
{
char c1 = '6', c2 = '0';
B.形参可以是常量,变量或表达式
C.实参可以为任意类型
D.如果形参和实参的类型不一致,以形参类型为准
9.C语言规定,函数返回值的类型是由( )决定的。
A. return语句中的表达式类型

C语言程序设计题库及答案

C语言程序设计题库及答案

第1次客观题作业一、单选题(共30题,每题3分)1 .下面表示正确的是__A___。

A.C语言中的逗号是一种运算符B.在C语言中,一行只能有一个语句C.C中的变量不区分大小写D.c中的关键字可以做为变量名2 .字符型常量在内存中存放的是__A____代码值。

A.ASCII B.二进制C.十进制D.八进制3 .以下不正确的C语言标识符是(C )。

A.AB1 B._ab3 C.4ab D.a2_b4 .以下运算符中优先级最低的运算符是_D____。

A.&& B.& C.|| D.=5 .在C语言中,要求运算数必须是整型的运算符是___A___。

A.% B./ C.< D.!6 . C语言程序的基本单位是__C_____。

A.程序行B.语句C.函数D.字符7 .将高级语言编写的程序翻译成目标程序的是___B____程序。

A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。

A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+19 .下列(A )不属于结构化程序设计的循环结构。

A.For B.While C.if-else D.do-while10 .以下叙述中错误的是__A___。

A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。

A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,712 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。

for (i=3;i>0;i--) for (j=0;j<=4;j++){...}A.12 B.15 C.16 D.2013 .下列选项中,合法的C语言关键字是_D___。

C语言程序设计综合实训题目

C语言程序设计综合实训题目

一、参考题目及选题(1)学生信息管理系统设计问题描述:学生信息包括:学号, 姓名, 年龄, 性别, 出生年月, 政治面貌, 籍贯, 家庭住址, 电话, E-mail等。

试设计一学生信息管理系统, 使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)(3)学生信息浏览功能(4)学生信息排序、查询功能对信息进行排序, 可以按学号, 按姓名, 按性别, 按出生年月日, 按籍贯进行查询(5)信息统计a) 可以按性别, 按出生年, 按籍贯统计学生人数b) 可以按班级统计学生人数c) 可以按政治面貌统计学生人数按班级统计学生党员人数, 团员人数, 以及所占比例, 设计并输出统计报表。

(6)学生信息的删除与修改●设计要求:●界面比较美观;有一定的容错能力, 比如输入的成绩不在0~100之间, 就提示不合法, 要求重新输入;●最好用链表的方式实现。

算法分析:首先, 一个学生包括这么多的属性, 应该考虑定义一个结构, 其次, 我们应该考虑数据的存储形式:是定义一个数组来存储, 还是定义一个链表呢?在这里假如我们以数组的方式来存储, 当然可以, 但是我们知道, 假如我们定义一个数组的话, 我们首先必须知道学生人数大概是多少, 以便我们确定数组的大小, 但是题目中没有给出, 而且题目要求中有大量的删除、插入操作, 所以用链表的方式比较方便。

对于菜单的实现, 其实也比较简单, 首先我们用printf语句把程序的功能列出来, 然后等待用户输入而执行不同的函数, 执行完了一个功能后又回到菜单。

文件的读写操作大家参照书中的有关文件的章节。

(2)、学生综合测评系统每个学生的信息为: 学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%, 20%。

c语言程序设计大作业学生信息管理系统

c语言程序设计大作业学生信息管理系统

一、概述随着信息技术的不断发展和应用,计算机程序设计作为重要的基础课程,对学生的综合能力有着重要的培养作用。

在C语言程序设计课程中,大作业是检验学生对知识的掌握和应用能力的重要环节。

学生信息管理系统作为一种常见的大作业题目,涉及到了文件操作、结构体、指针等多个知识点,对学生的理论知识掌握和实战能力都有一定的考验。

二、需求分析学生信息管理系统是一个管理学生基本信息的软件,具有录入、查找、删除、修改等功能。

在设计学生信息管理系统的时候,首先要明确系统的功能需求,并且考虑到系统的扩展性和健壮性。

1. 学生基本信息包括学号、尊称、性别、芳龄、专业等内容,系统应具备录入学生信息的功能,并且能够将信息保存在文件中,方便下次使用。

2. 用户可以通过查找功能根据学号或尊称查询学生信息,系统需要具备高效的查找算法。

3. 可以对学生信息进行删除和修改操作,需要保证操作的准确性和安全性。

4. 系统需要具备良好的用户界面,方便用户的操作和管理。

三、系统设计在进行学生信息管理系统的设计时,需要考虑到系统的模块化和扩展性,将整个系统划分为多个模块,进行单独设计和测试。

1. 学生信息录入模块:负责接收用户输入的学生信息,并将信息写入文件中。

2. 学生信息查找模块:通过学号或尊称进行查找操作,需要设计高效的查找算法。

3. 学生信息删除模块:实现对学生信息的删除功能。

4. 学生信息修改模块:实现对学生信息的修改功能。

5. 用户界面设计:设计友好的用户界面,方便用户的操作和管理。

四、系统实现在进行系统实现时,需要根据设计的模块进行逐一实现和测试,保证系统的稳定性和功能完整性。

1. 学生信息录入模块实现:接收用户输入的学生信息,并将信息写入文件。

2. 学生信息查找模块实现:设计高效的查找算法,并实现根据学号或尊称进行查找操作。

3. 学生信息删除模块实现:实现对学生信息的删除功能,并确保操作的准确性和安全性。

4. 学生信息修改模块实现:实现对学生信息的修改功能,保证信息的一致性。

教学题库管理系统

教学题库管理系统

教学题库管理系统摘要:考试题库管理系统在教学管理中起到重要的意义。

本文简明阐述了C语言题库管理系统的设计和建立。

系统运用C/S架构设计,主要分成四个功能模块:用户管理模块、试题管理模块、组卷管理模块和试卷管理模块。

在传统的考试出题时,由教师从庞大的题库中手工挑选试题,不仅难以保证试题的覆盖度和试卷的难易程度,而且耗费教师大量的精力,造成有限的教师资源浪费。

因此考试题库管理系统,有助于减轻教师工作负担、提高工作效率,并为试卷的规范性提供了保障,同时也为教学质量的评估提供了统一的标准。

关键词:题库管理系统C/S架构Access java1 研究背景与现状1.1 本设计的背景、意义在当今社会,建设教育公共服务体系、实现网络化、智能化的发展新模式是我国现代化教育业的发展新方向。

题库管理系统正是为教师方便、快速、高效的出版试卷而开发的。

计算机生成试卷的方式与传统的方式相比较,优势是显而易见的,首先避免了不必要的重复劳动,节约了人力资源及时间;其次使用科学的衡量、评价及统一试卷难易程度的有效手段;第三可以充分发挥计算机在信息处理方面的优势,可以让繁琐的工作由计算机处理,使之达到考试规范化,科学化,消除命题者主观意愿所带来的不利因素,更加客观,真实,全面地评估教学效果。

因而实现自动化的题库管理系统具有深远的意义和价值。

1.2 研究现状及设计目标本研究课题是为了更加客观、准确、高效地去评估、检测一个学生的知识和能力水平,题库管理系统其中主要包括:通过计算机管理题库信息;查询和检索出所需数据;有选择性的录入试题,并按一定的规律原则组织起来,将题库建设为优良试题的储存库,其知识覆盖面广、质量高、试卷可以快速的自动生成,并且能够灵活的进行组卷的功能。

这是网上固定试题考试所不具有的。

1.3 研究设计中要解决的关键问题及方法通过对本设计的深入研究,抽取试题的功能复杂。

需按照给定的要求,随机并且无重复的抽取出相应的试题。

设计中需主要解决两方面问题:(1)随机抽取试题时,不可避免的会出现重复数字;(2)在题库中符合要求的试题数量少于要求中要抽取出的试题数量。

(完整版)C语言试题库(完整版)

(完整版)C语言试题库(完整版)

C语言试题库一、单项选择第一章 C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。

B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。

C、本程序的MAIN函数开始,到本程序的最后一个函数结束。

D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。

(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。

B、 C程序的每行中只能写一条语句。

C、 C语言本身没有输入输出语句。

D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

(3) C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。

B、必须在系统调用的库函数的后面C、可以在任意位置。

D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、 C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、 if, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5) 若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”); else printf(“$ $ $\n”); }以上程序。

停车场管理系统C语言实现

停车场管理系统C语言实现

一.问题描述1.实验题目:设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出;汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列大门在最南端,最先到达的第一辆车停放在车场的最北端;若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候;一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用;试为停车场编制按上述要求进行管理的模拟程序;要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈入队,出栈或者出队;二.需求分析1.程序所能达到的基本可能:程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理;栈以顺序结构实现,队列以链表结构实现;同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车;输入数据按到达或离去的时刻有序;当输入数据包括数据项为汽车的“到达”‘A’表示信息,汽车标识牌照号以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”‘D’表示信息,汽车标识牌照号以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用便道上停留的时间不收费;当输入数据项为‘P’,0,0时,应输出停车场的车数;当输入数据项为‘W’, 0, 0时,应输出候车场车数;当输入数据项为‘E’, 0, 0,退出程序;若输入数据项不是以上所述,就输出"ERROR";2.输入输出形式及输入值范围:程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:”,提示用户输入车辆信息“到达”或者“离开”,车牌编号,到达或者离开的时间;若车辆信息为“到达”,车辆信息开始进栈模拟停车场,当栈满,会显示栈满信息:“The parking place is full”,同时车辆进队列模拟停车场旁便道,并显示该进入便道车辆的车牌编号,让用户知道该车的具体位置;若车辆信息为“离开”,会显示该车进入停车场的时间以及相应的停车费用,若该车较部分车早进停车场,这部分车需先退出停车场,暂时进入一个新栈为其让道,会显示进入新栈的车辆的车牌编号及其入停车场的时间,当待离开车离开停车场后,这部分车会重新进入停车场,同时便道上的第一辆车进入停车场;若输入‘P ’,0,0,会显示停车场的车数;若输入‘W ’,0,0,会显示便道上的车数;若输入‘E ’,0,0,程序会跳出循环,同时程序结束;若输入为其他字母,程序会显示“ERROR ”报错;若便道上没有车辆停靠,会显示便道为空的信息:用户每输入一组数据,程序就会根据相应输入给出输出;输入值第一个必须为字母,后两个为数字;3.测试数据要求:用户输入字母时,输入大写或小写,都可以被该程序识别,正常运行;但要求用户输入数据时,三个数据项之间必须用逗号相分隔开;三.概要设计为了实现上述功能,该程序以栈模拟停车场以及临时停放为给要离去的汽车让路而从停车场退出来的汽车的场地,以队列模拟车场外的便道,因此需要栈和队列这两个抽象数据类型;1.栈抽象数据类型定义:ADT SqStack{数据对象:D={char d c b a d c b a i i i i i i i i ∈∈∈∈int,int,int,|,,,, i=1,2,3....,n,n 0≥}数据关系:R={i i i d b a ,,|∈i i i d b a ,,D,∈i i i d b a ,,struct car};基本操作:Judge_Outputs,q,r ;列抽象数据类型定义:ADT LinkQueue{数据对象:D={∈i i i i a c b a |,,Qnode ,∈i b Qnode,int ∈i c ,i=1,2,3....,n,n 0≥};数据关系:R=φ;基本操作:Judge_Outputs,q,r;要算法流程图:I.Judge_Output算法流程图:II.A_cars算法流程图:III.D_cars算法流程图:4.本程序保护模块:主函数模块栈单元模块:实现栈的抽象数据类型队列单元模块:实现队列的抽象数据类型调用关系:四.详细设计1.相关头文件库的调用说明:include<>include<>define MAXSIZE 14define n 2define fee 102.元素类型、结点类型和结点指针类型:struct car{ char bb;int num;int time;};struct rangweicar{int num;int time;};typedef struct stackk{struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data;QNODE next;};3.栈类型和队列类型:typedef struct stack{struct car Gn;int top;}SqStack;typedef struct linkqueue{QNODE front,rear;int geshu;}LinkQueue;b=='E'||r.bb=='e'printf"STOP\n";else ifr.bb=='P'||r.bb=='p'printf"The number of parking cars is %d\n",s->top+1; else ifr.bb=='W'||r.bb=='w'printf"The number of waiting cars is %d\n",q->geshu; else ifr.bb=='A'||r.bb=='a'A_carss,q,r;else ifr.bb=='D'||r.bb=='d'D_carss,q,r;elseprintf"ERROR\n";}A_carsSqStack s,LinkQueue q,struct car a {QNODE t;ifs->top=n-1{s->top++;s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n";t=QNODE mallocsizeofQNODE;t->data=;t->next=NULL;q->rear->next=t;q->rear=t;printf"the number of the car in the access road is:%d\n",q->rear->data;q->geshu++;}}int D_carsSqStack s,LinkQueue q,struct car d{int i,j,l;float x,y;QNODE p;SqStackk k;if==s->Gs->top.num{x=s->Gs->top.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0{printf"The queue is empty\n";return 0;}else{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 1;}}else{fori=0;i<s->top;i++{ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y; k=SqStackk mallocsizeofSqStackk;k->topp=-1;forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n"; printf"%d,%d\n",k->Hl.num,k->Hl.time;}s->top--;whilek->topp>=0{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0{printf"The access road is empty\n";return 2;}else{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}4.主函数的伪码:main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack;s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE;p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++{printf"Please input the state,number and time of the car:\n";scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time;getchar;Judge_Outputs,q,&aai;ifaai.bb=='E'||aai.bb=='e' break;}}5.函数调用关系:五.测试分析:1.出现问题及解决办法:该程序是四个程序调试中最顺利的一个,只在一个地方上出了问题,就是输入字符时由于回车键也是字符,回车键总会被读入,导致经常输出“ERROR”;后来找到原因后在scanf函数后紧接着加了一个getchar;语句后就恢复了正常;2.方法优缺点分析:优点:用栈和队列来模拟停车场让整个问题显得简单,易于实现;缺点:栈和队列这两个数学模型用在停车场管理上还是有失妥当的,现实中停车场出口入口不可能为同一处,不可能当一辆车要离开,在它后面进来的车必须为它让路,因此无法用栈的“后进先出”原则来模拟;而且没有考虑便道上的车在等待过程中可以中途开走等情况,而这些都无法用队列的“先进先出”原则来模拟;3.主要算法的时间和空间复杂度分析:1由于算法Judge_Output函数根据判断条件,每次只选择一个程序段执行,所以其时间复杂度是O1;2由于算法A_cars函数根据判断条件,将数据入栈或入队列,所以其时间复杂度也是O1;3由于算法D_cars函数在出栈数据不在最顶端时需将n个数据先出该栈,再入新栈,再回旧栈的操作,故其时间复杂度是On;4所有算法的空间复杂度都是O1;六.使用说明程序运行后用户根据提示一次输入车辆的状态信息,车牌编号,时间,程序会根据车辆的状态信息调用相应的函数,并输出用户想得到的信息;七.调试结果输入数据:‘A’,1,5,‘A’,2,10,‘D’,1,15,‘A’,3, 20,‘A’,4,25,‘A’,5,30,‘D’,2,35,‘D’,4,40,‘P’,0,0,‘W’,0,0,‘F’,0,0,‘E’,0,0;输出数据:1号车停放时间为10小时,收费100元;2号车停放时间为25小时,收费250元;4号车停放5小时,收费50元;此时停车场有两辆车,便道上无车;若停车场已满,则会显示停车场已满的信息;若便道上无车等待停车,会显示便道上无车的信息;若中途有车离开,需其后的车让道,会显示进入临时停车场的车辆的信息;若输入‘F’,0,0,输出“ERROR”;若输入‘E’,0,0,程序结束;运行结果截屏:八.附录源程序文件清单:include<> /调用的头文件库声明/include<>define MAXSIZE 14define n 2define fee 10struct car /用该结构体来存放车的状态,编号和时间信息/ { char bb;int num;int time;};typedef struct stack /用该栈来模拟停车场/{struct car Gn;int top;}SqStack;struct rangweicar /用该结构体来存放临时让出的车辆的编号以及时间信息/ {int num;int time;};typedef struct stack /用该栈来模拟临时让出的车辆的停靠场地/ {struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data; /链队结点的类型/QNODE next;};typedef struct linkqueue /用该链队来模拟便道/{QNODE front,rear;int geshu;}LinkQueue;void Judge_OutputSqStack s,LinkQueue q,struct car r /该算法通过传递来的车辆信息调{ 用相关函数实现操作/ ifr.bb=='E'||r.bb=='e' /若车辆状态为‘E’,终止程序/printf"STOP\n";else ifr.bb=='P'||r.bb=='p' /若车辆状态为‘P’,输出停车场车辆数/ printf"The number of parking cars is %d\n",s->top+1;else ifr.bb=='W'||r.bb=='w' /若车辆状态为‘W’,输出便道车辆数/ printf"The number of waiting cars is %d\n",q->geshu;else ifr.bb=='A'||r.bb=='a' /若车辆状态为‘A’,调用A_cars函数/A_carss,q,r;else ifr.bb=='D'||r.bb=='d' /若车辆状态为‘D’,调用D_cars函数/D_carss,q,r;elseprintf"ERROR\n"; /若车辆状态为其他字母,报错/}A_carsSqStack s,LinkQueue q,struct car a /该算法实现对车辆状态为到达的车辆的操{QNODE t; 作/ifs->top=n-1 /若停车场还没有满,则车进停车场,并存入车辆的状态,车牌编{s->top++; 号和到达时间信息/s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n"; /若停车场已满,车进便道,并显示该车的车牌编t=QNODE mallocsizeofQNODE; 号,同时记录便道车辆数目/t->data=;t->next=NULL;q->rear->next=t;q->rear=t;printf"the number of the car in the access road is:%d\n",q->rear->data;q->geshu++;}}int D_carsSqStack s,LinkQueue q,struct car d /该算法实现车辆状态为离开的车{int i,j,l; 辆的操作/float x,y;QNODE p;SqStackk k;if==s->Gs->top.num /若待离开车为最后进停车场的车的情况/{x=s->Gs->top.time;y=feex; /直接计算停车时间,费用并离去/printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0 /若便道上无车,函数返回/{printf"The queue is empty\n";return 0;}Else /若便道上有车,第一辆车进停车场/{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data; /并存入其车牌编号及进停车场的时间/s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front; /若此时便道上无车,返回1/return 1;}}Else /待离开的车不是最后进停车场的那辆车的情况/ {fori=0;i<s->top;i++ /先找到待离开车在停车场中的位置/ {ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time; /计算待离开车的停车时间并计算费用/y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;k=SqStackk mallocsizeofSqStackk; /设立一个新栈临时停放为该车离开而让k->topp=-1; 路的车辆/forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n";printf"%d,%d\n",k->Hl.num,k->Hl.time;} /显示在新栈中的车辆信息/ s->top--;whilek->topp>=0 /将新栈中的车重新开入停车场中/{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0 /若便道上无车,则返回2,无车开入停车场中/ {printf"The access road is empty\n";return 2;}Else /若便道上有车,则第一辆车开入停车场中/{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack; /对停车场初始化/s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE; /对便道初始化/p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++ /输入车辆信息/ {printf"Please input the state,number and time of the car:\n"; scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time; getchar;Judge_Outputs,q,&aai;ifaai.bb=='E' break;}}。

C语言程序设计题库

C语言程序设计题库

一、选择题(每题1分,共20分)1.C语言程序从main()函数开始执行,所以这个函数要写在(D)。

A.程序文件的开始B.程序文件的最后C.它所调用的函数的前面D.程序文件的任何位置2.下列方法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体。

B.主函数可以调用任何非主函数的其它函数。

C.任何非主函数可以调用其它任何非主函数。

D.程序可以从任何非主函数开始执行。

3.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.intt4.C语言中的简单数据类型包括(D)。

A.整型、实型、逻辑型B.整型、实型、逻辑型、字符型C.整型、字符型、逻辑型D.整型、实型、字符型5.6.7.8.9.B.#defineP(a,b)=strcpy(a,b)C.#definestdio.hD.#definePI3.1415910.为表示逻辑表达式79<X<90,应使用的CA.(X>79)&&(X<90)B.(X>79)!=(X<90)C.79<X<90D.(X>79)||(X<90)11.设有语句“inta=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是(A)。

A.1B.0C.-1D.出错12.字符串“ABCD”在内存占用的字节数是(D)。

A.4B.6C.1D.513.若有“inta=1,x=1;”,则循环语句“while(a<10)x++;a++;”的循环执行(A)。

A.无限次B.不确定次C.10次D.9次14.有以下程序段intk=0while(k)k++;则while循环体执行的次数是(C)。

A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次15.已知:inta[10];则对a数组元素的正确引用是(D)。

C语言全部考试系统题库含答案(2021年整理精品文档)

C语言全部考试系统题库含答案(2021年整理精品文档)

C语言全部考试系统题库含答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(C语言全部考试系统题库含答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为C语言全部考试系统题库含答案的全部内容。

目录目录 (1)单元练习题一 C语言基础知识 (5)一、判断题 (5)二、单项选择题 (6)三、读程序选择题 (12)四、程序填空题 (13)五、编程题............................... 错误!未定义书签。

单元练习题二 C语言程序结构 .. (14)一、判断题 (14)二、单项选择题 (15)三、读程序选择题....................... 错误!未定义书签。

四、程序填空题 (27)五、编程题............................. 错误!未定义书签。

单元练习题三数组 (34)一、判断题 (34)二、单项选择题 (35)三、读程序选择题......................... 错误!未定义书签。

四、程序填空题 (43)五、编程题............................... 错误!未定义书签。

单元练习题四函数 (50)一、判断题 (50)三、读程序选择题 (62)四、程序填空题........................... 错误!未定义书签。

五、编程题............................... 错误!未定义书签。

单元练习题五预处理......................... 错误!未定义书签。

一、判断题............................. 错误!未定义书签。

《C语言程序设计》试题库管理及试卷生成系统的开发

《C语言程序设计》试题库管理及试卷生成系统的开发

《C语言程序设计》试题库管理及试卷生成系统的开发
肖启莉
【期刊名称】《浙江万里学院学报》
【年(卷),期】2002(015)004
【摘要】文章主要介绍<C语言程序设计>试题库管理及试卷生成系统的开发.通过该系统的研制,可以方便、有效地对众多的C语言试题进行管理,并能利用已有的试题库快速地生成满足用户要求的试卷.
【总页数】3页(P38-40)
【作者】肖启莉
【作者单位】浙江万里学院计算机系,宁波,315101
【正文语种】中文
【中图分类】TP311.1;G642.474
【相关文献】
1.基于.NET的题库管理与试卷生成系统的设计与开发 [J], 邱云明;许镕涛;封玲
2.题库管理与试卷生成系统的开发应用 [J], 傅冬绵
3.高等院校试题库建立及试卷自动生成系统的开发及意义 [J], 宋海沂;张乾清
4.中专通用文图试题库管理及试卷辅助生成系统简介 [J], 刘瑞新
5.医学试题库管理及试卷自动生成系统 [J], 文治洪;王子军;王臻;王岭;薛原;王兵因版权原因,仅展示原文概要,查看原文内容请购买。

C语言程序设计期末考试题库

C语言程序设计期末考试题库

C语言程序设计期末考试题库C语言程序设计期末考试题库一、单项选择题1.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( )A.连接、编译B. 连接、运行C. 编译、运行D. 编译、连接2.下列说法正确的是()A.一个c语言程序并非总是从主函数位置开始执行的B.一个c语言程序有且只有一个主函数C.函数可以嵌套定义,不可以嵌套调用D.程序函数的位置不可以任意3.下面是合法C语言标识符的是()A. 2A_K;B. _M+N;C. –M3;D. AC_2;4.下列格式符中,可以用于控制字符输出的是( )A. %dB. %fC. %oD. %c5.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( )A. 4;B. 16;C. 30;6.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( )A. 10,5B. 15,6C. 15,5D. 10,67.若有定义int x,*p;,则以下正确的赋值表达式是( )A. p=x;B. p=&x;C. *p=&xD. *p=*x;8.以下对结构体类型变量的定义中,不正确的是( )A. typedef struct aaB. #define AA struct aa{ int n; AA { int n;float m; float m;}AA; }stud;AA stud;C. structD. struct{ int n; { int n;float m; float m;}aa; }stud;struct aa stud;9.有如下函数调用语句:func(rec1,rec2+rec3,(rec4+rec5));函数调用语句中,含有的实参个数是( )A. 3B. 4D. 以上均不是10.对于以下宏定义:#define SQ(x) x*x#define QQ(x,y) SQ(x)- SQ(y)宏调用QQ(2*3,2+3)执行后值为( )A.25B.11C.43D.以上均不是11.完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( )A.连接、编译B. 连接、运行C. 编译、运行D. 编译、连接12.下列说法正确的是()A.一个c语言程序并非总是从主函数位置开始执行的B.一个c语言程序有且只有一个主函数C.函数可以嵌套定义,不可以嵌套调用D.程序函数的位置不可以任意13.下面是合法C语言标识符的是()A. 2A_K;B. _M+N;C. –M3;D. AC_2;14.下列格式符中,可以用于控制字符输出的是( )A. %dB. %fC. %o15.设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是( )A. 4;B. 16;C. 30;D. 50;16.执行语句“for(i=1,s=0;i<=5;i++) s+=i;”后,变量s、i的当前值是( )A. 10,5B. 15,6C. 15,5D. 10,617.若有定义int x,*p;,则以下正确的赋值表达式是( )A. p=x;B. p=&x;C. *p=&xD. *p=*x;18.以下对结构体类型变量的定义中,不正确的是( )A. typedef struct aaB. #define AA struct aa{ int n; AA { int n;float m; float m;}AA; }stud;AA stud;C. structD. struct{ int n; { int n;float m; float m;}aa; }stud;struct aa stud;19.有如下函数调用语句:func(rec1,rec2+rec3,(rec4+rec5));函数调用语句中,含有的实参个数是( )A. 3B. 4C. 5D. 以上均不是20.对于以下宏定义:#define SQ(x) x*x#define QQ(x,y) SQ(x)- SQ(y)宏调用QQ(2*3,2+3)执行后值为( )A.25B.11C.43D.以上均不是21.有如下程序的输出结果是()main( ){int y=3,x=3,z=1;Printf(“%d %d\n”,(++x,y++),z+2);}A 3 4B 4 2C 4 3D 3 322.下列说法不正确的是()A 主函数main中定义的变量在整个文件或程序中有效B 不同函数中,可以使用相同名字的变量C 形式参数是局部变量D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效. 23.算术表达式 x+a%3*(int)(x+y)%2/4的值为()。

C语言程序设计试题题库

C语言程序设计试题题库

第一章基础知识一.填空1.每个C程序都必须有且仅有一个________ 函数。

2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。

3.软件是程序,以及______、使用和维护所需要的所有文档。

4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。

5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。

6.C语言是由________组成的。

7. C语言的函数可分为主函数main、标准库函数和_________。

8.一个函数是由两部分组成的,即:________和函数体。

9..编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。

10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。

不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。

11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。

12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。

13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。

14. C程序的执行均是由执行_________开始。

15.函数体即为包含在{}内的部分。

它分为________和为完成功能任务由若干个C语句组成的执行部分。

16.C语言程序中一条简单语句是以________字符作为结束符的。

17.C语言是结构化、________的程序设计语言。

c语言课程设计考场信息管理系统模板

c语言课程设计考场信息管理系统模板

c语言课程设计考场信息管理系统模板一、引言信息管理系统是现代社会中重要的组成部分,它能够帮助人们更加高效地管理各种信息。

在教育领域,考场信息管理系统也是必不可少的工具。

本文将介绍一个基于C语言的考场信息管理系统的设计与实现。

二、需求分析1. 系统功能需求:(1)学生信息管理:包括学生姓名、学号、班级等基本信息。

(2)考试安排管理:包括考试科目、时间、地点等信息。

(3)成绩查询:学生可以通过系统查询自己的成绩。

2. 系统性能需求:(1)稳定性:系统需要保证稳定运行,避免出现崩溃等情况。

(2)安全性:系统需要对用户输入进行严格检查,避免恶意操作。

(3)易用性:系统需要简单易用,方便用户操作。

三、总体设计1. 系统结构设计:(1)前端界面设计:采用命令行交互方式,通过菜单选择实现各项功能。

(2)后端数据存储设计:使用文件存储学生和考试信息,并通过读写文件来实现数据的增删改查等操作。

2. 系统模块设计:(1)学生信息模块:包括学生信息的录入、查询、修改和删除等操作。

(2)考试安排模块:包括考试信息的录入、查询、修改和删除等操作。

(3)成绩查询模块:学生可以通过输入学号来查询自己的成绩。

四、详细设计1. 学生信息模块:(1)录入学生信息:用户输入学生姓名、学号、班级等信息,系统将其写入文件中保存。

(2)查询学生信息:用户输入学号,系统从文件中读取相应的学生信息并输出。

(3)修改学生信息:用户输入需要修改的学号,系统先查询该学号是否存在,若存在则允许用户修改相应的信息。

(4)删除学生信息:用户输入需要删除的学号,系统先查询该学号是否存在,若存在则将其从文件中删除。

2. 考试安排模块:(1)录入考试安排:用户输入考试科目、时间、地点等信息,系统将其写入文件中保存。

(2)查询考试安排:用户输入科目名称或时间段,系统从文件中读取相应的考试安排并输出。

(3)修改考试安排:用户输入需要修改的科目名称或时间段,系统先查询该科目或时间段是否存在,若存在则允许用户修改相应的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计基础课程设计报告班级:计算机科学及技术1103班姓名:杨广宇指导教师: 胡宏涛完成日期:2012年9月6日(题目)1.设计题目及要求(简要介绍课程设计题目内容及要求。

)1设计内容要求输入试题(仅限选择题和填空题)基本信息,实现试题浏览.,查询,修改功能,并将数据保存至文本文件。

2要求功能完善,界面友好。

2.算法设计及描述(要求有相关流程图)2.1 算法设计及描述(描述算法设计、实现过程。

)1.提供可操作的主菜单:输出主菜单,用户可根据菜单来选择操作。

根据客户输入的选项来运行不同的功能,运行不同的函数。

2.。

试题信息的录入函数:按照提示输入题的题号,题目内容,并提示用户是否继续录入,每输入一个记录,全局变量n 就自增,最后最为函数的返回值返回。

3.保存试题信息函数:将文件的所有数据通过fprintf来写入指定文本文档,完成后关闭文件,没有返回值4. 载入试题信息函数:通过fopen函数打开指定文件,通过fscanf来读取文件里的数据,最后返回记录数,避免了每次打开时都要输入数据的麻烦。

5. 查询记录函数:细分为按题号,题目两种方式来进行查询记录,并能对查询记录不存在进行提示。

遍历所有结构体找出符合的输出。

6.修改记录函数:首先判断用户要修改的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的,按照提示依次进行修改项目,返回记录值不变(没增加也没减少)。

7. 删除记录函数:首先判断用户要删除的试题序号是否存在,进行相应的系统提示,然后遍历所有记录找出符合的删除,冰讲后面的所有数据向前移动一个位置,记录数减一并返回。

2.2 主要流程图(用N—S图描述。

)1,、输入函数2、保存函数3、载入函数4、查询函数5、修改函数6、删除函数3.设计软硬件环境硬件设备系统:Microsoft Windows XP Professional 版本2002机型:Inter ® Core™2 Duo CPU E8400 @ 3.00GHz 2.99GHz, 2.00 GB内存软件设备Microsoft Visual C++ 6.0应用程序调试4.源程序代码清单#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char tihao[10]; //题号char timu[15]; //题目}Data;Data da[80];int menu_select(){char c;do{system("cls");printf("\t\t\t ========题库管理系统======== \n");printf("\t\t\t ┌───────────┐\n");printf("\t\t\t │1. 题目的输入│\n");printf("\t\t\t │2. 题目的浏览│\n");printf("\t\t\t │ 3. 题目信息更改│\n"); //包括删除,插入和更改printf("\t\t\t │4. 题目信息查询│\n");printf("\t\t\t │ 5. 题目文件操作│\n"); //包括保存,读取和复制printf("\t\t\t │0. 退出管理系统│\n");printf("\t\t\t └───────────┘\n");printf("\t\t\t ============================ \n");printf("\n\t\t请您选择(0-5):");c=getchar();}while(c<'0'||c>'5');return(c-'0');}void tihaosort(Data dat[],int n) //题号排序{int i,j;Data temp;for(i=0;i<n;++i)da[i]=dat[i];for(i=0;i<n-1;++i)for(j=i+1;j<n;++j)if(strcmp(da[i].tihao,da[j].tihao)>0){temp=da[i];da[i]=da[j];da[j]=temp;}printf("\t\t========排序成功========\n");}void SaveText(Data dat[],int n) //保存函数{int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("txl.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("\t不能打开文件\n"); /*没打开*/exit(1); /*退出*/}fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n");for(i=0;i<n;i++){fprintf(fp,"%-8s%-6s",dat[i].tihao,dat[i].timu);fprintf(fp,"\r\n"); /*将换行符号写入文件*/}fclose(fp);}int LoadText(Data dat[]) //载入函数{int i,n;FILE *fp;if((fp=fopen("txl.txt","r"))==NULL){printf("不能打开文件\n");exit(1);}fscanf(fp,"%d",&n);/*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%s%s\n",dat[i].tihao,dat[i].timu); /*按格式读入记录*/fclose(fp);return n;/*返回记录数*/}int Charu(Data dat[],int n) //插入函数{Data temp;/*新插入记录信息*/int i=0,j,k;char s[20];do{printf("\t请插入您的数据\n");printf("\t题号:");scanf("\t%s",temp.tihao);for(k=0;k<n;k++) //判断插入数据是否存在{if(strcmp(dat[k].tihao,temp.tihao)==0){printf("\t-------该记录已存在,请重新输入!-------\n");system("pause");system("cls");break;}}}while(strcmp(dat[k].tihao,temp.tihao)==0);printf("\t题目:");scanf("\t%s",temp.timu);printf("\t请输入插入位置的题号:");scanf("\t%s",s); /*输入插入位置的题号*/while(strcmp(dat[i].tihao,s)!=0&&i<n) i++;if(i==n){printf("\t------------题库中没有记录,请查询后再操作!-------------\n");return n;}for(i=0;strcmp(dat[i].tihao,s)!=0;i++) ;printf("\n\t\t***********插入成功!************\n");for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/{strcpy(dat[j+1].tihao,dat[j].tihao); /*当前记录的题号拷贝到后一条*/strcpy(dat[j+1].timu,dat[j].timu);}strcpy(dat[i].tihao,temp.tihao); /*将新插入记录的题号拷贝到第i个位置*/strcpy(dat[i].timu,temp.timu);n++; /*记录数加1*/ return n;}int Shuru(Data dat[],int n) //输入函数{int i=0;char ch;while(ch!='n'&&ch!='N') //用来判断是否继续输入{system("cls");printf("\t题号:");scanf("\t%s",dat[n+i].tihao);printf("\t题目:");scanf("\t%s",dat[n+i].timu);printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&ch);i++;}return (n+i); //其实输入除了N 和n的任意键均能实现继续添加的功能}void List(Data dat[],int n) //显示函数{int i;printf("========================共%d条记录============================\n",n);printf("┌─────────────────────────────┐\n"); /*格式*/ printf("│题号│题目│\n");printf("└─────────────────────────────┘\n");for(i=0;i<n;i++){printf("%2s\t%3s\n",dat[i].tihao,dat[i].timu);/*按格式输出*/printf("───────────────────────────────\n");}system("pause");}int Shanchu(Data dat[],int n) //删除函数{char s[20]; /*要删除记录的题号*/int i=0,j;printf("\t请输入想删除记录中的题号:");scanf("%s",s);while(strcmp(dat[i].tihao,s)!=0&&i<n) i++; /*查找要删除的记录题号*/if(i==n){printf("\t题库中没有此题!\n");return(n);}for(j=i;j<n-1;j++) //数据交换{strcpy(dat[j].timu,dat[j+1].timu);strcpy(dat[j].tihao,dat[j+1].tihao);}printf("\t\t\t已经成功删除!\n");return(n-1);}void Chazhao(Data dat[],int n) //查询函数{int j;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------题号│\n");printf("\t│0------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&j);if(j==1){char s[20];int i=0;printf("\t请输入想查询的题号:");scanf("\t%s",s);while(strcmp(dat[i].tihao,s)!=0&&i<n) i++;if(i==n){printf("\t题库中没有此题!\n");return;}printf("\t此题内容\n");printf("\t%5s\n",dat[i].timu);} ;}void Biangeng(Data dat[],int n) //修改函数{char s[20];int i=0;printf("\t请输入想修改的试题的题号:");scanf("%s",s);while(strcmp(dat[i].tihao,s)!=0&&i<n) i++;if(i==n){printf("\t题库中没有此题!\n");return;}printf("\t题号:");scanf("\t%s",dat[i].tihao);printf("\t题目:");scanf("\t%s",dat[i].timu);printf("\n\t修改成功!");}void CopyText() //复制文件函数{char out]; /*目标文件名*/int i,n;Data temp[80];FILE *fp,*fc;if((fp=fopen("txl.txt","rb"))==NULL) /*打开记录文件*/{printf("\t\t不能打开文件\n"); /*显示不能打开文件信息*/exit(1); /*退出*/ }printf("\t\t输入目标文件名(例如c:\\out):");scanf("%s",outfile);if((fc=fopen(outfile,"wb"))==NULL) /*打开目标文件*/{printf("\t\t不能打开文件\n"); /*显示不能打开文件信息*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读出文件记录数*/fprintf(fc,"%d",n); /*写入目标文件数*/fprintf(fc,"\r\n"); /*写入换行符*/for(i=0;i<n;i++){fscanf(fp,"%s%s\n",temp[i].tihao,temp[i].timu);fprintf(fc,"%-8s%-6s",temp[i].tihao,temp[i].timu);fprintf(fc,"\r\n"); /*写入换行符*/ }fclose(fp); /*关闭源文件*/fclose(fc); /*关闭目标文件*/printf("\t\t您已成功复制文件!\n");}/* 主函数*/void main(){int n=0;for(;;){switch(menu_select()){case 1:system("cls");n=Shuru(da,n);break;case 2:system("cls");int k;printf("\t\t\t ======题库信息管理系统====== \n");printf("\t\t\t ┌──────────┐\n");printf("\t\t\t │1.显示全部题目│\n");printf("\t\t\t │2.按题号排序信息│\n");printf("\t\t\t │0.返回上一级菜单│\n");printf("\t\t\t └──────────┘\n");printf("\t\t\t ============================ \n");printf("\n\t\t请选择:");scanf("%d",&k);switch(k){case 1: //显示信息system("cls");List(da,n);break;case 2: //题号排序tihaosort(da,n);system("pause");break;case 0:;} break;case 3:system("cls");int m;printf("\t\t\t =====题库信息管理系统===== \n"); printf("\t\t\t ┌──────────┐\n");printf("\t\t\t │1.题库信息的修改│\n");printf("\t\t\t │2.题库信息的删除│\n");printf("\t\t\t │3.题库信息的插入│\n");printf("\t\t\t │0.返回│\n");printf("\t\t\t └──────────┘\n");printf("\t\t\t ========================== \n"); printf("\n\t\t请选择:");scanf("%d",&m);switch(m){case 1:system("cls");Biangeng(da,n);printf("\t");system("pause");break;case 2:system("cls");n=Shanchu(da,n); /*删除记录*/printf("\t");system("pause");break;case 3:system("cls");n=Charu(da,n); //插入函数printf("\t");system("pause");break;case 0:;} break;case 4:system("cls");printf("\n\t*****在题库中查找记录******\n"); Chazhao(da,n);printf("\t");system("pause");break;case 5:system("cls");int x;printf("\t\t\t =====题库信息管理系统===== \n"); printf("\t\t\t ┌──────────┐\n"); printf("\t\t\t │1.题库信息的载入│\n");printf("\t\t\t │2.题库信息的保存│\n");printf("\t\t\t │3.题库信息的复制│\n");printf("\t\t\t │0.返回│\n");printf("\t\t\t └──────────┘\n");printf("\t\t\t ========================== \n"); printf("\n\t\t请选择:");scanf("%d",&x);switch(x){case 1:n=LoadText(da);printf("\t\t您已经成功的将题目导入到题库!\n");printf("\t");system("pause");break;case 2:printf("\t\t=========题库的保存=========\n");SaveText(da,n);printf("\n\t\t保存成功\n");printf("\t");system("pause");break;case 3:CopyText(); /*保存数据*/printf("\t");system("pause");break;case 0:;}break;case 0:printf("\n\t\t\t感谢您的使用,再见!\n");exit(0);}}}5.程序运行结果(可截屏程序运行界面。

相关文档
最新文档