课程设计

这是一个基于C++的数据结构课程设计,实现了通讯录管理软件,包括联系人信息录入、删除、查询和打印等功能。设计中使用了双链表作为数据结构,用户界面友好,具备一定的容错能力。通过该设计,作者深化了对数据结构和C++编程的理解,锻炼了解决实际问题的能力。
摘要由CSDN通过智能技术生成

通讯录管理

                     ——数据结构课程设计报告

 

学生姓名

幸广辉

学生班级

信管1134班

学生学号

201311671422

 

 

 

 

             完成时间:201518

 

 

 

目录

1、需求分析

 1.1课程设计目的

 1.2课程设计要求

2、分析

 2.1功能模块

 2.2概要设计

4、测试

5、收获与体会

附录:源程序

 

 

 

 

 

 

 

 

 

 

 

 

 

1.1课程设计目的

通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。

1.2课程设计要求

用数据结构的双链表制作一款通讯管理软件,初步要求:

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

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

2.1主要功能

1进入主功能菜单界面,功能选择。 

2创建联系人列表并保存修改后的通讯录

3删除创建的联系人并保存修改后的通讯录 

4打印出保存后的通讯录当未创建通讯录时提示用户创建新的通讯录

5根据用户输入的联系人的首字母查找符合条件的联系人

6退出通讯录管理系统

3概要设计

主要流程图如下:




‚根据系统的功能模块





1.主界面模块:完成系统菜单的显示

2.功能选择模块:根据用户的选择,完成其相应的功能

(1)通讯录联系人的信息录入:完成用户从界面输入联系人的信息,保存入系统的功能。

(2)通讯录信息删除:删除所存储的联系人信息。

(3)通讯录信息查询:完成用户从界面输入查找的条件

(4)通讯录信息输出:在屏幕上输出所有联系人的信息。

 

 

4测试

1菜单界面



2功能测试

①录入模块




②删除模块





③查询模块




 

④打印模块



5心得与体会

 这次的课程设计感触颇深,首先深刻感受到程序的实际应用性,这学期的课程设计的题目都是贴近实际生活的问题,我们就能够很清楚的明白自己写的程序要解决什么样的实际问题,应该解决什么样的实际问题,觉得自己的程序更有实用价值。  

这次设计中不断的出现问题,我则自己努力,不断的改正错误,改进自己的程序,有些自己实在是无法解决的问题,则会与其他同学讨论,或上网查询、搜寻资料……在不断的改进过程中,深刻的认识到自己程序的漏洞和不健全性,认识到自己对双链表略懂皮毛。以致有很多很简单的错误调试了很长时间。通过这次设计,不但让我进一步加深了对知识的巩固,而且很好的锻炼了我的独立思考能力,以及分析问题解决问题的能力。今后凡事都不要着急,要冷静的分析思考,越是急越是无法解决,只有沉着冷静深入思考才能真正的解决问题,只要自己努力凡事都能解决。还有就是深刻体会到了平时多练习的重要性,平时如果不多练习,在编写自己的程序时会手忙脚乱无所适从。



代码


源程序

#include <iostream>

using namespace std;

#include <stdlib.h>

#include <string.h>

typedef struct message

{

char name[30];//定义变量的字符型

    char sex[4];

    char sage[10];

char number[20];

char email[30];

char adress[100];

    char qq[120];

char weixin[120];

char birthday[10];

    struct message *proir; //结构体

struct message *next;

} mess;

mess *head=NULL;

mess *p[100];

int man=0;

//

//函数

char menu(); //菜单

void add(); //增加

void del(); //删除

char del_menu();

void del_name();

void del_adress();

void del_number();

void del_email();

void del_qq();

void del_sex();

void del_sage();

void del_weixin();

void del_birthday();

void find(); //查找

char find_menu();

void find_name();

void find_adress();

void find_number();

void find_email();

void find_qq();

void find_sex();

void find_sage();

void find_weixin();

void find_birthday();

void print(); //打印

char print_menu();

void print_time();

void print_word();

void file_save();

 

 

 //主函数

int main()

{

   FILE *fp=fopen("1.txt","r+");

   if(fp==NULL)

   cout<<"通讯录为空!!\n";

   else

   {

  fseek(fp,0,2);

  if(ftell(fp)==0)

  cout<<"通讯录为空!\n";

  else

  {

  mess *p2,*tmp;

  rewind(fp);

  head=(mess *)malloc(sizeof(mess));

  head->next=NULL;

  p[0]=head;

  while(feof(fp)==0)

  {

             p2=(mess *)malloc(sizeof(mess));

 cout<<"%s\t%s\t%s\t%s\t%s\n",p2->name,p2->adress,p2->number,p2->email,p2->qq,p2->sex,p2->sage,p2->weixin,p2->birthday;

 tmp=head;

     while(tmp->next!=NULL)

tmp=tmp->next;

            tmp->next=p2;

 p2->next=NULL;

 p2->proir=tmp;

     man++;

             p[man]=p2;

 p[man+1]=NULL;

  }

  man--;

  p2->proir->next=NULL;

  cout<<"数据读取完毕!\n";

  int flag=fclose(fp);

  if(flag!=0)

  {cout<<"关闭文件失败!";

return 0;}

  }

   }

char i;

i=menu();

switch(i)

{

case '1':add();break;

case '2':del();break;

case '3':find();break;

case '4':print();break;

case '5':file_save();breake;

                                   case '6':return 0;

}

}

主菜单

char menu()

{

char i;

cout<<"---------------功能菜单---------------\n"<<endl;

cout<<"  |  1.录入信息\t   2.删除信息    |\n"<<endl;

cout<<"  |  3.查找信息\t   4.显示信息    |\n"<<endl;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值