C++程序设计_通讯录程序
信息学院课程设计
题 目: 通讯录程序设计
姓 名: _ ___
学 号: __ __
班 级:
课 程: C++程序设计
任课教师: 黄超 ____
2012年5月28日
课程设计任务书及成绩评定
概要
本次课程设计是利用C++做了一个班级通讯录,本次课程设计主要使 用类与对象、数组与指针等方法. 通过本次通讯录的课程设计熟悉运用C++语言, 主要包括数组与指针, 类与对象,string, 作用域等,通过数组和指针解决数据级对象之间的联系和协调,经过类与对象的定义,建立函数等方法输入,再进行运行,最后实现通讯录中的输入、排序输出、修改、删除的功能。
关键词:C++,面向对象,数组,指针
目录
一、设计任务分析···················································1
二、模块设计·······················································1
三、主要数据结构··················································2
四、源代码·························································3
五、运行界面······················································17
六、心得体会······················································19
七、参考文献······················································19
I
一、 设计任务分析
此次程序设计需要实现以下功能:
1) 通讯录编辑(添加、删除);
2) 按不同的项进行查找;
3) 对已存在的通讯录按不同的项排序;
4) 将通讯录写入文件;
5) 从文件读入通讯录。
二、 模块设计
本次程序设计主要设计了六个模块(主要是:a.add(),a.del(),a.correct(),a.find1(),a.list1(),a.read(),a.write())
a.add()函数用于通讯录中的信息进行添加
a.del()函数用于通讯录中的信息进行删除
a.correct()函数用于通讯录中的信息进行修改
a.find1()函数用于通讯录中的信息进行查找
a.list1()函数用于通讯录中的信息进行排序
a.read()函数用于从文本文件中读取信息
a.write()函数用于将信息写入文本文件
三、 主要数据结构
结构数组:
struct student //结构体
{
char no[13]; //学号
char name[20]; //姓名
char address[100]; //地址
char tel_no[12]; //电话
char post_code[7]; //邮编
char e_mail[40]; //E-mail
}
class inter //派生类
{
private: //派生类增加或替代的私有成员
student st[35];
public: //派生类增加或替代的公有成员
void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);
//成员函数,添加联系人
void del(char name[20]);
//成员函数,删除联系人
void find1(char no[13]);
//成员函数,按学号查找联系人
void find2(char name[20]);
//成员函数,按姓名查找联系人
void list1();
//成员函数,排序联系人
void list2();
//成员函数,排序联系人
int correct(char name[20]);
//成员函数,修改联系人
void read();
//成员函数,读取文本文件
void write();
//成员函数,写入文本文件
void format();
//成员函数,格式化内存保存的数据
int back()
//成员函数,返回首页
void print(int i)
//成员函数,输出显示
}
四、 源代码
#include
#include
#include
struct student //结构体
{
char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7];
char e_mail[40];
};
class inter
{
private:
student st[35];
public:
void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);
void del(char name[20]); void find1(char no[13]); void find2(char name[20]); void list1(); void list2(); int correct(char name[20]); void read(); void write(); int back() { } cout>back; if(back!='0') return 1; else return 0; void print(int i) { cout
cout
cout
cout
}
};
//主函数 首页
int main()
{
inter a; char select1; cout
top:cout
>select1; switch(select1) { case '1':cout>select2; switch(select2) { case '1':cout
cout>name; cout>address; cout>tel_no; cout>post_code; cin>>e_mail; a.add(no,name,address,tel_no,post_code,e_mail); cout>back_add; if(back_add!='0') goto top; else goto bottom; break; cout>name2; a.del(name2); cout>back_del; if(back_del!='0') goto top; else goto bottom; break; case '3':cout>name3; if(a.correct(name3)) goto top; else goto bottom; break; break; case '2':cout
cout>select3; switch(select3) { case '1':char name4[20]; cout>name4; a.find2(name4); char back_f1; cin>>back_f1; if(back_f1!='0') goto top; else goto bottom; cout>no4; a.find1(no4); cout>back_f2; if(back_f2!='0') goto top; else goto bottom; break; break; case '3':a.write(); cout>back_w; if(back_w!='0') goto top; else goto bottom; break; case '4':cout
switch(select4) { case '1':a.list1(); cout>back; if(back!='0') goto top; else goto bottom; break; case '2':a.list2(); cout>back1; if(back1!='0') goto top; else goto bottom; break; } break; case '5':a.read(); cout>back_r; if(back_r!='0') goto top; else goto bottom; break;
}
bottom:cout
} return 0;
//添加联系人
void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40])
{
int x=1; for(int i=0;i
} } strcpy(st[i].address,address); strcpy(st[i].e_mail,e_mail); strcpy(st[i].name,name); strcpy(st[i].no,no); strcpy(st[i].post_code,post_code); strcpy(st[i].tel_no,tel_no); x=0; if(x==0) break;
}
//删除联系人
void inter::del(char name[20])
{ int x=1;
for(int i=0;i
{
strcpy(st[i].address,"0");
strcpy(st[i].e_mail,"0"); strcpy(st[i].name,"0"); strcpy(st[i].no,"0"); strcpy(st[i].post_code,"0");
strcpy(st[i].tel_no,"0");
x=0;
cout
}
}
if(x==1) cout
}
//修改联系人
int inter::correct(char name[30])
{
int x; for(int i=0;i
cout>select; switch(select) { case '1':cout>name1; strcpy(st[x].name,name1); cout>no1; strcpy(st[i].no,no1); cout>address1; strcpy(st[x].address,address1); cout>post_code1; strcpy(st[x].post_code,post_code1); cout>tel_no1; strcpy(st[x].tel_no,tel_no1); cout
char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout
}
return 0;
}
//按学号查询联系人
void inter::find1(char no[13])
{
int x,y=1,z=1; for(int i=0;i
else print(x);
}
//按姓名查询联系人
void inter::find2(char name[20])
{
int x,y=1,z=1; for(int i=0;i
} if(y==0) cout
//读取文件
void inter::read()
{
char name1[20]; cout>name1; strcat(name1,".txt"); ifstream file(name1); char line[120]; char no[120]; char name[120]; char address[120]; char post_code[120]; char tel_no[120]; char e_mail[120]; int time=0; file.getline(line,120); while(!file.eof()) { for(int k=0;k
{ strcpy(name,line); time=2; for(int i=0;i
} } for(int j=0;j
} } } } file.getline(line,120,'\n'); file.close();
//写入文件
void inter::write()
{
char name[20]; cout>name; strcat(name,".txt"); ofstream savefile(name); for(int i=0;i
cout
}
//按学号排序
void inter::list1()
{
for(int i=0;i0) { char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(no,st[j].no);
strcpy(st[j+1].no,no); strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name); strcpy(st[j+1].name,name);
strcpy(address,st[j].address);
strcpy(st[j].address,st[j+1].address);
} } } strcpy(st[j+1].address,address); strcpy(tel_no,st[j].tel_no); strcpy(st[j].tel_no,st[j+1].tel_no); strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code); strcpy(st[j].post_code,st[j+1].post_code); strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail); strcpy(st[j].e_mail,st[j+1].e_mail); strcpy(st[j+1].e_mail,e_mail); for(int k=0;k
cout
} }
}
//按姓名排序
void inter::list2()
for(int i=0;i0) { char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; strcpy(no,st[j].no); strcpy(st[j].no,st[j+1].no); strcpy(st[j+1].no,no); strcpy(name,st[j].name); strcpy(st[j].name,st[j+1].name); strcpy(st[j+1].name,name);
strcpy(address,st[j].address);
strcpy(st[j].address,st[j+1].address); strcpy(st[j+1].address,address);
} } strcpy(tel_no,st[j].tel_no); strcpy(st[j].tel_no,st[j+1].tel_no); strcpy(st[j+1].tel_no,tel_no); strcpy(post_code,st[j].post_code); strcpy(st[j].post_code,st[j+1].post_code); strcpy(st[j+1].post_code,post_code); strcpy(e_mail,st[j].e_mail); strcpy(st[j].e_mail,st[j+1].e_mail); strcpy(st[j+1].e_mail,e_mail); } for(int k=0;k
} print(k); x=1; } if(x==1) { cout
五、 运行界面
运行程序,首页显示如下:
选择添加记录,填入相关信息,运行图如下:
选择保存文件,填入文件名,运行图如下:
第 18 页,共19页
六、 心得体会
课程设计是培养学生综合运用所学知识 , 发现、提出、分析和解决实际问题, 锻炼实践能力的重要环节, 是对我的实际工作能力的具体训练和考察过程. 随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。
我做的是班级通讯录的课程设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。更加是第一次做课程设计,所以在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!
七、 参考文献
[1]《C++程序设计》 谭浩强 著 清华大学出版社
[2]《C++面向对象程序设计》 姚全珠 著 电子工业出版社
[3]《C++程序设计课程设计》 刘振安,刘燕君,孙枕 著 机械工业出版社
第 19 页,共19页