C语言实验报告(通用)

article/2025/3/18 17:46:56

​​​​​​

 

 

 

设计目的

公交线路基本信息的录入。1、线路信息的录入、修改等操作。2、要求系统要以菜单方式进行工作。3、公交线路包括:公交车号、起始发出车时间与末班车时间、票价等信息。

1.2 对知识点的基本介绍或者代码举例

正文,中文:宋体,小四号,不加粗,首行缩进2字符,英文:Times New Roman, 小四号,不加粗,段前段后0行,下同

正文格式对话框

  1. 读取信息时应先保证有该文件,因此必须要先用fopen(  “.txt”,w)将其创建

fopen:文件打开函数>>>fopen(“文件名”,“打开函数的方式”)

fread:文件读取函数>>>fopen(“文件名”,“打开函数的方式”){只能读取二进制}

fscanf:文件读取函数>>>fscanf(存文件地址的文件指针,“%+读取数据的类型”,变量){二进制和为文本都可以读取}

文件打开方式

w:write>>只写,(如果文件存在就打开,如果文件不存在,w方式会自动帮你在源文件的路径下自动创建!);

r:read   只读(前提是文件必须先存在!!!);

a:添加数据到文件;

r+:可读/写数据,该文件必须先存在,否则打开失败
w+:可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
a+:可读/写数据,原来的文件不被删去,位置指针移到文件末尾

  1. 写程序功能时应将功能写成自定义函数并且保存成.c 文件,功能函数所需要的头文件全部加在.h;里面,然后在.c里面引入“.h这个头文件”。

如:

t.c

#include <stdio.h>

#include <stdlib.h>

#include"a.h"

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()

{

tn();

return 0;

}an.c

#include"a.h"

void an()

{

printf("calling the function in a.c\n");

}

m.h

#ifndef H_AN

#define H_AN

#include <stdio.h>

#include <stdlib.h>

void an();

#endif

  1. 结构体的写法:

struct 结构体名

{定义所需数组或变量,如:

char a[10];

int b;

double c;

};

定义结构体变量:struct 结构体名 结构体变量名;

如果需要存入多条信息就将结构体变量写成数组,只需要一个就写成普通变量;

如:struct 结构体名字 A[10];

struct 结构体名字 b;

  1. 字符串对比是否相同的函数:

strcmp(字符型数组a,字符型数组b)==0>>相同

                                  ==1>>前面的字符串对应的ask码大于后面字符串对应的ask码

                                  ==-1>>前面的字符串对应的ask码大于后面字符串对应的ask 码

  1. 字符串的赋值函数

strcpy(字符型数组a,字符型数组b)>>将b赋值给a;

                                                               

2.系统功能描述

该系统的描述,可以把选题表内容放在此处。

绘制一个功能模块图

每一个模块进行描述

2.1对现有系统的分析 

二级标题,黑体,小四号,加粗,左对齐,段前段后0.25行,1.5倍行距

现有系统的状态是。

该系统具有以下功能:

  1. 公交信息录入功能;
  2. 增加车次信息;
  3. 公交线路信息浏览;
  4. 公交线路查询信息;
  5. 修改和删除公交线路信息;
  6. 公交线路信息;
  7. 公交信息读取;

2.1.1 描述 1

三级标题,宋体,小四号,加粗,首行缩进2字符,段前段后0行,1.5倍行距

在现有市场中……

该系统在现有市场中比较广泛,但与之对应的市场需求量也比较大;

从城市居民角度来讲,有了这套公交系统之后,如果有居民想查询票价,发车时间,末班车时间,公交卡号等都将变得容易许多,因此,深受广大居民青睐;

从公共交通运营企业角度来讲,行车调度与线网规划不科学、设备维护压力大、场站人流密集安全保障难度高、以及企业自我造血能力差,极大依靠财政补贴是公共交通行业玩家的主要经营痛点。公共交通的智能+本质上是服务智能+,其目的提升公共交通服务体验,引导城市公众使用公共交通工具,减缓小汽车的大量使用对城市有限道路资源造成的压力。这减少了政府不小的压力,更改善了环境;这也使得政府也会大力支持这种系统;

