软件工程综合实践专题——个人博客作业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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值