Qt通讯录课程设计报告

时间:2024.4.27

信息工程学院

课题名称:        模拟手机拨号    

学    号:

姓    名:

日    期:20##-1-5            

指导教师:

成    绩:

                   目  录

一、设计系统的目的意义………………………………………………3

二、系统需求、功能分析………………………………………………3

   1:系统需求………………………………………………………………………3

   2:功能分析……………………………………………………………………3-4

   3:系统结构图……………………………………………………………………4

  三、详细设计………………………………………………………4-12

1、添加联系人…………………………………………………………………7

2、删除联系人………………………………………………………………8-9

3、显示所有联系人 …………………………………………………………10

4、修改联系人 ………………………………………………………………11

5、查找联系人   ……………………………………………………………12

6、模拟手机拨号   …………………………………………………………12

四、课程设计的心得 …………………………………………………13

五、参考书目: ………………………………………………………13

                                                                                       

一、   设计系统的目的意义

1、设计系统的目的

设计这个系统的目的是为了设计一个能够模拟手机拨号的一个软件,能够方便的存储信息,可以将这个系统应用到手机中,方便的存储联系人,为方便查找联系人的各种信息提供方便,方便直接向联系人直接进行拨号连接

2、设计系统的意义

模拟手机拨号系统没有使用纸张等,做到了环保,符合当今环保理念这个系统使用户能够方便快捷的使用存储和查找等优势功能,且具有较高的安全性,能够有效保护用户联系人资料,而且方便根据联系人进行拨号操作

二、   系统需求及功能分析

   系统需求

1、需要录入联系人到通讯录中;

2、能够对通讯录中各项信息进行查找修改删除排序等一系列操作;   

3、能够完成通讯录的基本功能;

4、凡等候用户输入时,给出足够的提示信息;

5、程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入 ;

6、对删除数据应给出警告。

7、对联系人进行模拟拨号,当联系人号码为空时,给出警告,联系人号码不能为空。

功能分析

1、录入功能:选择此功能可以用户手动输入联系人各项信息; 

2、查看功能:选择此功能时可以选择根据各种信息查询联系人电话、住址、性别、邮箱、QQ等各项信息; 

3、 修改功能:选择此功能时能够通过输入联系人姓名或者电话修改联系人的全部信息;

4、删除功能:选择此功能时能够通过输入联系人姓名或者电话删除联系人的全部信息;                                                   

5、退出系统功能:选择此功能时能够退出系统并保存数据。

功能结构图:

三、       详细设计

在此次实验中,我主要负责的是添加联系人、查询联系人、删除联系人、手机拨号功能的实现

3.1添加联系人的实现;

通过输入联系人的如下信息:姓名、电话、QQ、邮编、地址,并把输入的信息保存对象的属性,创建或者打开文件,并向文件中写入新添加的联系人信息,运行如下:

代码实现如下:

void AddressBook::submitContact()

{

        QString name=ui->nameLine->text();

    ContactList contactlist;  

    contactlist.Address=ui->addressText->toPlainText();

    contactlist.Email=ui->emailLine->text();

    contactlist.Phone=ui->phoneLine->text();

    contactlist.Info=ui->InfoEdit->toPlainText();

    contactlist.Qq=ui->qqLine->text();

    contactlist.Msn=ui->msnLine->text();

    contactlist.Career=ui->careerLine->text();

    contactlist.Company=ui->companyLine->text();

    if(name=="")

    {

        QMessageBox::information(this,

                    tr("姓名为空!"),

                    tr("必须要输入姓名."));

        return ;

    }

       

    if(currentMode==AddingMode)

   

        if(!contacts.contains(name))

        {

            contacts.insert(name,contactlist);

            QMessageBox::information(this,

                        tr("添加成功!"),

                tr("\"%1\"已添加到通讯录中.").arg(name));

        }

        else

        {

            QMessageBox::information(this,

                            tr("添加失败!"),

                tr("\"%1\"已存在于通讯录中.").arg(name));

            return ;

        }

    }

       

    updateInterface(NavigationMode);

}