2.1.2 描述2

技术上 算法设计
1、设计思想
本系统的设计流程简单比较简单,原始数据全部都保存在文件中,用户就不必自己一个一个的输入信息。程序执行时从文件中读出。创建结构体数组对路线信息进行存储,因为使用结构体变量对数据的读取、删除和保存会比较方便。写无返回值的自定义函数 void 函数名()对系统的功能进行由于划分让主函数更加简洁,方便自己检查,同时也方便合作者阅读。其中利用 switch 条件分支语句进行子函数功能的选择和调用。并且使用for循环和goto语句进行多次循环执行,就可以实现对信息的多次增加,知道达到用户满意时由用户自己选择退出系统。通同时使用了清屏函数,对上一次程序运行的结果清楚只显示本次运行的相关信息,这样的话就做o到了界面的友好化,简单明了不冗杂,更方便观看。

2、

3.总体设计

3.1 功能模块设计

3.1.1 主控main()函数执行流程

1、先调用读取函数;将用户的信息和公交信息录入结构体数组变量中;

2、直接进入登录函数

3.1.2 图形化界面模块

每次进入菜单页面都会呈现出阿拉伯数字代替的每个功能,每次进入功能页面也会出现阿拉伯数字代替的用户选择。如:

主菜单页面:system("cls");//clears,清屏

printf("\t\t\t********************************************\n");

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***       6  学生信息系统排序功能        ***\n");

printf("\t\t\t***       7  学生信息系统统计功能        ***\n");

printf("\t\t\t***       8  学生信息系统保存功能        ***\n");

printf("\t\t\t***       9  学生信息系统读取功能        ***\n");

printf("\t\t\t***      10  学生信息系统退出功能        ***\n");

printf("\t\t\t********************************************\n");

功能页面: system("cls");//clears,清屏

printf("\t\t\t********************************************\n");

printf("\t\t\t***       欢迎来到学生信息录入功能       ***\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t***  1 确定输入              2 放弃输入  ***\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t请你输入你的选择(1 或者 2):");

3.1.3 添加记录模块

进入主菜单后调用录入函数,先用for判断结构体变量是否为空串;为空串

的结构体用来临时保存用户输入的信息(当然后面会让用户自行选择该信

息是否保存),信息输入完毕后会让用户选择是否继续录入信息;no即返回

菜单;

如:printf("\t\t\t********************************************\n");

printf("\t\t\t***       欢迎来到学生信息录入功能       ***\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t***  1 确定输入              2 放弃输入  ***\n");

printf("\t\t\t********************************************\n");

printf("\t\t\t请你输入你的选择(1 或者 2):");

3.1.4 查询记录模块

进入主菜单后,用户自行调用查询功能;用户输入需要查询的对象,如公交车号等;这里会有一个临时结构体变量来储存用户需要查询对象的信息;接着用for对原本用户输入的信息进行比较,判断用户需要查询的信息是否存在;若存在将显示查询的内容;显示完毕后让用户选择是否再次查询;no即退出菜单;

3.1.5 更新记录模块

   进入菜单后,用户最自行选择删除功能;进入删除功能后会让用户输入需要删除的目标信息,如公交车号、信息前面的编号等;接着用for来判断用户输入的信息是否存在;若存在即再次让用户确定是否真的要删除;删除之后将会让用户选择是否继续修改,no将返回主菜单;

包含修改和删除两部分功能

3.1.6 文件读写模块

     刚运行程序,系统会首先进入读取页面,将用户曾输入过的信息一一录取到结构体变量中;方便之后的查询等功能;也方便输入功能的结构体是空串的判断;读取完成后,用户会通过登录页面进入主菜单,接着用户选择性的进入输入功能;用户将信息输入完成后,系统会让用户选择是否进入保存功能(即为写入功能);进入保存功能后,程序会将用户输入的所有信息全部保存到创建的文件夹中;

读取功能和写入功能都是先创建一个文件夹;让后用文件夹指针将文件夹地址储存;

接着用fwrite(储存用户的结构体数组变量名/*普通变量名也可以*/,sizeof(struct 结构体名),结构体数组个数,文件夹指针)将用户信息存储到文件夹中;

