| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 442 人关注过本帖
标题:大家看看这个程序为什么不能运行??很急啊!能改到能运行么大家??
只看楼主 加入收藏
sontion
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-26
收藏
 问题点数:0 回复次数:0 
大家看看这个程序为什么不能运行??很急啊!能改到能运行么大家??

#include<iostream>

#include<fstream>

#include<string>

#include<iomanip>

using namespace std;

typedef struct DataType //定义所有信息

{

char number[20]; //学号

char name[20]; //姓名

char birthday[20]; //生日

char sex[6]; //性别

char telephone[10]; //电话号码

char address[20]; //地址

};

struct student //定义学生信息

{

DataType data;

student *next;

};

class txl

{

private:

student *head; //头指针

student *currptr; //当前指针

public:

txl();

~txl();

void Creat(); //新建学生通讯录

void Insert(); //向学生通讯录插入学生信息

void Delete(); //在通讯录删除学生信息

void WriteFile(); //从文件中读取通讯录的信息

void ReadFile(); //向文件写入学生通讯录信息

void Search(); //在通讯录中查询学生信息

void Display(); //在屏幕中输出全部学生信息

void Exit(); //退出

};

//通讯录.cpp

#include"通讯录.h"

txl::txl() //构造函数

{

head=currptr=NULL;

};

txl::~txl() //释构函数

{

student *temp=head; //释放空间

while(temp)

{

delete temp;

}

}

//新建学生通讯录

// 功能:采用头插入的方式建琏,并询问是否保存到文件

// 参数:无

//返回值:无

void txl::Creat()

{

cout<<"你想要建立多少个学生的通讯录:";

int i,n;

cin>>n;

for(i=0;i<n;i++) //输入学生信息

{

currptr=new student;

cout<<"请输入学生的学号:";

cin>>currptr->data.number;

cout<<"请输入学生的姓名:";

cin>>currptr->data.name;

cout<<"请输入学生的生日:";

cin>>currptr->data.birthday;

cout<<"请输入学生的性别:";

cin>>currptr->data.sex;

cout<<"请输入学生的电话号码:";

cin>>currptr->data.telephone;

cout<<"请输入学生的地址:";

cin>>currptr->data.address;

currptr->next=head; //头插入建琏

head=currptr;

}

};

//向学生通讯录插入学生信息

// 功能:采用头插入的方式把结点插进去,并询问是否保存到文件

// 参数:无

//返回值:无

void txl::Insert()

{

cout<<"你想要在哪个位置插入:";

int k,n=0; //k记录插入位置,n记录琏表长度

cin>>k;

student *p=head,*q=NULL,*t=head;

while(t)

{

t=t->next;

n++;

}

if(k>n+1||k<1) //不存在此位置,不能存入

{

cout<<"此位置不合法";

}

else{

currptr=new student;

cout<<"请输入你要插入的学生的信息!"<<endl; //需插入的学生信息

cout<<"请输入学生的学号:";

cin>>currptr->data.number;

cout<<"请输入学生的姓名:";

cin>>currptr->data.name;

cout<<"请输入学生的生日:";

cin>>currptr->data.birthday;

cout<<"请输入学生的性别(male/female):";

cin>>currptr->data.sex;

cout<<"请输入学生的电话号码:";

cin>>currptr->data.telephone;

cout<<"请输入学生的地址:";

cin>>currptr->data.address;

if(k==1) //建琏

{

currptr->next=head;

head=currptr;

}

else

{

for(int i=1;i<k;i++)

{

q=p;

p=p->next;

}

q->next=currptr;

currptr->next=p;

}

}

}

//在通讯录删除学生信息

// 功能:删除结点,并询问是否从文件中删除(采用覆盖原有文件的形式)

// 参数:无

//返回值:无

void txl::Delete()

{

if(head!=NULL) //琏表存在时就做删除操作

{

cout<<"你想要在哪个位置删除:";

int k,n=0; //k记录删除位置,n记录琏表长度

student *p=head,*q=head->next,*t=head;

cin>>k;

while(t)

{

t=t->next;

n++;

}

if(k>n||k<1)

cout<<"This position don't exist!"<<endl; //所要删除位置超出范围

else

{

if(k==1)

head=head->next;

else

{

for(int i=1;i<k-1;i++)

{

p=q;

q=q->next;

}

if(q==NULL)p=NULL;

else

p->next=q->next;

}

}

}

}

//向文件写入学生通讯录信息

// 功能:把琏表中的结点都保存到文件中

// 参数:琏表的一个结点

//返回值:无

void txl::WriteFile()

{

student *s=head;

ofstream fop;

fop.open("通讯录.dat",ios::binary|ios::trunc); //以二进制形式打开文件//覆盖原来的文件且重新保存删除后的内容

if(!fop)

{

cout<<"通讯录.dat can't open!"<<endl;

abort();

}

char Y_N;

cout<<"Would you like to save it in file(Y/N)"; //询问是否保存到文件中

cin>>Y_N;

while(Y_N!='Y'&&Y_N!='y'&&Y_N!='N'&&Y_N!='n') //使输入为yes或no

{

cout<<"Please input 'Y' or 'N'";

cin>>Y_N;

}

if(Y_N=='Y'||Y_N=='y') //保存

{

while(s)

{

while(fop.write((char *)&s->data,sizeof(s->data)))

{

s=s->next;

flush(cout);

}

}

cout<<"Successfully Save File!"<<endl;

}

fop.close();

}

//从文件中读取通讯录的信息

// 功能:从文件中读取内容,并建琏

// 参数:无

//返回值:无

void txl::ReadFile()

