课程设计

来源:互联网 发布:利用淘宝双十一赚钱 编辑:程序博客网 时间:2024/05/19 06:16

题目2.李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:

1每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。

2作为一个完整的系统,应具有友好的界面和较强的容错能力。


代码:

(Card.h):

<pre name="code" class="cpp">//名片类:姓名name,性别sex,住址loca,邮编mail,年龄age,电话tel,QQ,微信wechat,生日birth。#include<iostream>#include<string>#include <fstream>using namespace std;class Card{private:string name;string sex;string loca;string mail;string age;string tel;string QQ;string wechat;long birth;public:Card(){}Card(Card &p);//复制构造函数void setCard();bool checkName(string n){return name.compare(n)==0;}void printCard();void readFile(ifstream &read);void writeFile(ofstream &write);};Card::Card(Card &p){name=p.name;sex=p.sex;loca=p.loca;mail=p.mail;age=p.age;tel=p.tel;QQ=p.QQ;wechat=p.wechat;birth=p.birth;}void Card::setCard(){cout<<"请输入姓名:";cin>>name;cout<<"请输入性别:";cin>>sex;cout<<"请输入住址:";cin>>loca;cout<<"请输入邮编:";cin>>mail;cout<<"请输入年龄:";cin>>age;cout<<"请输入电话:";cin>>tel;cout<<"请输入QQ号码:";cin>>QQ;cout<<"请输入微信号:";cin>>wechat;cout<<"请输入生日(如20140102):";cin>>birth;}void Card::printCard(){cout<<name<<'\t'<<sex<<'\t'<<loca<<'\t'<<mail<<'\t'<<age<<'\t'<<tel<<'\t'<<QQ<<'\t'<<wechat<<'\t'<<birth<<'\n';}void Card::readFile(ifstream &read){read>>name>>sex>>loca>>mail>>age>>tel>>QQ>>wechat>>birth;}void Card::writeFile(ofstream &write){write<<name<<'\n'<<sex<<'\n'<<loca<<'\n'<<mail<<'\n'<<age<<'\n'<<tel<<'\n'<<QQ<<'\n'<<wechat<<'\n'<<birth<<'\n';}


(DoublelyLinkedList.h):

<pre name="code" class="cpp">#include<iostream>using namespace std;template <class DataType>struct DulNode{DataType data;DulNode<DataType> *prior,*next;};template <class DataType>class DoublelyLinkedList{public:DoublelyLinkedList();//DoublelyLinkedList(DataType a[],int n);~DoublelyLinkedList();int Lenth();DataType Get(int i);//int Location(DataType x);void Insert(DataType x,int i);void Delete(int i);//void Print();private:DulNode<DataType> *first;};template <class DataType>DoublelyLinkedList<DataType>::DoublelyLinkedList(){//建立头结点first=new DulNode<DataType>;first->next=NULL;}template <class DataType>DoublelyLinkedList<DataType>::~DoublelyLinkedList(){DulNode<DataType> *p;while(first!=NULL){p=first;first=first->next;delete p;}}template <class DataType>int DoublelyLinkedList<DataType>::Lenth(){int count=0;DulNode<DataType> *p=first->next;while(p!=NULL){p=p->next;count++;}return count;}template <class DataType>DataType DoublelyLinkedList<DataType>::Get(int i){DulNode<DataType> *p=first->next;int count=1;while(p!=NULL&&count<i){p=p->next;count++;}if(p==NULL) throw "位置";else return p->data;}template <class DataType>void DoublelyLinkedList<DataType>::Insert(DataType x,int i){DulNode<DataType> *p=first;int count=0;while(p!=NULL&&count<i-1){p=p->next;count++;}if(p==NULL)throw "位置";else{DulNode<DataType> *s=new DulNode<DataType>;s->data=x;s->prior=p;s->next=p->next;if(p->next!=NULL)p->next->prior=s;p->next=s;}}template <class DataType>void DoublelyLinkedList<DataType>::Delete(int i){DulNode<DataType> *p=first;int count=0;while(p!=NULL&&count<i-1){p=p->next;count++;}if(p==NULL||p->next==NULL) throw "位置";else{DulNode<DataType> *q=p->next;p->next=q->next;if(q->next!=NULL)q->next->prior=p;delete q;}}


(Contacts.cpp):

<pre name="code" class="cpp">#include<iostream>#include <fstream>#include"Card.h"#include"DoublelyLinkedList.h"using namespace std;void title(){cout<<"姓名\t"<<"性别\t"<<"住址\t"<<"邮编\t"<<"年龄\t"<<"电话\t"<<"QQ\t"<<"微信\t"<<"生日\n";}void main(){//建立一个名片链表。DoublelyLinkedList<Card> myContact;Card aCard;
       //建立文件<span style="white-space:pre"></span>ofstream file("联系人.txt",iostream::out);<span style="white-space:pre"></span>file.close();//读取文件ifstream read("联系人.txt",ios::out);if(!read.good()){cout<<"打开数据文件失败!\n";exit(0);}//string first;read>>first;//去掉第一行while(!read.eof()){aCard.readFile(read);myContact.Insert(aCard,myContact.Lenth()+1);}read.close();myContact.Delete(myContact.Lenth());//去掉最后一行//开始操作while(true){cout<<"\n\n\n\t\t\t\t我的通讯录\n\n";cout<<"\t\t1。新建联系人\t\t2。删除联系人\n";cout<<"\t\t3。搜索联系人\t\t4。所有联系人\n\n\n";cout<<"输入序号选择操作(按0退出):\n";int k=0;cin>>k;if(k==1){aCard.setCard();myContact.Insert(aCard,myContact.Lenth()+1);ofstream write("联系人.txt",ios::trunc);for(int k=1;k<=myContact.Lenth();k++)myContact.Get(k).writeFile(write);write.close();}if(k==2){if(myContact.Lenth()==0){cout<<"通讯录中无数据!\n";system("pause");system("cls");continue;}cout<<"输入要删除的联系人姓名:";string name;cin>>name;for(int i=0;i<myContact.Lenth();i++){if(myContact.Get(i+1).checkName(name)){title();myContact.Get(i+1).printCard();cout<<"删除?(Y or N)\n";char d;cin>>d;if(d=='y'||d=='Y'){myContact.Delete(i+1);ofstream write("联系人.txt",ios::trunc);for(int k=1;k<=myContact.Lenth();k++)myContact.Get(k).writeFile(write);write.close();cout<<"已删除!\n";}system("pause");continue;}}cout<<"没有查到联系人\""<<name<<"\"!\n";}if(k==3){if(myContact.Lenth()==0){cout<<"通讯录中无数据!\n";system("pause");system("cls");continue;}cout<<"输入要搜索的联系人姓名:";string name;cin>>name;for(int i=0;i<myContact.Lenth();i++){if(myContact.Get(i+1).checkName(name)){title();aCard.printCard();system("pause");continue;}}cout<<"没有查到联系人\""<<name<<"\"!\n";}if(k==4){if(myContact.Lenth()==0){cout<<"通讯录中无数据!\n";system("pause");system("cls");continue;}title();for(int i=0;i<myContact.Lenth();i++)myContact.Get(i+1).printCard();system("pause");system("cls");continue;}if(k==0){break;}system("pause");system("cls");}}


运行结果:


初界面:



新建联系人:



搜索联系人:



所有联系人:



删除联系人:





学期个人总结------------懒。




0 0
原创粉丝点击