3.2删除联系人的实现

首先输入的姓名查找该用户,如果找到,触发删除按钮,则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!

运行界面如下:

代码实现如下:

void AddressBook::removeContact()

{

   

    QString name = ui->nameLine->text();

    ContactList contactlist;

    contactlist.Address=ui->addressText->toPlainText();

    contactlist.Email=ui->emailLine->text();

    contactlist.Phone=ui->phoneLine->text();

    contactlist.Info=ui->InfoEdit->toPlainText();

    contactlist.Qq=ui->qqLine->text();

    contactlist.Msn=ui->msnLine->text();

    contactlist.Career=ui->careerLine->text();

    contactlist.Company=ui->companyLine->text();

    if(contacts.contains(name))

    {

             int button =QMessageBox::question(this,

            tr("删除确认"),

            tr("确认要删除\"%1\"?").arg(name),

            QMessageBox::Yes|QMessageBox::No);

        if(button==QMessageBox::Yes)

        {

            previous();

            contacts.remove(name);

             QMessageBox::information(this,

                            tr("删除成功"),

                tr("\"%1\"已经删除。").arg(name));

        }

}

    updateInterface(NavigationMode);

}

3.23显示所有联系人的实现:

把文件中的各种信息读取并显示出来,一个一个显示联系人的详细信息。

运行界面如下:

代码实现如下:

void AddressBook::loadFromFile()

 {

  

        QString fileName=QFileDialog::getOpenFileName(this,

        tr("打开通讯录文件"),

                "",

        tr("通讯录文件(*.txl);;所有文件(*)"));

    if(fileName.isEmpty())

        {

        return;

        }

    else

    {

        contacts.clear();

        QFile file(fileName);

        if(!file.open(QIODevice::ReadOnly))

        {

            QMessageBox::information(this,

                            tr("无法打开文件"),

                file.errorString());

            return ;

        }

        QDataStream in(&file);

        in.setVersion(QDataStream::Qt_4_7);

        while(!in.atEnd())

        {

             ContactList contactlist;

            QString name;                     

            in>>name;

            in>>contactlist.Address;

            in>>contactlist.Email;

            in>>contactlist.Info;

            in>>contactlist.Phone;

            in>>contactlist.Qq;

            in>>contactlist.Msn;

            in>>contactlist.Career;

            in>>contactlist.Company;

            contacts.insert(name,contactlist);

        }

               

        if(contacts.isEmpty())

        {

            QMessageBox::information(this,

                            tr("文件中没有联系人"),

                tr("你打开的文件中没有联系人。"));

        }

        else

        {

            QMap::iterator i=contacts.begin();

            ui->nameLine->setText(i.key());//显示姓名

                       

            ContactList contactlist;

            contactlist=i.value();

            ui->addressText->setText(contactlist.Address);

            ui->emailLine->setText(contactlist.Email);

            ui->phoneLine->setText(contactlist.Phone);

            ui->InfoEdit->setText(contactlist.Info);

            ui->qqLine->setText(contactlist.Qq);

            ui->msnLine->setText(contactlist.Msn);

            ui->careerLine->setText(contactlist.Career);

            ui->companyLine->setText(contactlist.Company);

        }

    }

       

    updateInterface(NavigationMode);

}

3.4 修改联系人模块

只要输入来联系人的名字,进行文件遍历查找到联系人的信息,而后进行修改。运行界面如下:

代码实现如下:

     else if(currentMode==EditingMode)

    {

        if(oldName!=name)

        {

            if(!contacts.contains(name))            {

                QMessageBox::information(this,

                                    tr("修改成功!"),

                    tr("\"%1\"已经修改。").arg(oldName));

                contacts.remove(oldName);

                contacts.insert(name,contactlist);

            }

            else

            {

                QMessageBox::information(this,

                                    tr("无法修改!"),

                    tr("\"%1\"已经存在。").arg(name));

                return ;

            }

        }

        else

        {

            QMessageBox::information(this,

                            tr("修改成功"),

                tr("\"%1\"已经修改。").arg(name));

            contacts[name]=contactlist;

        }

    }

       

    updateInterface(NavigationMode);

}

