qq_28453017
路飞先生
采纳率0%
2015-07-10 09:40

编译成功,运行出错,怎么回事? 帮帮忙呀

5

我是初学者,编了好久,希望有人看看 ,帮帮忙咯!

#include
#include
#include
using namespace std;
typedef struct {
string time; //缺课日期
string order; //缺课节数
string status[3]; //缺课课程,姓名,缺课类型
}situation;
//顺序表的定义
#define MAXSIZE 1000
typedef struct {
situation *elem; //指向数据元素的基地址
int length; //线性表的当前长度

}sqlist;
void InitList_Sq(sqlist &L){
L.elem=new situation[MAXSIZE];
if(!L.elem) exit(0);
L.length=0;
}
int duhui(ifstream ifile,sqlist &L){
int i=0,j=0,n;
string c[100];
int jiexi(string s,string t,int a);
ifile.open("H:\课程设计(向誉)\data.txt");
while(getline(ifile,c[i])){
i++;
}
n=i;
ifile.close();
for(i=0;i j=jiexi(c[i],L.elem[i].time,0);
j=jiexi(c[i],L.elem[i].order,j);
j=jiexi(c[i],L.elem[i].status[0],j);
j=jiexi(c[i],L.elem[i].status[1],j);
j=jiexi(c[i],L.elem[i].status[2],j);
}
return n;
}
int jiexi(string s,string t,int a){
int i=0;
while(s[a]!='\40'){
t[i]=s[a];
i++;
a++;
}
return a+1;
}
void input(sqlist &L){
int i,n;
ofstream afile("H:\\课程设计(向誉)\\data.txt",ios::app);
if(!afile){
cerr exit(1);
}
cout cin>>n;
L.length=n;
for(i=0;i cout //gets(L.elem[i].time);
//gets(L.elem[i].order);
cin>>L.elem[i].time>>L.elem[i].order>>L.elem[i].status[0]>>L.elem[i].status[1]>>L.elem[i].status[2];
afile<<L.elem[i].time<<" "<<L.elem[i].order<<" "<<L.elem[i].status[0]<<" "<<L.elem[i].status[1]<<" "<<L.elem[i].status[2]<<endl;
}
afile.close();
}

void adjust(sqlist L){
string name;
int i,a,n;
ifstream afile("H:\课程设计(向誉)\data.txt");
n=duhui(afile,L);
afile.close();
cout<<"输入要修改的学生姓名:";
cin>>name;
for(i=0;i if(name==L.elem[i].status[1]){
cout cout cout cout cin>>a;
switch(a)
{
case 1: cout<<"输入修改值:";cin>>L.elem[i].time;break;
case 2: cout<<"输入修改值:";cin>>L.elem[i].order;break;
case 3: cout<<"输入修改值:";cin>>L.elem[i].status[0];break;
case 4: cout<<"输入修改值:";cin>>L.elem[i].status[2];break;
}
cout<<"修改后的信息:"<<endl;
cout<<L.elem[i].time<<" "<<L.elem[i].order<<" "<<L.elem[i].status[0]<<" "<<L.elem[i].status[1]<<" "<<L.elem[i].status[2];
}
}
ofstream bfile("H:\课程设计(向誉)\data.txt");
for(i=0;i<n;i++){
bfile<<L.elem[i].time<<" "<<L.elem[i].order<<" "<<L.elem[i].status[0]<<" "<<L.elem[i].status[1]<<" "<<L.elem[i].status[2]<<endl;
}

}

void checkname(sqlist L){
int i,j=0,a[100],count,n;
string name;
void astime(sqlist &L,int a[],int n);
ifstream afile("H:\课程设计(向誉)\data.txt");
n=duhui(afile,L);
afile.close();
cout<<"输入要查询学生姓名:";
cin>>name;
for(i=0;i<n;i++){
if(name==L.elem[i].status[1]){
a[j]=i;
j++;
}
}
count=j;
astime(L,a,count);
for(i=0;i<count;i++){
cout<<L.elem[a[i]].time<<" ";
cout<<L.elem[a[i]].order<<" ";
cout<<L.elem[a[i]].status[0]<<" ";
cout<<L.elem[a[i]].status[1]<<" ";
cout<<L.elem[a[i]].status[2]<<endl;
}
}

void astime(sqlist &L,int a[],int n){
int t;
for(int i=0;i for(int j=0;j if(L.elem[a[j]].time>L.elem[a[j+1]].time){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}else if(L.elem[a[j]].time==L.elem[a[j+1]].time){
if(L.elem[a[j]].order>L.elem[a[j+1]].order){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;

             }
         }
     }
 }

}

