这次作业老师要求我们读一段别人写的小程序,并写写自己的感悟。
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();}
}