3.25 查询联系人模块

对文件进行遍历,将联系人的所有信息都显示出来。

运行界面如下:

 

代码实现如下:

void AddressBook::findContact()

{

    FindDialog dialog;

    if (dialog.exec() == QDialog::Accepted)

    {

      

                QString contactName = dialog.findText();

               

        if (contacts.contains(contactName))

        {

            QMessageBox::information(this,

                            tr("查找成功"),

                tr("呵呵,虽然联系少,但还记得你!"));

                        ui->nameLine->setText(contactName);  

                      

            ContactList contactlist;

            contactlist=contacts.value(contactName);

            ui->addressText->setText(contactlist.Address);

            ui->emailLine->setText(contactlist.Email);

            ui->phoneLine->setText(contactlist.Phone);

            ui->InfoEdit->setText(contactlist.Info);

            ui->qqLine->setText(contactlist.Qq);

            ui->msnLine->setText(contactlist.Msn);

            ui->careerLine->setText(contactlist.Career);

            ui->companyLine->setText(contactlist.Company);

        }

       else

        {

            QMessageBox::information(this,

                            tr("未找到联系人"),

                tr("很抱歉,通讯录中没有 \"%1\" ,该检讨自己一下。").arg(contactName));

                               

            return;

        }

}

        updateInterface(NavigationMode);

}

3.26  模拟手机拨号

代码如下

void AddressBook::bohao()       //拨号函数的实现

{    QString  phone=ui->phoneLine->text();

    if(phone!=""){

   QMessageBox::information(this,//父窗口

       tr("拨号!"),//标题栏

       tr("\"%1\正在向他拨号.").arg(ui->nameLine->text()));//提示内容

  }

   else

       QMessageBox::information(this,//父窗口

           tr("拨号!"),//标题栏

           tr("号码为空 不要忽悠我"));//提示内容

}

四、       设计心得

  模拟手机系统的课程设计,我体会到很多,完成一个程序的设计必须要有同伴的支持和合作,必须要跟同伴讨论商量,共同努力才有可能设计出一个好的程序,遇到困难不能轻易放弃,在编这个程序的时候遇到了很多难题,后来在老师和同学的帮助解答下终于将遇到的问题一个个解决,我深刻体会到遇到难题不要轻易言弃,还有要多借鉴别人的经验,多阅读一些书籍,编写程序的时候要细心,一点点错误程序就可能编译失败,所以要做到一丝不苟。

更为重要的是,我在两个礼拜学会如何使用Qt这个软件进行编程操作,增强我的自学能力和编程能力,这对我自身的提升都是很重要的,将所学的知识进行运用。这是学习的乐趣之一。

五、       参考书目

《C++ GUI Qt 4编程》(第2版)作者:(加拿大)布兰切特 (Jasmin Blanchette) (英国)萨默菲尔德 (Mark Summerfield) 译者:闫锋欣 曾泉人 张志强

                                                                                

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

课程设计报告

计算机高级语言课程设计报告班级学号姓名蔡路日期学生成绩管理系统19xx3120xx100031020xx年1月18日一课程设计题目与要求实习题目学生成绩管理系统实习内容C语言面向对象的分析与设计基本要求学生成绩...

JAVA_课程设计报告

JAVA程序设计课程设计报告设计题目学院名称专业班级姓名学号1目录一需求分析3二概要设计3三详细设计331数据库设计332模块及窗体设计3321数据库模块设计3322用户登录识别模块5323用户信息管理模块61...

软件课程设计报告

中南民族大学软件课程设计报告电子信息工程09级题目学生吴雪学号指导教师王锦程电子工程0907100220xx年4月25日简易网络聊天系统摘要计算机网络通信技术已经深入我们的生活并给我们即使通信带来了很大的方随着...

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

Java课程设计报告模板

Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马千里B计算机1021010704213徐森20xx年1月8日Hannoi塔目录目...

课程设计报告(33篇)