标题:求教各位大神看看我的程序是哪里出错了
只看楼主
qulongjun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-2-23
结帖率:0
已结贴  问题点数:20 回复次数:2 
求教各位大神看看我的程序是哪里出错了


#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 个 ==========
搜索更多相关主题的帖子: class include public record 
2012-02-27 15:02
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
得分:10 
strcpy max定义出错.检查头文件

成功贵在坚持
2012-02-28 08:07
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:10 
加上
#include <cstring>
实际上就是c的string.h


2012-02-29 13:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361713-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.160531 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved