南京航空航天大学。
学号:030930326
姓名:张浪。
一、程序简介。
二、程序功能介绍。
三、源程序。
四、编程心得及其展望。
一、 程序简介:
此程序是对一个简单的通讯记录进行管理。
用户根据以上的各个选项卡进行想要的数据操作,每一个选项都有相关的提示输入输出,简单明了,甚是清晰。
根据程序可以对一个有序链表进行如下操作:
1、 增加一个有序的通讯记录;
2、 删除通讯记录上的一个记录;
3、 显示通讯录上所有的记录;
4、 按姓名查找有关的记录;
5、 输入要修改的姓名查找到后对其进行修改;
6、 从写好的一个正文文件中批量增加记录并排序;
7、 把通讯录上所有记录写入到一个文件内进行保存;
8、 修改当前的排序关键字;
9、 退出程序并把本次所有记录写入到二进制文件中。
下面是对改程序进行相关介绍。
二、程序功能简介:
此程序为一个简单的通讯录。
通讯录是一个简单的数据库,每一个记录包含一个人的所有信息(本程序中信息包含:姓名、办公室**、家庭**、手机号码、e—mail地址)。用于管理一个小群体的通讯记录。
程序的执行过程为:显示主菜单,用户通过在choice:处输入选项(本程序为1~9的数字选项),按回车后接入相关程序段进行执行!
下面对本程序的1~9个选项进行简单的说明:
1、 add record(增加记录):
程序执行时,有相关的提示输入。每次输入一个人的相关数据信息,新记录加入后通讯录按指定的排序顺序排序。本程序中,最初默认按“姓名“进行排序,但是后面的8 sort选项可以进行相应的排列顺序修改(如改为按“办公室**“进行排序)。
2、 delete record(删除记录):
如果要对已建通讯录中的某个人的信息进行删除操作,则选2.
输入待删除记录的姓名,显示该姓名的所有信息,让用户确认是否要删除。
3、 displayall record(显示所有的记录):
执行时程序按设定的排列顺序对通讯录中的所有记录进行显示,每显示10条记录,暂停,用户按键继续。
4、 query by name(按姓名进行查询并显示该记录):
用户根据执行程序时的相关提示,输入要查询记录的姓名,系统根据输入的姓名在已建立的通讯录中查找该记录并且显示在屏幕上。
5、 modify record(按姓名查找并进行修改):
用户根据执行程序时的提示信息输入要修改的记录的姓名,系统根据输入的信息在已建立的通讯记录中查找相关的记录。
本程序段是查找到要修改的记录后显示出来,然后提示用户重新输入该记录的信息(所有信息)。然后重新插入到原有通讯录中重新排序。
6、 add from a text file(从正文文件中批量添加记录到通讯表中):
此程序段是提供给用户事先在建立好的一个文本文件中输入相关的记录,然后通过此选项卡插入到通讯表中。
程序执行是需要用户输入正文文件名。输入程序从相关的文件中追加记录。
7、 write to a text file(将通讯表中的数据写入到正文文件中):
通过该选项用户可以把通讯表中的记录逐一写入到文本文件中保存起来。用户需要输入一个文本文件的名字即可,系统将通讯表中的所有记录写入该文件中。
8、 sort(重新设置排序格式):
首先显示当前的排序关键字,然后提示是否需要修改,用户根据需要回答是否需要修改。
程序中有两种吧、排序格式,一种按姓名牌关键字为“1“,第二种为按办公室**排序,关键字为”2“。改变排序方式的意义是在两种排序方式间的变换。
9、 quit (退出系统):
退出系统是,系统根据程序自动把所有数据写入到二进制文件中,在下一次执行时,系统会由主函数自动把该二进制文件中的记录读入到通讯表中来。
下面为程序的主页面:
三、源程序:
1、以下为程序段:每个函数都有相关的说明解释。
# include <>
# include <>
# include <>
# include <>
# include <>
class node
char name[10];
int officephone;
int homephone;
char mobilephone[15];
char email[20];
node *next;
public:
node(char *name=" int op=0,int hp=0,char *mp=" char *email=" node *next=null);
void show()
void setname(char *name)
void setofficephone(int op)
void sethomephone(int hp)
void setmobilephone(char *mp)
void setemail(char *email)
friend class addrlist;
node::node(char *name,int op,int hp,char *mp,char *email,node *next)
strcpy(name,name);
officephone=op;
homephone=hp;
strcpy(mobilephone,mp);
strcpy(email,email);
next=null;
class addrlist
node *headptr;
node *tailptr;
int tag排序标志,当tag=1,表示按姓名排序;默认按姓名排序。
当tag=2,表示按办公室**排序。
public:
addrlist(node *headptr=null,node *tailptr=null,int tag=1
构造函数,创建空链表,将tag的值置为1
void addtail(node *p); 将p指向的结点加入到链表尾部。
void addsort(node *p); 将p指向的结点按tag指定的顺序插入到链表中。
node * lookup(char *name); 按姓名查找结点,返回该结点指针。
void delete(char *name); 删除指定姓名的结点。
void sort(int tag按tag指定的关键字重新排序。
void showall显示全部结点,每10个显示一屏。
void settag(int t置tag的值。
int gettag取tag的值。
node * getheadptr取首指针。
~addrlist释放链表空间。
void createlist(char *filename); 从二进制文件中读入数据,构造链表。
void writetofile(char *filename); 将链表中数据写入指定的二制文件。
void writetotxtfile(char *filename); 将链表写到文本文件中。
addrlist::addrlist(node *headptr,node *tailptr,int tag)
构造函数,创建空链表,将tag的值置为1
headptr=headptr;
tailptr=tailptr;
tag=tag;
void addrlist::addtail(node *p) /将p指向的结点加入到链表尾部。
if(headptr==null)
elsevoid addrlist::addsort(node *p将p指向的结点按tag指定的顺序插入到链表中。
node *p1,*p2;
if(tag==1)
if( strcmp(p->name,headptr->name)<0 )
p1=p2=headptr;
while(strcmp(p->name,p2->name)>0 &&p2->next!=null)
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...