void checktime1(sqlist &L){
int i,j=0,p=0,n,count=0,d=0,s;
int a[100],b[100],c[100];
string name[100],rname[100];
string time1,time2;
void asclass(sqlist &L,string r[],int a[],int n);
ifstream afile("H:\课程设计(向誉)\data.txt");
s=duhui(afile,L);
afile.close();
cout<<"输入时间段:"; //2008-04-28 2008-04-30
cin>>time1>>time2;
for(i=0;i if(L.elem[i].time>=time1&&L.elem[i].time<=time2){
name[j]=L.elem[i].status[1];
c[j]=i; //辅助数组
j++;
}
}
n=j;
for(i=0;i a[i]=0; //辅助数组
b[i]=0; //辅助数组 旷课节数
}
for(i=0;i for(j=0;j if(name[i]==name[j]&&a[j]==0){
a[j]=1;
count+=((L.elem[c[j]].order[2]-L.elem[c[j]].order[0])+1)/2;
d++;
}
}
if(d>0){
b[p]=count; //计算旷课节数
rname[p]=name[i];
p++;
count=0;
}
}
asclass(L,rname,b,p);
cout< for(i=0;i cout }
}
void asclass(sqlist &L,string r[],int a[],int n){
int t;
string st;
for(int i=0;i for(int j=0;j if(a[j] t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}else if(a[j]==a[j+1]){
if(r[j]>r[j+1]){
st=r[j+1];
r[j+1]=r[j];
r[j]=st;
}
}
}
}
}

void checktime2(sqlist &L){
int i,j=0,k=0,p=0,n,count=0,s;
int a[100],b[100];
string cls[100],rcls[100];
string time1,time2;
ifstream afile("H:\课程设计(向誉)\data.txt");
s=duhui(afile,L);
afile.close();
cout<<"输入时间段:"; //2008-04-28 2008-04-30
cin>>time1>>time2;
for(i=0;i if(L.elem[i].time>=time1&&L.elem[i].time<=time2){
cls[j]=L.elem[i].status[0];
j++;
}
}
n=j;
for(i=0;i a[i]=0; //辅助数组
b[i]=0; //辅助数组 旷课人次
}
for(i=0;i for(j=0;j if(cls[i]==cls[j]&&a[j]==0){
a[j]=1;
count++;
}
}
if(count>0){
b[p]=count;
rcls[p]=cls[i];
p++;
count=0;
}

 }
 asclass(L,rcls,b,p); //b:旷课人次
 cout<<time1<<"至"<<time2<<"期间旷课情况:"<<endl;
 for(i=0;i<n;i++){
     cout<<rcls[i]<<" "<<"旷课人次:"<<b[i]<<endl;
 }

}

void display(sqlist &L){
int i=0;
string a[100];
ifstream afile("H:\课程设计(向誉)\data.txt",ios::in);
if(!afile){
cerr<<"open error!"<<endl;
exit(1);
}
while(getline(afile,a[i])){
cout<<a[i]<<endl;
i++;
}
afile.close();
}

int main(){
int a;
sqlist L;
InitList_Sq(L);
cout<<"(1).录入学生的缺课记录"< cout cout cout cout cout cout cin>>a;
while(a!='7'){

     switch(a){
     case 1: input(L);break;
     case 2: adjust(L);break;
     case 3: checkname(L);break;
     case 4: checktime1(L);break;
     case 5: checktime2(L);break;
     case 6: display(L);break;
     case 7: return 0;
     }
     cin>>a;
 }
 return 0;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • oyljerry oyljerry 6年前

    你的代码指针出错了,这种问题用编译器断点调试一下是最简单的,而且你能更快的熟悉你的代码逻辑。

    点赞 评论 复制链接分享
  • Genius_danny Genius_danny 6年前

    喂喂喂#include 好不好

    点赞 评论 复制链接分享
  • save4me save4me 6年前

    main里面的sqlist L是一个结构,没有分配空间就直接使用了。

    点赞 评论 复制链接分享
  • qq_28453017 路飞先生 6年前

    没包含那个文件呀 怎样删除那四个文件呢?不知道在哪里

    点赞 评论 复制链接分享
  • frank_20080215 frank_20080215 6年前
    1. 检查 xxx.cpp 里有是否已经包含 #include "stdafx.h"

    2. 执行【build】—>clean

    3. 删除以下四个文件

      xxx.ncb文件 (支持ClassView )

      xxx.aps文件 (支持ResourceView)

      xxx.opt文件 (保存工作空间的配置,删除此文件后,xxx的工作空间配置将恢复到默认的设置)

      xxx.clw文件 (支持ClassWizard)

    4. 重新编译

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前

    0xC0000005
    明显说明你有指针没有分配空间。

    点赞 评论 复制链接分享
  • qq_28453017 路飞先生 6年前

    运行某些功能模块时 出现 unhandled exception in cpp1.exe:0xC0000005;access violation

    点赞 评论 复制链接分享

相关推荐