首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请评价下这个程序,该如何处理

2012-03-11 
请评价下这个程序请从效率,可复用性,可扩展性等评价下这个程序,谢谢!先给出main.cpp/*文件名称:main.cpp简

请评价下这个程序
请从效率,可复用性,可扩展性等评价下这个程序,谢谢!

先给出main.cpp

/*
文件名称   :   main.cpp
简介   :   科技学院成绩管理系统
作者   :   笨熊
版本   :   v3.1
*/
#include   "stdafx.h "
#include   <cstdlib>
#include   <iostream>
#include   <cstring>

#include   "class\StuCol.h "
#include   "stu.h "

using   std::cin;
using   std::cout;
using   std::endl;

#define   CLS   system( "cls.exe ")
//选择标志
enum   Flag
{
Display=1,Input=2,DelFile=3,Find=4,Other=0
};


//函数声明
void   show();//用法展示
void   DisplayStu(const   STU   &s);//资料显示
Flag   SelectFlag(int   select);//选择标志转换

/////////////////////////////////////////////////////////////////////////////
int   main()
{
//初始化  
int   select=0;

StuCol   m_col;

do
{
CLS;//清屏

//用法展示
show();

cin   > >   select;
cout   < <   endl;

switch   (SelectFlag(select))
{
//列出资料
case   Display:
{
CLS;

m_col.DisplayAll();

cout   < <   endl;
cout   < <   "共 "   < <   m_col.GetCount()   < <   "人 "   < <   endl;

system( "pause.exe ");

break;
}

//输入资料
case   Input:
{
CLS;

int   num=0;

cout   < <   "输入要加入的个数:   "   < <   endl;
cin   > >   num;

const   int   STU_NUM=num;

for   (int   i=0;   i <STU_NUM;   ++i)
{
STU   stu={0};

CLS;
cout   < <   "====================================================== "   < <   endl;
cout   < <   "第   "   < <   i+1   < <   "位 "   < <   endl;
cout   < <   "学号:   ";   cin   > >   stu.id;
cout   < <   "姓名:   ";   cin   > >   stu.name;
cout   < <   "计算机基础:   ";   cin   > >   stu.base;
cout   < <   "高数:   ";   cin   > > stu.math;
cout   < <   "英语:   ";   cin   > >   stu.english;
cout   < <   "C语言:   ";   cin   > >   stu.c_pro;


if   (!m_col.SetStu(stu,   STU_NUM))//输入资料
{
cout   < <   "文件输入错误! "   < <   endl;
}
}

system( "pause.exe ");

break;      
}

//删除文件
case   DelFile:
{
CLS;

if   (!m_col.DelFile())
{
cout   < <   "文件删除失败! "   < <   endl;
}
else
{
cout   < <   "删除成功! "   < <   endl;
}
system( "pause.exe ");



break;
}

//查找资料
case   Find:
{
CLS;

STU   s={0};
int   id=0;

cout   < <   "输入学号:   "   < <   endl;
cin   > >   id;

if   (!m_col.Find(s,   id))
{
cout   < <   "未找到 "   < <   endl;  
}
else
{
DisplayStu(s);
}


system( "pause.exe ");

break;
}

default:
break;

}//end   of   switch()

}while(SelectFlag(select)   !=   Other);//end   of   while()

return   0;
}

//用法输出
void   show()
{
const   string   shower[]={
"====================================\n ",
"学生成绩管理系统   v3.0   (标准C++版)\n ",
"====================================\n ",
"1.列出资料.\n ",
"2.输入资料.\n ",
"3.删除数据文件\n ",
"4.查找资料.\n ",
"0.退出系统.\n ",
"\n\n请输入数字以选择操作:> ",
};

const   int   length=   sizeof(shower)/sizeof(shower[0]);

cout   < <   endl;

for   (int   i=0;   i <length;   i++)
{
cout   < <   shower[i];
}

}


void   DisplayStu(const   STU   &s)
{
cout   < <   "============================= "   < <   endl;
cout   < <   "学号:   "   < <   s.id < <   endl;
cout   < <   "姓名:   "   < <   s.name   < <   endl;
cout   < <   "计算机基础:   "   < <   s.base   < <   endl;
cout   < <   "C语言:   "   < <   s.c_pro   < <   endl;
cout   < <   "高数:   "   < <   s.math   < <   endl;
cout   < <   "英语:   "   < <   s.english   < <   endl;

}

Flag   SelectFlag(int   select)
{
switch   (select)
{
case   1:
{
return   Display;
break;
}
case   2:
{
return   Input;
break;
}
case   3:
{
return   DelFile;
break;
}
case   4:
{
return   Find;
}
default:
{
return   Other;
}
}

return   Other;

}

//stu.h
#ifndef   STU_H
#define   STU_H


#include   <string>
using   std::string;

struct   STU
{
unsigned   int   id;//学号
string   name;//姓名

//成绩
double   base;
double   math;
double   c_pro;
double   english;
};
#endif


[解决办法]
说实话,不怎么样。
你应该看看《代码大全》、《重构》2书。
《STL源码剖析》也很好,可以知道高手写的代码是啥样的。
[解决办法]
问题还是挺多的,有大有小,我说一个吧。



拷贝构造函数和赋值操作写的有问题,你再仔细看下。事实上我觉得你根本就不需要这两个函数,考虑把它们设为私有的,并且不去实现。另外所有的对象都读写同一个全局文件也不是好的风格。

楼主多加练习,多看书。

热点排行