3.1.7 其他模块

      程序进入主菜单之前会先进入登录注册功能;登录成功后会自动进入主菜单;

没有账号的用户可以选择进入注册功能;注册成功后程序会自动调用保存函数将用户账号保存方便下次登录;

根据系统添加的一些模块,该部分是你程序的加分模块,没有可以不写!!!!!!

3.2 数据结构设计

3.2.1 与课题相关的数据结构

   在进入输入程序后,主函数会先调用读取函数;将用户信息录入到结构体数组变量中后;程序会进入登录注册页面;登录成功后;程序会进入主菜单页面;主菜里的功能顺序是:printf("\t\t\t********************************************\n");

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***       6  公交信息读取功能            ***\n");

printf("\t\t\t***       7  退出                        ***\n");

每次一个功能运行完之后程序页面都会提示是否继续该功能;no即返回主菜单让用户进行下一次选择;

3.3 函数功能描述

(1)保存函数

        保存函数是将用户信息进行保存;该函数功能实现是:先用fp=fopen(“文件夹名”,“w”)将文件夹进行新建或打开;并且将新建文件夹的地址传给文件夹指针;接着通过fwrite(储存用户的结构体数组变量名/*普通变量名也可以*/,sizeof(struct 结构体名),结构体数组个数,文件夹指针)将用户信息存储到文件夹中;

(2)打开文件函数

     该程序的打开文件函数是嵌套在读取函数和保存函数内的;读取函数和保存函数相似;读取函数是先用fp=fopen(“文件夹名”,“w”)将文件夹进行新建或打开;然后用fp=fopen(“文件夹名”,“w”)将刚才的文件夹打开并同时把该文件夹的地址赋值给fq;而保存函数则是先用fp=fopen(“文件夹名”,“w”)将文件夹进行新建或打开,

接着用fwrite(储存用户的结构体数组变量名/*普通变量名也可以*/,sizeof(struct 结构体名),结构体数组个数,文件夹指针)将用户信息存储到文件夹中;其中保存函数和读取函数的文件夹名都是相同的;

.............

程序调试

本章节可以仿照下面图片内容根据自己的实际情况书写,写完自己问题后把下面的图片删掉。

程序调试是指对程序的查错和纠正逻辑错误。
为了便于查错、在设计该程序的时候我采用了函数功能分工明确的方法,这为我后来的调试过程带来了很多方便。
在上机调试之前我对于编写的程序作了纸面上的检查,先消灭一些低级错误,所谓的低级错误是指由于人为的输入不仔细造成的,如{}没有搭配完整。漏写;号,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决和避免的。而还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。
程序中使用很多自定义函数及结构体定义,自定义函数使得程序模块化思路更加清晰易懂,使用结构体方便某些数据的日后升级。
在代码书写中也是经常出现问题,比如在某个地方大小写字母不注意、多重循环中循环变量的不注意……出现的问题有自己发现并解决的有同学讨论的请教老师的,还有查资料解决……流程设计最初的时候没注意,致使编写程序模块很累无头绪,后来制作模块框架后好弄很多。 如要实现菜单的选择执行、怎么查找发车时间、如何查找发车日期、如何对车票价格进行排序:在解决相关问题时用到下面算法:用if语句实现菜单的选择执行、用switch语句实现菜单的选择执行、用循环语句实现主菜单的选择执行、使用数组查找最高 最低价格、使用数组查找发车时间等

总 结

(详述本次调试程序所取得的经验。如果程序未能通过,应分析其原因。)

通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。
这次实训是老师给了题目,经过自己的努力,实现要求。先做简单的输出,一步步的再做其它要求,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之处,特别是将功能单独写成.c文件和.h文件时存在许多错误,我会在以后的项目创建中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。

通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”“团结就是力量”,“实践是检验真理的标准”.....的寓意。
在此希望以后应多进行这样的实训,加长设间,培养我们独立思考问题的能力,提高实际操作水平。

参考文献

1.C程序设计(第四版),谭浩强,清华大学出版社,2010年

2.C程序设计(第四版)学习辅导,谭浩强,清华大学出版社,2010年

