1、程序由函数组成,函数只完成自己特定的功能即可
把函数声明写在头文件里(想使用函数时,可直接导入头文件,调用函数),把函数实现写在".cc"文件中
把多个".cc"文件编译成可执行文件 ->分别编译成".o"文件,再连接到一起
2、值传递
函数中的参数传递是值传递,形参只是实参的一份拷贝数据,在函数中改变形参的值,对实参无影响
3、作业分析:显示层(与用户的交互)
操作数据(完成业务逻辑) biz层
数据(id , password , balance )
Bank实现代码
================================================================
biz.cc
================================================================
//operation
/* p : Password of account .
* b : balance of account .
* return : id of account .
*/
long create( int p , double b );
void save( double sum ) ;
/*
* return : 0 success , otherwise -1 returned .
*/
int withdraw( int p , double sum ) ;
double query( int p ) ;
long generateId();
================================================================
biz.cc
================================================================
static long id ;
static int passwd ;
static double balance ;
#include
using namespace std;
long generateId(){
static int id = 1 ;
return id++ ;
}
long create( int p , double b ){
id = generateId();
passwd = p ;
balance = b ;
return id ;
}
void save( double sum ){
balance += sum ;
}
int withdraw( int p , double sum ){
if( p != passwd ){
cout<<"invalid password ." << endl;
return -1 ;
}
if( balance < (sum + 10) ){
cout<<"no enough money ." << endl;
return -1 ;
}
balance -= sum ;
return 0 ;
}
double query( int p ){
if( p != passwd ){
cout<<"invalid password " << endl;
return -1 ;
}else{
return balance ;
}
}
================================================================
menu.h
================================================================
int showMenu();
void createMenu();
void saveMenu();
void withdrawMenu();
void queryMenu();
================================================================
menu.cc
================================================================
#include "biz.h"
#include
using namespace std;
int showMenu(){
cout<<"create ------> 1 " << endl;
cout<<"save ------> 2 " << endl;
cout<<"withdraw ----> 3 " << endl;
cout<<"query -------> 4 " << endl;
cout<<"exit --------> 0 " << endl;
cout<<"enter your choice >";
int c ;
cin>>c ;
if( !cin ){
return -1 ;
}else{
return c ;
}
}
void createMenu(){
int passwd ;
double balance ;
cout<<"\tenter password >";
cin>>passwd ;
cout<<"\tenter balance >";
cin>>balance ;
long id = create( passwd , balance );
cout<<"======================"< cout<<"create account ok , id = " << id < cout<<"======================"<}
void saveMenu(){
double sum ;
cout<<"\tenter sum >";
cin>>sum ;
save( sum ) ;
cout<<"======================"< cout<<"save money ok "< cout<<"======================"<}
void withdrawMenu(){
int passwd ;
double sum ;
cout<<"\tenter password >";
cin>>passwd ;
cout<<"\tenter sum >";
cin>>sum ;
int ret = withdraw( passwd , sum ) ;
if( ret == 0 ){
cout<<"========================"< cout<<"withdraw successful . "< cout<<"========================"< }
}
void queryMenu(){
int passwd ;
cout<<"\tenter password >";
cin>>passwd ;
double ret = query( passwd ) ;
if( ret != -1 ){
cout<<"============================"< cout<<"BLANCE : $ " << ret << endl;
cout<<"============================"< }else{
cout<<"============================"< cout<<"invalid password "< cout<<"============================"< }
}
================================================================
main.cc
================================================================
#include
#include "menu.h"
using namespace std;
int main(){
int c = 0 ;
do{
c = showMenu();
if( c == -1 ) { break ; }
switch( c ){
case 1 :
createMenu();
break;
case 2 :
saveMenu();
break;
case 3 :
withdrawMenu();
break;
case 4 :
queryMenu();
break;
case 0 :
cout<<"===================="< cout<<"Good Bye "< cout<<"===================="< break;
default :
cout<<"===================="< cout<<"invalid option, try again.";
cout< cout<<"===================="< break;
}
}while( c != 0 );
return 0 ;
}
================================================================
4、数组
(1)声明数组 <元素类型> 数组名[元素个数] int intArray[100]; -->intArray 是个集合,有100个元素,每个元素都是int类型的
(2)初始化数组
(3)使用 通过数组的下标来访问数组中的元素,下标从0开始 intArray[0]=100; -->intArray数组中的第一个元素赋值为100
数组声明时,元素个数必须是常量表达式
数组声明带有初始化,则可直接为数组赋值
在数组声明时,必须指明数组长度,若在声明时候初始化,数组长度可省
int a1[2]={100,200}; 长度2
int a2[] = {5,6,7}; 长度3
对于数组中的元素个数,比声明时的多,则会报错,这样的越界访问,对整个程序来说会有很严重的后果!!!
比声明少,系统会把余下的没有定义数据的元素初始化为0
不初始化的数组,其中的元素数据为随机数
下标工作的原理:
表示编号,还表示当前元素相对于数组起始位置的偏移量
计算机通过偏移量找到元素在内存中的位置
5、数组的排序
选择排序:找出最小的放在第一个位置
数组元素有n个,需要找n-1次,需要比较n-i次(i为开始元素的位置)
6、多维数组
二维数组;一个数组中的每个元素是个数组
声明: int iA[5][10]; -->“5”代表数组有5行,“10”代表数组有10列
声明时,第一维可以省略!
确定一个元素需要2个下标
7、结构
用户自己定义的一组数据类型
声明结构时,编译器不会分配空间,在声明一个结构的变量的时候才会为其分配空间
结构中的成员是多个简单类型组成的
用 “结构名.成员名”来操作其中的成员变量
strcpy(p.name,"huxz");为char数组赋值
结构类型的变量间也可以相互赋值
结构的大小就是所有成员的大小之和(每个成员的大小必须是int类型的整倍数,当不够时,会自动补齐)
Unix上还要求,结构的大小是结构的最大的成员的整倍数
size(of) 计算结构大小
阅读(1872) | 评论(0) | 转发(0) |