软件工程综合实践专题——个人博客作业1

这次作业老师要求我们读一段别人写的小程序,并写写自己的感悟。

emmmmmmmmmmmm

首先找到一段这样的代码就十分不容易...毕竟网上许多代码都是伪代码Orz

感谢室友提供的去年小学期大作业

首先,这段代码给我的第一印象就是:这好说歹说也算是个管理系统,居然都写在一个cpp文件里......强迫症表示有些不爽

其次,这段代码一看就知道,典型的VC6.0的风格!!!这里先放一小段出来...

#include<iostream> 
#include<fstream>
#include<string.h>
using namespace std; 
struct Ticket
{char add[20];                                  int num; char time[20];            
}a[10]={"上海到广州",1,"7月9日8:00","上海到北京",2,"7月9日9:00","上海到深圳",3,"7月9日10:00","上海到山西",4,"7月9日11:00","上海到山东",5,"7月9日12:00","上海到广西",6,"7月9日13:00","上海到重庆",7,"7月9日14:00","上海到四川",8,"7月9日15:00","上海到成都",9,"7月9日16:00","上海到天津",10,"7月9日17:00",};
struct user
{int account,password;
}b[5]={1759220,123,1759221,123,1759222,123,1759223,123,1759224,123};
class menu{
public:
void print_menu() 
{system("cls");putchar('\n');cout<<"      火车票售票系统 \n";cout<<"**************************\n";cout<<"1.查询车票\n";cout<<"2.购买车票\n";cout<<"3.退订车票\n";cout<<"4.退出\n";cout<<"**************************\n";cout<<"\n请选择:";
}
};

我之所以这么痛恨VC6.0,是因为这个IDE不会自动首行缩进!!因为根据我个人的编程习惯,每进入一个循环(或者类型循环的部分,反正就是要打括号的),我都会再原先的基础上首行缩进2个字符

因为,在有首行缩进的情况下,更容易检查出是否有存在括号漏打导致的编译错误的问题,同时也避免你的IDE被漏了“}”的代码所误导!!(因为之前有人来找我帮忙找程序编译错误的时候,曾经就有因为一个“}”漏打的情况,让IDE在编译的时候出现问题。重点是,IDE提示的时候,并没有像以往一样提示“miss ‘}’ ”这类的,而是以其他方式报错,并且提示的可能错误行也不在那一行。于是那个“}”我们找了半个多小时,直到从头到尾把程序全部读一遍之后才找到)

可想而知,如果是在一个大型项目里面,从头到尾把所有代码检查一遍是根本不可行的,费时又费力。所以,需要在一开始编写的时候就彻底杜绝这个问题。或者,括号成对打也行。(其实,括号成对打并不是我在大学里学到的,而是高中的时候玩机器人的时候学到的。虽然当时的编程还都是模块化十分小儿科的,但是在里面学到的许多方法至今都十分具有实用价值)

好了 废话不多说 我们来看一看这段代码吧

首先,他的这段代码写的是一个订票系统,是我们上一次小学期的大作业。首先他这个代码是有错误的,在后面涉及文件的部分存在一点小问题,比如无法打开文件等。(因为当时是要求要使用文件保存数据的)总的来说,这个软件的功能就是基本的增删改查,以及加了一小部分简单的UI设计以及将数据保存在本地的文件中。我认为,对于这样一个系统来说,换行、首行缩进什么的就足以让我这样的强迫症抓狂了。这么长的代码,我觉得如果可以分成模块,写在头文件里可能会更加清晰易读,并且也便于后期修改。

下面就放一部分我自己写的出来吧(这是个头文件) 格式有哪里不规范的地方还请老师帮忙指出来(emmmmmmm 我承认我一直都没有写注释的习惯,我知道这是一个致命的错误,我会改的...)