按照上述格式修改成自己所参考的文献,提交时删除该红色字体部分


http://chatgpt.dhexx.cn/article/wEDsL5yc.shtml

相关文章

RSA加密算法的数学原理

文章目录 RSA数学原理获取两个不相等的质数pq把p和q相乘&#xff0c;得到n计算出小于n的自然数中&#xff0c;有多少数与n互质&#xff08;欧拉函数&#xff09;在1和φ(n)之间&#xff0c;选取一个随机质数e求e和φ(n)的模反元素d&#xff08;裴蜀定理、扩展欧几里得算法&…

常见的加密算法原理与实现:RSA加密

系列四&#xff1a;RSA加密 一、基本背景二、算法原理2.1、生成公钥和私钥2.2、加密消息2.3、解密消息 三、Python实现RSA算法3.1、基于pycryptodome库实现RSA加解密3.2、基于rsa库实现RSA加解密 四、参考文献 一、基本背景 RSA算法是是由罗纳德李维斯特&#xff08;Ron Rives…

RSA加密和解密原理及过程(非对称加密)

非对称加密 用公钥来加密数据发送出去&#xff0c;接收方收到数据后用私钥解密数据。公钥是所有人都知道的&#xff0c;私钥只有接收方才知道。 加密解密基本流程 注意&#xff1a;公钥私钥中的33是同一个数字&#xff0c;是公开的&#xff0c;只有私钥的3是只有接收方才知道…

关于RSA加密解密原理

前言&#xff1a; 随着我们的学习的不断深入&#xff0c;信息的安全也愈加重要&#xff0c;我们发布的代码中可能含有我们的私密信息&#xff0c;比如对接支付宝沙箱api&#xff0c;下载一些专业软件时就需要我们输入公钥和私钥以此来验证我们的身份信息&#xff0c;就相当于用…

RSA加密解密原理及工具类

1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法&#xff0c;也是号称地球上最安全的加密算法。 RSA是被研究得最广泛的公钥算法&#xff0c;从提出到现在已近三十年&#xff0c;经历了各种攻击的考验&#xff0c;逐渐为人们接受&#xff0c;普遍认为是目前最优秀的公钥…

RSA 非对称加密原理(小白也能看懂哦~)

RSA 加密原理 步骤说明描述备注1找出质数P 、Q-2计算公共模数N P * Q-3欧拉函数φ(N) (P-1)(Q-1)-4计算公钥E1 < E < φ(N)E的取值必须是整数 E 和 φ(N) 必须是互质数5计算私钥DE * D % φ(N) 1-6加密C &#xff1d; M E mod NC&#xff1a;密文 M&#xff1a;明文7…

RSA加密的原理——为什么被公钥加密的可以被私钥解密?

RSA加密的原理——为什么被公钥加密的可以被私钥解密&#xff1f; 目录 一&#xff0c;RSA 数学理论基础 二&#xff0c;RSA实现原理 三&#xff0c;RSA加密的过程 四&#xff0c;参考文献 引言 在密码学最开始&#xff0c;都是使用的普通加密模式 A 用加密规则加密了字符串m…

关于RSA加密原理

什么是RSA RSA算法是现今使用最广泛的公钥密码算法&#xff0c;也是号称地球上最安全的加密算法。在了解RSA算法之前&#xff0c;先熟悉下几个术语 根据密钥的使用方法&#xff0c;可以将密码分为对称密码和公钥密码 对称密码&#xff1a;加密和解密使用同一种密钥的方式 公钥密…

RSA加密原理与RSA公钥加密系统、数字签名

通过公钥加密系统&#xff0c;可以对传输于两个通信单位之间的消息进行加密&#xff0c;即使窃听者窃听到加密之后的消息&#xff0c;也不能对其破译。 1、RSA公钥加密原理 1.1 几个核心概念 公钥P与公钥函数P()密钥S与密钥函数S() 可以简单理解&#xff0c;一个公钥对应一个…

RSA加密解密原理

