问题描述
- 编译成功,运行出错,怎么回事? 帮帮忙呀
-
我是初学者,编了好久,希望有人看看 ,帮帮忙咯!#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;
}
解决方案
运行某些功能模块时 出现 unhandled exception in cpp1.exe:0xC0000005;access violation
解决方案二:
0xC0000005
明显说明你有指针没有分配空间。
解决方案三:
- 检查 xxx.cpp 里有是否已经包含 #include "stdafx.h"
- 执行【build】—>clean
- 删除以下四个文件
xxx.ncb文件 (支持ClassView )
xxx.aps文件 (支持ResourceView)
xxx.opt文件 (保存工作空间的配置,删除此文件后,xxx的工作空间配置将恢复到默认的设置)
xxx.clw文件 (支持ClassWizard)
- 重新编译
解决方案四:
没包含那个文件呀 怎样删除那四个文件呢?不知道在哪里
解决方案五:
main里面的sqlist L是一个结构,没有分配空间就直接使用了。
解决方案六:
喂喂喂#include 好不好
解决方案七:
你的代码指针出错了,这种问题用编译器断点调试一下是最简单的,而且你能更快的熟悉你的代码逻辑。