#include <iostream>
#include "order.h"
#include <fstream>
#include <stdlib.h>
using namespace std;int search(Order a[],int num,int range) {int i;for (i = 0; i < range; i++) {if (a[i].num == num) {return i;}}return 20;//20为超过范围的数,用于判断是否找到相同项
}void orderDelete(Order a[], int i, int count) {for (i++; i < count; i++) {a[i - 1] = a[i];}
}int fileSave(Order a,int num) {int i;ofstream fout("f1.dat", ios::app);if (!fout) {cout << "Cannot open file";return 1;}fout << a.num;for (i = 0; i < 8; i++) {fout << a.getDishNum(i);}fout.close();return 0;}void fileSearch(int num) {ifstream fin("f1.dat", ios::in);if (!fin) {cout << "file cannot be opened" << endl;}int i;char a;char b[8];fin >> a;cout << "a=" << a << endl;while ((( a - '0' ) != num)&&!fin.eof()) {fin.seekg(8*sizeof(char), ios::cur);fin >> a;cout << "a=" << a << endl;}if (fin.eof()) {cout << "404" << endl;}else {for (i = 0; i < 8; i++) {fin >> b[i];}cout << a << endl;for (i = 0; i < 8; i++) {cout << b[i] << endl;}Order od;od.num = num;od.setOrder(b);od.printOrder();fin.close();}
}

  

转载于:https://www.cnblogs.com/JeremySW/p/10468582.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ-3041 匈牙利算法 二分图最大匹配

踢以 给出多个点的坐标 有一种攻击 可以把一次干掉同一列的 或者干掉同一行的 求最少的攻击次数 肥西 由于问题是问选取最少的行和列干掉所有的陨石 可以把输入的r和c看成r和c之间有一条连边因为要实现干就干掉一行的也就是说 在同一行的是连到一个点上的 比如1 3 &#xf…

Java学习笔记10-2——MyBatis

文章目录MyBatis详细执行流程使用注解开发面向接口开发使用注解开发复杂查询多对一问题测试环境搭建按照查询嵌套处理&#xff08;子查询、嵌套查询&#xff09;按照结果查询&#xff08;联表查询、联合查询&#xff09;一对多问题环境搭建按照结果查询&#xff08;联表查询、联…

基于直方图处理的图像增强

灰度图像的直方图 •灰度级直方图是图像的一种统计表达&#xff0c;它反映了该图中 不同灰度级出现的统计概率。 •设图像具有L个灰度级&#xff0c;图像中像素点的个数为n&#xff0c;它 的第k个灰度级出现的次数为(k0,1,2,…,L-1) 通过直方图可以看出图像整体的性质 直方图…

[Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]

【问题描述】[中等] 给定正整数数组 A&#xff0c;A[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的距离为 j - i。一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为&#xff08;A[i] A[j] i - j&#xff09;&#xff1a;景点的评分之…

NLayerAppV3--.net Core2实现的DDD分层架构

虽然每天的工作都是CURD、还是使用着传统的三层架构、使用着.net Framework&#xff0c;但是这并不能影响我学习DDD和.net core。 总是希望软件在应对复杂多变的场景时能够游刃有余&#xff0c;在解决问题时能够多一种选择。 很早就有关注大神dax.net的NLayerApp系列博文https:…

HDU - 4586 数学期望

题意 有一个骰子有n个面&#xff0c;掷到每一个面的概率是相等的&#xff0c;每一个面上都有相应的钱数。其中当你掷到某些面 一共m个面之一时&#xff0c;你有多掷一次的机会。问最后所得钱数的期望。 分析 数学期望是什么 数学期望就是一种加权平均值 什么意思 数学期望…

Java学习笔记11-1——Spring5

文章目录1.简介组成拓展2.控制反转&#xff08;IoC&#xff09;IoC例子IoC本质3.Hello&#xff0c;Springdemo1修改user例子的代码思考4.IoC创建对象的方式通过无参构造的方式通过有参构造的方式5.Spring配置alias 设置别名Bean的配置import6.依赖注入&#xff08;DI&#xff0…

