求教各位大神看看我的程序是哪里出错了
#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>
//#include <stdlib>
using namespace std;
const int max=15;
class record
{
public:
void set(int b, char* s,char* l,char* c,int cno,int type)
{
strcpy(cname,c);//缺课课程名称
strcpy(sname,s);//学生姓名
strcpy(lname,l);//学生类别
this->snum=b;//学生学号
this->cno=cno;//缺课节次
this->type=type;//缺课类型
}
char cname[5],sname[5],lname[5];//定义缺课课程名称,学生名称,学生类别名称
int snum ,cno,type;//定义学生学号,缺课节次,缺课类型
};
class records:public record
{
public:
records()
{
r=new record[max];
}
void input();
void wt(int &i);
void rd();
void pri();
void search();
void del();
void edt();
void wdt(int &n);
record *r;
static int n;
};
int records::n=0;
void records:: wt(int & i)
{
ofstream outf;
if(i>0)
outf.open("data.txt",ios::app);
else outf.open("data.txt",ios::out);
cout<<n;
outf<<setw(6)<<n;
outf<<setw(6)<<r[i].snum<<setw(6)<<r[i].cno<<setw(6)<<r[i].type<<setw(1);
outf<<setw(7);
outf<<r[i].sname;
outf<<setw(7);
outf<<r[i].lname;
outf<<setw(7);
outf<<r[i].cname;
outf.close();
}
void records::wdt( int &i)
{
ofstream outf("data.txt");
outf<<setw(6)<<n;
outf<<setw(6)<<r[i].snum<<setw(6)<<r[i].cno<<setw(6)<<r[i].type<<setw(1);
outf<<setw(7);
outf<<r[i].sname;
outf<<setw(7);
outf<<r[i].lname;
outf<<setw(7);
outf<<r[i].cname;
outf.close();
}
void records::rd()
{
ifstream inf;
inf.open("data.txt");
cout<<n;
int i=0;
while(inf)
{ inf>>n;
inf>>r[i].snum>>r[i].cno>>r[i].type>>r[i].sname>>r[i].lname>>r[i].cname;
i++;
}
}
void records::input() //学生考勤系统的录用模块
{
for(int i=0;i<100;i++)
{
char t1[5],t2[5],t3[5];
int t4,t5,t6;
char yn;
cout<<"录入一条学生详细考勤记录:"<<endl;
cout<<"输入学生的学号,学生的姓名,专业,缺课课程,缺课节次和缺课类别(1.迟到 2.早退 3.请假 4.旷课)。"<<endl;
cin>>t4>>t1>>t2>>t3>>t5>>t6;
records::n++;
cout<<endl;
r[i].set(t4,t1,t2,t3,t5,t6);
cout<<n;
char y;
cout<<"保存? (y/n) "<<endl;
cin>>y;
if(y=='y')wt(i);
cout<<"是否继续输入? (y/n) "<<endl;
cin>>yn;
if(yn=='y') continue;
else break;
}
}
void records::pri() //学生考勤系统显示模块
{
if(n==0)
{cout<<" ------文件记录为空----"<<endl<<"-----请先输入数据保存在进行此次操作-----"<<endl;
return;
}
cout<<"学号 \t姓名 \t专业 \t缺课课程\t,缺课节次\t缺课类别(1.迟到 2.早退 3.请假 4.旷课)。"<<endl;
for(int i=0;i<n;i++)
{
cout<<r[i].snum<<"\t";
cout<<r[i].sname<<"\t";
cout<<r[i].lname<<"\t";
cout<<r[i].cname<<"\t\t\t";
cout<<r[i].cno<<"\t\t";
switch(r[i].type)
{
case 1:cout<<"迟到"<<endl;break;
case 2:cout<<"早退"<<endl;break;
case 3:cout<<"请假"<<endl;break;
case 4:cout<<"旷课"<<endl;break;
default:;
}
}
}
void records::edt() //学生考勤系统修改模块
{
cout<<"请输入要修改缺课记录的学生的学号: "<<endl;
int t1,t5,t6;
int tnum,flag=1,km,i;
char t2[5],t3[5],t4[5];
cin>>tnum;
for( i=0;i<n;i++)
{
if(r[i].snum==tnum)
{
cout<<"有您要查询的学生";
break;
}
}
if(!flag)
{cout<<"查无此学生!"<<endl;
return ;
}
t1=r[i].snum;
strcpy(t2,r[i].sname);
strcpy(t3,r[i].lname);
strcpy(t4,r[i].cname);
t5=r[i].cno;
t6=r[i].type;
cout<<"请输入要修改的项目:\n(1.学生学号 2.学生姓名 3.学生专业 4.缺课科目 5.缺课次数 6.缺课类型"<<endl;
cin>>km;
switch(km)
{
case 1:
cout<<"请输入修改的学生学号: "<<endl;
cin>>t1;
break;
case 2: cout<<"请输入修改的学生姓名: "<<endl;
cin>>t2;
break;
case 3:
cout<<"请输入修改的缺课课程: "<<endl;
cin>>t3 ;
break;
case 4: cout<<"请输入修改的学生专业: "<<endl;
cin>>t4;
break;
case 5: cout<<"输入修改的缺课课程次数:"<<endl;
cin>>t5;
break;
case 6: cout<<"请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) "<<endl;
cin>>t6;
break;
}
r[i].set(t1,t2,t3,t4,t5,t6);
char yn;
cout<<"保存修改? (y/n) "<<endl;
cin>>yn;
if(yn=='n') wt(i);
else return;
}
void records::del()//学生系统删除模块
{ int i;
cout<<"请输入要删除的记录的学号序号: (输入-1删除全部) "<<endl;
int flag,k=1;
cin>>flag;
for( i=0;i<n;i++)
{
if(r[i].snum==flag)
{
cout<<"有您要删除的学生";
records:: n--;
char yn;
cout<<"保存修改? (y/n) "<<endl;
cin>>yn;
if(yn=='n') wdt( n);
break;
}
}
if(!k)
{cout<<"查无您要删除的学生!"<<endl;
return ;
}
}
void records::search()//学生统计模块
{
cout<<"请输入要查询的学生学号: "<<endl;
int tnum,flag=1;
cin>>tnum;
for(int i=0;i<n;i++)
{
if(r[i].snum==tnum)
{ flag=0;
if(!flag)
{ cout<<"找到您要查询的学生信息"<<endl;
cout<<"学号 \t姓名 \t专业 \t缺课课程\t,缺课节次\t缺课类别(1.迟到 2.早退 3.请假 4.旷课)。"<<endl;
cout<<r[i].snum<<"\t";
cout<<r[i].sname<<"\t";
cout<<r[i].lname<<"\t";
cout<<r[i].cname<<"\t\t\t";
cout<<r[i].cno<<"\t\t";
switch(r[i].type)
{
case 1:cout<<"迟到"<<endl;break;
case 2:cout<<"早退"<<endl;break;
case 3:cout<<"请假"<<endl;break;
case 4:cout<<"旷课"<<endl;break;
}
break;
}
}
if(!flag)
{ cout<<"没有查到该学生的缺课记录!"<<endl;
flag=1;
}
}
}
void main()
{ records *t=new records();
t-> rd();
c1:
cout<<"\t\t学生考勤管理系统 V1.0.0"<<endl
<<endl
<<"功能列表:"<<endl
<<"1.显示所有学生缺课记录"<<endl
<<"2.录入学生的缺课记录"<<endl
<<"3.查询某个学生的缺课情况"<<endl
<<"4.修改某个学生的缺课记录"<<endl
<<"5.删除某个学生的缺课记录"<<endl
<<"6.退出系统"<<endl
<<"请选择: (1/2/3/4/5/6/7) "<<endl;
int cho;
cin>>cho;
if(cho==7) exit(0);
switch(cho)
{
case 1:t->pri();break;
case 2:t->input();cout<<t->n;break;
case 3:t->search();break;
case 4:t->edt();break;
case 5:t->del(); break;
case 7:exit(0);
}
cout<<"返回功能列表? (y/n) "<<endl;
char yn;
cin>>yn;
if(yn=='y')goto c1;
else if(yn=='n') exit(0);
}
编译后提示:
1>------ 已启动生成: 项目: 课程设计, 配置: Debug Win32 ------
1>生成启动时间为 2012/2/27 15:01:45。
1>InitializeBuildStatus:
1> 正在创建“Debug\课程设计.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1> 学生考勤系统-课程设计.cpp
1>c:\users\desktop\课程设计-酒店管理系统\课程设计\课程设计\学生考勤系统-课程设计.cpp(17): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\microsoft visual studio 10.0\vc\include\string.h(105) : 参见“strcpy”的声明
1>c:\users\desktop\课程设计-酒店管理系统\课程设计\课程设计\学生考勤系统-课程设计.cpp(18): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\microsoft visual studio 10.0\vc\include\string.h(105) : 参见“strcpy”的声明
1>c:\users\desktop\课程设计-酒店管理系统\课程设计\课程设计\学生考勤系统-课程设计.cpp(19): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:\microsoft visual studio 10.0\vc\include\string.h(105) : 参见“strcpy”的声明
1>c:\users\desktop\课程设计-酒店管理系统\课程设计\课程设计\学生考勤系统-课程设计.cpp(35): error C2872: “max”: 不明确的符号
1> 可能是“c:\users\瞿龙俊\desktop\课程设计-酒店管理系统\课程设计\课程设计\学生考勤系统-课程设计.cpp(9) : const int max”
1> 或 “max”
1>
1>生成失败。
1>
1>已用时间 00:00:00.39
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========