引言&#xff1a; CTF密码学类题目中&#xff0c;RSA加密可谓是很重要且常见的加密类型&#xff0c;今天就总结下 RSA加密的原理及解密方法。 文章目录 RSA算法简介:1、什么是非对称加密算法&#xff1a;2、RSA 加密原理&#xff1a;3、RSA加密算法过程详解&#xff1a…

# RSA加密原理和一些知识笔记

RSA加密原理和一些知识笔记 原文地址&#xff1a; 01&#xff1a;RSA 加密和原理 .pem .csr .crt .der .p12文件的区别 base64 (https://www.cnblogs.com/zyzmlc/p/12875277.html) 写得不错&#xff0c;这应该是他的学习笔记&#xff0c;我做了一些错误修正 复习&#xff1a;…

Rsa加密原理与简单实现

源码&#xff1a;https://gitee.com/Cheney822/programmes/blob/master/rsa.py 1背景 1.1 数据加密 指的是根据一定规则&#xff0c;将数据处理成不规则的数据&#xff0c;使得人们除非有了关键的钥匙以及得知这个规则&#xff0c;难于得知无规则数据的真实含义。这个一定规则…

RSA加密原理简述

RSA加密原理简述 RSA简介&#xff1a;前置技能&#xff08;数论知识&#xff09;RSA加密原理 RSA简介&#xff1a; RSA加密算法使用不同的加密密钥与解密密钥&#xff0c;且由已知加密密钥推导出解密密钥在计算上是不可行的&#xff0c;以此来保障安全。 RSA算法通常是先生成一…

RSA加密基本原理

工作中遇到RSA加密的内容&#xff0c;特意学习了一下&#xff0c;作为自己的笔记吧。&#xff08;公钥和私钥得到不在本次文章范围内&#xff0c;此处只有基本原理&#xff09;方便自己更好的理解。 笔记来源于bilibili的视频&#xff0c;地址如下&#xff1a; https://www.bil…

非对称加密算法--RSA加密原理详解

密码学是在编码与破译的斗争实践中逐步发展起来的,并随着先进科学技术的应用&#xff0c;已成为一门综合性的尖端技术科学。 密码学发展史 在说RSA加密算法之前&#xff0c; 先说下密码学的发展史。其实密码学的诞生&#xff0c;就是为了运用在战场&#xff0c;在公元前&#…

密码学——RSA加密算法原理

前言&#xff1a;之前在做密码学题的时候了解了一下RSA&#xff0c;但总感觉那时总结的过少&#xff0c;而且也理解的不到位&#xff0c;这次就再来详细的了解一下&#xff0c;并通过做题来巩固一下。 一、对称加密与非对称加密 对称加密&#xff1a; 加密和解密用的是同一密…

如何利用好大数据挖掘潜在用户?

就目前而言&#xff0c;现在的大数据技术为绝大部分的业务提供了许多功能&#xff0c;同时还提高了效率和收入。当然除了这些以外&#xff0c;大数据分析还为公司的潜在客户和现有客户提供了许多好处。这些优点让很多公司对于大数据技术十分向往&#xff0c;那么怎么能够利用好…

激发客户潜在需求

企业不光要看到客户的显现需求&#xff0c;更要挖掘客户的潜在需求&#xff0c;因为客户的潜在需求是可以转化为显现需求的&#xff0c;满足客户的潜在需求可以为企业带来更多经济效益。 前言 潜在需求是指消费者虽然有明确意识的欲望&#xff0c;但由于种种原因还没有明确的显…

HubSpot入站营销:吸引潜在客户的7大技巧!

入站营销是当今数字化时代的重要策略之一。它不仅可以帮助企业吸引潜在客户、建立品牌知名度&#xff0c;还能促进客户参与并提高客户满意度。今天运营坛将带领大家深入探讨HubSpot入站营销的理论和实践&#xff0c;包括如何开始入站营销、入站营销的框架以及关键技巧。 一、什…

Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户

最近我们被客户要求撰写关于银行拉新活动的研究报告&#xff0c;包括一些图形和统计输出。 项目背景&#xff1a;银行的主要盈利业务靠的是贷款&#xff0c;这些客户中的大多数是存款大小不等的责任客户&#xff08;存款人&#xff09;。银行拥有不断增长的客户。该银行希望增…