空间滤波增强

基本概念 空间域滤波增强采用模板处理方法对图像进行 滤波&#xff0c;去除图像噪声或增强图像的细节 空间域平滑滤波器 分析&#xff1a;任何一幅原始图像&#xff0c;在其获取和传输等过程中&#xff0c; 会受到各种噪声的干扰&#xff0c;使图像模糊&#xff0c;对图像分析…

[剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]

【问题描述】[中等] 请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。例如输入&#xff1a;4/ \2 7/ \ / \ 1 3 6 9 镜像输出&#xff1a;4/ \7 2/ \ / \ 9 6 3 1示例 1&#xff1a;输入&#xff1a;root [4,2,7,1,3,6,9]…

瓶颈分析

Top指令&#xff1a; CPU/内存情况 top # top指令可以显示总体CPU占用率、内存使用率和交换情况&#xff0c;以及所有进程对应的CPU、内存占用情况 终端下使用该指令示例结果&#xff1a; 上图对一些重要的参数进行了简单标识&#xff0c;笔者这里使用的是XShell对远程Linux服务…

Java学习笔记11-2——Spring5

文章目录7.Bean的自动装配自动装配说明测试环境搭建byName&#xff08;按名称自动装配&#xff09;测试byName运行机制小结&#xff1a;byType&#xff08;按类型自动装配&#xff09;测试使用注解进行自动装配AutowiredQualifierResourceAutowired与Resource异同8.使用注解开发…

HDU-5050 java大数

题意 给出一对长和宽 输出在这个长和宽之下 尽可能大的分出全部相等的小正方形的边长 输入输出都用二进制表示 输入最大是2^1000分析 两个长度下都可以分出来就是gcd code import java.math.BigInteger; import java.util.Scanner;public class Main {static Scanner sc ne…

频率域平滑滤波器

频率域滤波增强方法 理想低通滤波器 理想低通滤波器(Ideal Lowpass Filters-ILPF) 尽管理想低通滤波器在数学上定义清楚&#xff0c;在计算机模拟中也可 实现&#xff0c;但在截止频率处直上直下的理想低通滤波器是不能用实际的 电子器件实现的。 理想滤波器有陡峭频率的截止…

[leetcode][JAVA]面试题第[1028]题[迭代]

【问题描述】[困难] 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其直接子节点的…

HDU-5023 线段树染色问题+延时标记

题意 给我们1-n的区间段 两种操作 P a b c 表示把a到b染成c颜色 Q a b 表示求a到b的颜色种类数量 注意初始全部先染成颜色2 分析 线段树经典染色问题 可以用二进制来表示颜色数量 一共30个颜色 那么最多也就是30位 不会超过int的范围 二进制下第x位为1表示有x1的颜色 …

频率域锐化滤波器

频率域锐化滤波器 &#xff08;Frequency Sharpening Filters &#xff09; 图像的边缘、细节主要位于高频部分&#xff0c;而图 像的模糊是由于高频成分比较弱产生的。 频率域锐化就是为了消除模糊&#xff0c;突出边缘。 采用高通滤波器让高频成分通过&#xff0c;使低频成 …

1033 旧键盘打字

旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中…

Node js redis

const redis require(redis);//redis const client redis.createClient(8888, 172.16.4.2); //redis操作client.set("hello", "{\"a\":\"1\", \"b\":\"2\"}") client.get("hello", function(err, val…

6用NetBeans进行JSP开发

用NetBeans进行JSP开发 NetBeans

关于GCD的证明

关于GCD欧几里得算法的证明过程&#xff1a; 证明一&#xff1a; 有两个数 a b 设这两个数的gcd(a,b) g 那么假设其中比较大的数 a a k*b r; 那么当我们对a求对b的最大公约数时 如果没有余数r 那么gcd 就等于b 那么现在有r了 所以gcd 的取值就取决于r了 因为现在我们…