设计目的
公交线路基本信息的录入。1、线路信息的录入、修改等操作。2、要求系统要以菜单方式进行工作。3、公交线路包括:公交车号、起始发出车时间与末班车时间、票价等信息。
正文,中文:宋体,小四号,不加粗,首行缩进2字符,英文:Times New Roman, 小四号,不加粗,段前段后0行,下同
(正文格式对话框)
fopen:文件打开函数>>>fopen(“文件名”,“打开函数的方式”)
fread:文件读取函数>>>fopen(“文件名”,“打开函数的方式”){只能读取二进制}
fscanf:文件读取函数>>>fscanf(存文件地址的文件指针,“%+读取数据的类型”,变量){二进制和为文本都可以读取}
文件打开方式
w:write>>只写,(如果文件存在就打开,如果文件不存在,w方式会自动帮你在源文件的路径下自动创建!);
r:read 只读(前提是文件必须先存在!!!);
a:添加数据到文件;
r+:可读/写数据,该文件必须先存在,否则打开失败
w+:可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
a+:可读/写数据,原来的文件不被删去,位置指针移到文件末尾
如:
t.c
#include
#include
#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
#include
void an();
#endif
struct 结构体名
{定义所需数组或变量,如:
char a[10];
int b;
double c;
};
定义结构体变量:struct 结构体名 结构体变量名;
如果需要存入多条信息就将结构体变量写成数组,只需要一个就写成普通变量;
如:struct 结构体名字 A[10];
struct 结构体名字 b;
strcmp(字符型数组a,字符型数组b)==0>>相同
==1>>前面的字符串对应的ask码大于后面字符串对应的ask码
==-1>>前面的字符串对应的ask码大于后面字符串对应的ask 码
strcpy(字符型数组a,字符型数组b)>>将b赋值给a;
该系统的描述,可以把选题表内容放在此处。
绘制一个功能模块图
每一个模块进行描述
二级标题,黑体,小四号,加粗,左对齐,段前段后0.25行,1.5倍行距
现有系统的状态是。
该系统具有以下功能:
三级标题,宋体,小四号,加粗,首行缩进2字符,段前段后0行,1.5倍行距
在现有市场中……
该系统在现有市场中比较广泛,但与之对应的市场需求量也比较大;
从城市居民角度来讲,有了这套公交系统之后,如果有居民想查询票价,发车时间,末班车时间,公交卡号等都将变得容易许多,因此,深受广大居民青睐;
从公共交通运营企业角度来讲,行车调度与线网规划不科学、设备维护压力大、场站人流密集安全保障难度高、以及企业自我造血能力差,极大依靠财政补贴是公共交通行业玩家的主要经营痛点。而公共交通的智能+本质上是服务智能+,其目的提升公共交通服务体验,引导城市公众使用公共交通工具,减缓小汽车的大量使用对城市有限道路资源造成的压力。这减少了政府不小的压力,更改善了环境;这也使得政府也会大力支持这种系统;
技术上 算法设计
1、设计思想
本系统的设计流程简单比较简单,原始数据全部都保存在文件中,用户就不必自己一个一个的输入信息。程序执行时从文件中读出。创建结构体数组对路线信息进行存储,因为使用结构体变量对数据的读取、删除和保存会比较方便。写无返回值的自定义函数 void 函数名()对系统的功能进行由于划分让主函数更加简洁,方便自己检查,同时也方便合作者阅读。其中利用 switch 条件分支语句进行子函数功能的选择和调用。并且使用for循环和goto语句进行多次循环执行,就可以实现对信息的多次增加,知道达到用户满意时由用户自己选择退出系统。通同时使用了清屏函数,对上一次程序运行的结果清楚只显示本次运行的相关信息,这样的话就做o到了界面的友好化,简单明了不冗杂,更方便观看。
2、
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):");
进入主菜单后调用录入函数,先用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):");
进入主菜单后,用户自行调用查询功能;用户输入需要查询的对象,如公交车号等;这里会有一个临时结构体变量来储存用户需要查询对象的信息;接着用for对原本用户输入的信息进行比较,判断用户需要查询的信息是否存在;若存在将显示查询的内容;显示完毕后让用户选择是否再次查询;no即退出菜单;
进入菜单后,用户最自行选择删除功能;进入删除功能后会让用户输入需要删除的目标信息,如公交车号、信息前面的编号等;接着用for来判断用户输入的信息是否存在;若存在即再次让用户确定是否真的要删除;删除之后将会让用户选择是否继续修改,no将返回主菜单;
包含修改和删除两部分功能
刚运行程序,系统会首先进入读取页面,将用户曾输入过的信息一一录取到结构体变量中;方便之后的查询等功能;也方便输入功能的结构体是空串的判断;读取完成后,用户会通过登录页面进入主菜单,接着用户选择性的进入输入功能;用户将信息输入完成后,系统会让用户选择是否进入保存功能(即为写入功能);进入保存功能后,程序会将用户输入的所有信息全部保存到创建的文件夹中;
读取功能和写入功能都是先创建一个文件夹;让后用文件夹指针将文件夹地址储存;
接着用fwrite(储存用户的结构体数组变量名/*普通变量名也可以*/,sizeof(struct 结构体名),结构体数组个数,文件夹指针)将用户信息存储到文件夹中;
程序进入主菜单之前会先进入登录注册功能;登录成功后会自动进入主菜单;
没有账号的用户可以选择进入注册功能;注册成功后程序会自动调用保存函数将用户账号保存方便下次登录;
根据系统添加的一些模块,该部分是你程序的加分模块,没有可以不写!!!!!!
在进入输入程序后,主函数会先调用读取函数;将用户信息录入到结构体数组变量中后;程序会进入登录注册页面;登录成功后;程序会进入主菜单页面;主菜里的功能顺序是: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即返回主菜单让用户进行下一次选择;
(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年
按照上述格式修改成自己所参考的文献,提交时删除该红色字体部分