{

currptr=new student;

ifstream fip("通讯录.dat",ios::in|ios::binary); //以二进制形式打开文件

while(fip.read((char *)&currptr->data,sizeof(currptr->data)))

{

currptr->next=head;

head=currptr;

currptr=new student;

}

fip.close();

delete currptr;

}

//在通讯录中查询学生信息

// 功能:按姓名或学号的形式查找

// 参数:无

//返回值:无

void txl::Search()

{

cout<<"你可以通过以下方式查询:"<<endl;

cout<<"1、按学号查询"<<endl;

cout<<"2、按姓名查询"<<endl;

cout<<"你想要按什么方式查询(1 or 2):";

char ch;

cin>>ch;

cout<<"你要查询的信息是:";

while(ch!='1'&&ch!='2')

{

cout<<endl;

cout<<"操作错误,请重新输入:";

cin>>ch;

}

student *cu=head;

if(ch=='1') //按学号查询

{

char num[20];

cin>>num;

while(cu!=NULL)

{

if(strcmp(cu->data.number,num)==0) //判断是否是所查学号

{

cout<<"你要找的学生信息为:"<<endl;

cout<<cu->data.number<<" "<<cu->data.name<<" "<<cu->data.birthday<<" "<<cu->data.sex<<" "

<<cu->data.telephone<<" "<<cu->data.address<<endl;

break;

}

cu=cu->next;

}

if(cu==NULL)

cout<<"不存在这个学生!"<<endl;

}

else //按姓名查询

{

char na[20];

cin>>na;

while(cu!=NULL)

{

if(strcmp(cu->data.name,na)==0) //判断是否是所查姓名

{

cout<<"你要找的学生信息为:"<<endl;

cout<<cu->data.number<<" "<<cu->data.name<<" "<<cu->data.birthday<<" "<<cu->data.sex<<" "

<<cu->data.telephone<<" "<<cu->data.address<<endl;

break;

}

cu=cu->next;

}

if(cu==NULL) //查询不到

cout<<"不存在这个学生!"<<endl;

}

}

//在屏幕中输出全部学生信息

// 功能:输出琏表的每一个内容

// 参数:无

//返回值:无

void txl::Display()

{

if(head==NULL)

cout<<"通讯录里没有内容!\n\n";

else{

student *k=head;

cout<<setiosflags(ios::left)<<setw(10)<<"学号"<<setiosflags(ios::left)<<setw(10)<<"姓名"

<<setiosflags(ios::left)<<setw(10)<<"生日"<<setiosflags(ios::left)<<setw(6)<<"性别"

<<setiosflags(ios::left)<<setw(10)<<"电话号码"<<setiosflags(ios::left)<<setw(10)

<<"地址"<<endl; //设置左对齐输出

while(k)

{

cout<<setiosflags(ios::left)<<setw(10)<<k->data.number<<setw(10)<<setiosflags(ios::left)

<<k->data.name<<setw(10)<<setiosflags(ios::left)<<k->data.birthday<<setw(6)

<<setiosflags(ios::left)<<k->data.sex<<setw(10)<<setiosflags(ios::left)

<<k->data.telephone<<setw(10)<<setiosflags(ios::left)<<k->data.address<<endl;

k=k->next;

}

cout<<endl;

}

}

// 功能:告知结束运行系统

// 参数:无

//返回值:无

void txl::Exit() //退出

{

WriteFile(); //询问是否保存对文件的修改

cout<<"感谢使用本系统!"<<endl;

exit(1); //命令整个程序退出;

}

//main.cpp

#include<iostream>

#include"通讯录.h"

using namespace std;

int main()

{

cout<<"****************欢迎使用学生通讯录管理系统****************"<<endl;

cout<<"#========================================================#"<<endl;

cout<<"#*********在这个管理系统中,我们可以做以下的操作*********#"<<endl;

cout<<"#*********1、新建学生通讯录******************************#"<<endl;

cout<<"#*********2、向学生通讯录插入学生信息********************#"<<endl;

cout<<"#*********3、在通讯录删除学生信息************************#"<<endl;

cout<<"#*********4、在通讯录中查询学生信息**********************#"<<endl;

cout<<"#*********5、在屏幕中输出全部学生信息********************#"<<endl;

cout<<"#*********6、退出(并保存修改)****************************#"<<endl;

cout<<"#========================================================#"<<endl;

char ch;

txl t;

t.ReadFile(); //读取文件里的信息

cout<<"已从文件中读取内容了!\n";

do{

cout<<"********************************************************\n";

cout<<"**1、新建//2、插入//3、删除//4、查询//5、显示//6、退出**"<<endl;

cout<<"********************************************************\n";

cout<<"What do you want to do:";

cin>>ch;

while(ch>'6'||ch<'1') //使选择范围在1~6

{

cout<<"Error operation!Please input again:";

cin>>ch;

}

switch(ch)

{

case '1':t.Creat();break; //1、新建学生通讯录

case '2':cout<<"现在学生的信息如下:"<<endl;

t.Display();

t.Insert();break; //2、向学生通讯录插入学生信息

case '3':cout<<"现在学生的信息如下:"<<endl;

t.Display();

t.Delete();break; //3、在通讯录删除学生信息

case '4':cout<<"现在学生的信息如下:"<<endl;

t.Display();

t.Search();break; //5、在通讯录中查询学生信息

case '5':t.Display();break; //6、在屏幕中输出全部学生信息

case '6':t.Exit();break; //7、退出

}

}while(1);

return 0;

}

搜索更多相关主题的帖子: 运行 
2007-03-12 20:33
快速回复:大家看看这个程序为什么不能运行??很急啊!能改到能运行么大家??
数据加载中...
 
   



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

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