| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 472 人关注过本帖
标题:[求助]模板问题
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
 问题点数:0 回复次数:2 
[求助]模板问题

// --mylist.h--
#ifndef LIST_H
#define LIST_H
#include <iostream>
#include <fstream>
using namespace std;
template<class T>
struct CNode
{
T info;
CNode<T> *next;
};

template<class T>
class CList
{
CNode<T> *tail; //表尾指针
CNode<T> *head; //表头指针
public:
CList(){tail=head=NULL;}
~CList(){Destroy();}
void Destroy(){delete node;delete head;}
//查找
bool Search(T &inform)
{
CNode<T>*newNode=head;
while(newNode)
{
if(newNode->info==inform){cout<<inform<<endl;return true;}
newNode=newNode->next;
}
cout<<"Not found !"<<endl;
return false;
}
//插入---按顺序插入做法
void Insert(T inform)
{
CNode<T>*newNode=new CNode<T>;
newNode->info=inform;
newNode->next=NULL;
tail->next=newNode;
tail=newNode;
delete newNode;
}
//删除
void Delete(T inform)
{
bool found=false;
CNode<T>*newNode=head;
CNode<T>*nextNode;
while(newNode)
{
nextNode=newNode->next;
if(newNode->info==inform)
{
head=nextNode;
found=true; //找到该数据
delete newNode;
}
newNode=newNode->next;
}
if(!found)cout<<"Cann't delete a nonentity information !"<<endl;
}
//退出并保存数据
void quitAndSave(ofstream &os)
{
for(CNode<T> *tempNode=head;tempNode!=NULL;tempNode=tempNode->next)os<<tempNode->T<<endl;
}
};
#endif //LIST_H

搜索更多相关主题的帖子: 模板 
2006-06-15 14:16
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

/--student.h--
#ifndef CSTUDENT_H
#define CSTUDENT_H

#include <iostream>
#include <fstream>
using namespace std;

class Cstudent
{
//---重载stream运算符---//
friend ostream & operator<<(ostream &os,const Cstudent & stu)
{
os<<stu.ID<<" "<<stu.name<<" "<<stu.total<<" "<<stu.average<<" "<<endl;
return os;
}
friend istream& operator>>(istream &ins,Cstudent& stu)
{
cout<<"学 号: ";ins>>stu.ID;
cout<<endl<<"姓 名: ";ins>>stu.name;
cout<<endl<<"总 分: ";ins>>stu.total;
cout<<endl<<"平均分 : ";ins>>stu.average;
return ins;
}
friend ofstream& operator<<(ofstream &ous,const Cstudent& stu)
{
ous<<stu.ID<<" "<<stu.name<<" "<<stu.total<<" "<<stu.average<<" "<<endl;
return ous;
}
friend ifstream& operator>>(ifstream &ins,Cstudent& stu)
{
ins>>stu.ID>>stu.name>>stu.total>>stu.average;
return ins;
}
private:
float total,average;
char *ID,*name;
public:
bool operator==(const Cstudent &c){return (ID==c.ID);}
//------静态成员-------
static int studentsNumber; //记录学生人数
static void addStuNumber(){studentsNumber++;} //更新学生人数
static void delStuNumber(){studentsNumber--;} //更新学生人数
//无参构造函数
Cstudent(){total=0;average=0;ID=NULL;name=NULL;}
//缺省构造函数
Cstudent(char *id,char *na=NULL,float t=0,float a=0):total(t),average(a)
{
ID=new char[strlen(id)+1];
strcpy(ID,id);
if(na!=NULL)
{
name=new char[strlen(na)+1];
strcpy(name,na);
}
else name=NULL;
}
//拷贝构造函数
Cstudent(const Cstudent& stu)
{
total=stu.total;average=stu.average;
ID=new char[strlen(stu.ID)];strcpy(ID,stu.ID);
name=new char[strlen(stu.name)];strcpy(name,stu.name);
}
//析构函数
~Cstudent(){delete ID;delete name;}
void setName(char *na)
{
delete name;
name=new char[strlen(na)+1];
strcpy(name,na);}

void setID(char *id)
{
delete ID;
ID=new char[strlen(id)+1];
strcpy(ID,id);
}
void setTotal(float t){total=t;}
void setAve(float ave){average=ave;}
};
#endif //CSTUDENT_H

[此贴子已经被作者于2006-6-15 14:27:28编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-15 14:18
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

// main.cpp
#include <iostream>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include "student.h"
#include "mylist.h"
using namespace std;

CList<Cstudent> list;
int Cstudent::studentsNumber=0;

ifstream ins("StudentsInfo.txt");
// fuction definition...
void menu();
void getChoice();
int main()
{
if(!ins){cout<<"输入错误的文件名,重新输入 !"<<endl;exit(1);}
//所有数据压入链表
Cstudent aStudent;
while(ins>>aStudent){list.Insert(aStudent);Cstudent::addStuNumber();}
menu();
getChoice();
system("pause");
return 0;
}
void menu()
{
cout<<"*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_"<<endl;
cout<<" 学 生 成 绩 管 理 系 统 (简易版 ) "<<endl;
cout<<"*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_"<<endl;
cout<<endl;
cout<<"1. 查 找 学 生 信 息"<<endl<<endl;
cout<<"2. 插 入 学 生 信 息"<<endl<<endl;
cout<<"3. 删 除 学 生 信 息"<<endl<<endl;
cout<<"4. 退 出 并 保 存 信 息"<<endl;
}
void getChoice()
{
int choice=getch();
switch(choice)
{
case 1:
cout<<"输入学号: ";char stuNum[10];cin>>stuNum;
list.Search(Cstudent(stuNum));
break;
case 2:{Cstudent inform;cin>>inform;
list.Insert(inform);Cstudent::addStuNumber();
break;}
case 3:
cout<<"输入学号: ";char Num[10];cin>>Num;
list.Delete(Cstudent(Num));Cstudent::delStuNumber();
break;
case 4:{ins.close();ofstream os("StudentsInfo.txt");
list.quitAndSave(os);os.close();exit(1);}
default:cout<<"Error choice --- Choice again!"<<endl;
}
Sleep(1000);system("cls");
menu();
getChoice();
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-15 14:18
快速回复:[求助]模板问题
数据加载中...
 
   



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

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