本科毕业设计论文手机短信管理系统.docx

上传人:b****8 文档编号:10197841 上传时间:2023-02-09 格式:DOCX 页数:42 大小:297KB
下载 相关 举报
本科毕业设计论文手机短信管理系统.docx_第1页
第1页 / 共42页
本科毕业设计论文手机短信管理系统.docx_第2页
第2页 / 共42页
本科毕业设计论文手机短信管理系统.docx_第3页
第3页 / 共42页
本科毕业设计论文手机短信管理系统.docx_第4页
第4页 / 共42页
本科毕业设计论文手机短信管理系统.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

本科毕业设计论文手机短信管理系统.docx

《本科毕业设计论文手机短信管理系统.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文手机短信管理系统.docx(42页珍藏版)》请在冰豆网上搜索。

本科毕业设计论文手机短信管理系统.docx

本科毕业设计论文手机短信管理系统

宜宾学院

课程设计文档

课程软件编程实践

题目手机短信管理系统

院别计算机与信息工程学院

专业软件工程

学生姓名

学号

班级2015级6班

授课教师

第2章

系统总体设计

2.1系统功能结构描述

手机短信管理系统是手机实现功能的一组重要的代码程序,主要实现对手机中的通讯录进行添加、修改、查询功能,实现对手机中短信进行添加、修改、查询功能,能对短信进行记录和管理,在新建短信的时候也可以查看通讯录上联系人的信息,通讯录是对手机上的联系人进行操作,可以方便的查看和使用,对联系人的姓名、电话、类型、邮箱进行管理,建立通讯录更是方便了短信的操作。

功能结构需求如下:

❑通讯录模块:

本功能主要是实现对用户信息的添加、删除、查询功能。

❑短信模块:

本功能主要是实现对用户发送短信的添加、删除、查询功能。

基本功能:

(1)查看功能:

a.当输入编号时,显示出该编号的数据;

b.可以查看所有的编号的数据;

(2)添加功能:

a.能录入新数据添加到文件中(联系人添加到addressbook.dll文件中,短信信息添加到message.dll文件中),当录入了重复的编号时,则提示数据录入重复并取消录入。

(3)修改功能:

a.选中某个人的编号时,可对此人的信息进行修改;

(4)删除功能:

选中某个人的编号时,可对此人在文件中的相应数据进行删除。

(5)主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。

2.2系统功能结构图

2.3系统开发目标

对于典型的管理系统,尤其是对像手机短信管理系统这样的非常实用的管理系统,必须要满足使用方便、操作灵活等设计需求。

本系统在设计时应满足以下几个目标:

1.采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。

2.对用户输入的数据,系统进行严格的数据检验,尽可能排除重复的错误。

3.系统运行稳定安全可靠。

第3章

通讯录设计

3.1通讯录概念结构设计

通讯录是对手机上的联系人进行操作,可以方便的查看和使用,对联系人的姓名、电话、类型、邮箱进行管理,建立通讯录更是方便了短信的操作,数据储存在addressbook.dll文件中

3.2数据存储

表2-1用户基本信息

中文名称:

用户基本信息

中文名称

类型

键值

注释

编号

整型

记录用户编号(唯一)

姓名

字符型

记录用户姓名

电话

字符型

记录用户电话

邮箱

字符型

记录用户邮箱

类型

字符型

记录用户类型

第4章短信设计

4.1短信概念结构设计

短信的功能能对通信录的联系人进行添加短信,也可以由用户新建,数据保存在message.dll文件中。

4.2数据存储

表2-2短信功能基本信息

中文名称:

竞赛项目基本信息

中文名称

类型

键值

注释

编号

整型

姓名

字符型

电话

字符型

内容

字符型

第5章系统详细设计

5.1概要设计

5.1.1函数声明

voidmain();//主函数

voidAddressbookmenu();//通讯录

voidMessagemenu();//短信

5.1.2结构体声明

typedefstructPatient_Info//typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量

{

intnumber;//编号

charname[8];//姓名

charphonecode[20];//电话号码

chargroup[10];//类型

charemail[20];//邮箱

charcontent[200];//短信内容

}PatientInfo;

 

5.2主要函数

5.2.1主函数

5.2.1.2流程图

5.2.1.3程序截图

图4-2主界面截图

5.2.1.4源代码

/*

项目名称:

手机短信管理系统

实施时间:

2015年12月22日

创建人:

郭成

*/

//调用预处理

#include"stdio.h"//标准输入输出

#include"stdlib.h"//常用的系统函数

//函数声明

voidAddressbookmenu();//通讯录

voidMessagemenu();//短信

//主函数

voidmain()

{

charfilename[20];//文件名变量

inti;

system("title手机短信管理系统");//设置cmd窗口标题

system("color3B");//背景湖蓝,字体白

do

{

system("cls");//清屏

printf("nowdatetime:

\n");

system("date/T");//调用系统日期

system("TIME/T");//调用系统时间

printf("\n\n\n");

printf("\n\t\t\t------------------------------------------------------------\n");

printf("\t\t\t*==============手机短信管理系统==============*\n");

printf("\n\t\t\t------------------------------------------------------------\n");

printf("\t\t**\n");

printf("\t\t***1.通讯录***\n");

printf("\t\t***2.短信***\n");

printf("\t\t**\n");

printf("\t\t********************\n");

printf("\t\t***0.退出系统***\n");

printf("\t\t**************\n");

printf("\n\t\t\t------------------------------------------------------------\n");

printf("\t\t\tYIBINUniversity");

printf("\n\t\t\t------------------------------------------------------------\n");

scanf("%d",&i);

switch(i)

{

case1:

system("cls");Addressbookmenu();break;//case1调用addressbookmenu函数

case2:

system("cls");Messagemenu();break;//case2调用messagemenu函数

case0:

break;//case0退出

default:

printf("错误选择!

请重选");break;

//default:

....break;一般用在switch语句里面,它的作用是在比较i和下面的1、2之后都不一致就执行。

当然如果都不满足也可以不去做任何事,所以就可以省略不用

}

}while(i!

=0);//当i不等于0循环

}

5.2.2通讯录

5.2.2.2流程图

(图4-3)通讯录流程图

 

添加功能:

录入新的联系人数据,姓名、电话号码、类型、邮箱。

(图4-4)添加功能流程图

删除功能:

输入编号,对其信息进行删除。

(图4-4)删除功能流程图

修改功能:

输入编号,对其信息进行修改。

(图4-5)修改功能流程图

查看:

输入编号,显示出此编号的姓名、电话号码、类型、邮箱。

(图4-6)显示功能流程图

5.2.2.3程序截图

(图4-7)通讯录主界面截图

(图4-8)添加功能截图

(图4-9)修改功能截图

(图4-10)显示功能截图

5.2.2.4源代码

/*

项目名称:

手机短信管理系统

实施时间:

2015年12月22日

创建人:

郭成

*/

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

//定义结构体类型

typedefstructPatient_Info//typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量

{

intnumber;//编号

charname[8];//姓名

charphonecode[20];//电话号码

chargroup[10];//类型

charemail[20];//邮箱

charcontent[200];//短信内容

}PatientInfo;

//局部函数声明

staticvoidInsert(char[]);

staticvoidSearch(char[]);

staticvoidUpdate(char[]);

staticvoidDelete(char[]);

staticvoidShow(char[]);

//主菜单

voidAddressbookmenu()

{

charfilename[20];//文件名变量

inti;

charAdd[]="Addressbook.dll";//指定文件

strcpy(filename,Add);

do

{

printf("\nnowdatetime:

\n");

system("date/T");

system("TIME/T");

printf("\n\n\n");

printf("\t\t*==============手★机★通★讯★录★管★理★系★统==============*\n");

printf("\t\t**\n");

printf("\t\t*1.添加联系人2.删除联系人*\n");

printf("\t\t*3.修改联系人4.查看联系人*\n");

printf("\t\t*5.显示所有联系人6.关闭通讯录*\n");

printf("\t\t**\n");

printf("\t\t********************\n");

printf("\t\t**请输入序号**\n");

printf("\t\t********************\n");

printf("\t\t*==============================================================*\n");

scanf("%d",&i);

fflush(stdin);//清空输入缓存,以便不影响后面输入的东西

switch(i)

{

case1:

system("cls");Insert(filename);break;

case2:

system("cls");Delete(filename);break;

case3:

system("cls");Update(filename);break;

case4:

system("cls");Search(filename);break;

case5:

system("cls");Show(filename);break;

case6:

break;

default:

printf("错误选择!

请重选");break;

}

}while(i!

=6);

}

//添加联系人

voidInsert(charFilename[])

{

/*

函数说明:

对指定文件名进行数据的插入

形参说明:

数组作为形参,实参必须是一个地址,用于传递文件名

调用位置:

addressbookmenu函数

创建人:

郭成

创建日期:

12月22日

*/

intin_number;

PatientInfoP;//定义一个信息的变量

intflag=1;

FILE*fp;

fp=fopen(Filename,"r");//以只读方式打开文件,第一个参数:

文件名,第二个参数是打开方式,a表示追加写方式,w表示覆盖写,r表示只读方式,返回值是一个文件指针

printf("请根据以下提示信息操作:

");

printf("\n编号:

");//先查重,再追加插入

scanf("%d",&in_number);

while(!

feof(fp)&&flag)//feof表示endoffile,表示文件末尾,true表示文件末尾,否则不是文件末尾。

&&flag表示还未查找到

{

if(fread(&P,sizeof(PatientInfo),1,fp))/*fread是文件输出函数,从文件中读取一条联系人信息放入P变量中,第一个参数是目标变量的地址,

第二个参数是读取的长度单位,第三个参数是读取几个单位,第四个参数是要读取的文件,返回值为1表示成功,否则表示失败*/

{

if(P.number==in_number)

{

printf("\n该编号已存在,自动取消录入!

\n");

flag=0;

}

}

}

fclose(fp);//关闭文件以便追加记录

if(flag)

{

fp=fopen(Filename,"a");//以追加方式打开文件准备追加

}

else

return;

P.number=in_number;

printf("请输入姓名:

");

scanf("%s",P.name);

printf("请输入电话:

");

scanf("%s",&P.phonecode);

printf("请输入类型:

");

printf("存储类别:

(A.办公类B.个人类C.商务类)");

scanf("%s",P.group);

printf("请输入邮箱:

");

fflush(stdin);//清空输入缓存,以便不影响后面输入的东西

scanf("%s",P.email);

printf("\n------------------------------------------------------------");

if(fwrite(&P,sizeof(PatientInfo),1,fp)!

=1)/*fwrite是文件写函数,从P变量中向文件中写入一条短信信息,第一个参数是来源变量的地址,

第二个参数是写的长度单位,第三个参数是写几个单位,第四个参数是要写的文件*/

{

printf("输入数据失败,请重新输入!

");

}

else

printf("\n添加成功!

");

fclose(fp);

}

voidSearch(charFilename[])

{

/*

函数说明:

从指定文件中查找数据

形参说明:

数组作为形参,实参必须是一个地址,用于传递文件名

调用位置:

addressbookmenu函数

创建人:

郭成

创建日期:

12月22日

*/

intin_number;

PatientInfoP;

intflag=1;

FILE*fp;

fp=fopen(Filename,"r");

printf("\n请根据以下提示信息操作:

");

printf("\n编号:

");

scanf("%d",&in_number);

system("cls");

while(fread(&P,sizeof(PatientInfo),1,fp)&&flag)//fread是文件输出函数,返回值为1表示读成功

{

if(P.number==in_number)

{

printf("\n\t\t\t------------------------------------------------------------\n");

printf("\n\t\t\t|编号\t|姓名\t|电话\t\t|类型\t|邮箱\t\t\t|");

printf("\n\t\t\t|%d\t",P.number);

printf("%s\t",P.name);

printf("%s\t",P.phonecode);

printf("%s\t",P.group);

printf("%s\t|",P.email);

printf("\n\n\t\t\t联系人%s的信息已显示出来!

\n",P.name);

printf("\t\t\t------------------------------------------------------------");

flag=0;

}

}

fclose(fp);

if(flag)

{

printf("没有你要找的联系人!

");

}

}

voidUpdate(charFilename[])//

{

/*

函数说明:

修改指定文件中的数据

形参说明:

数组作为形参,实参必须是一个地址,用于传递文件名

调用位置:

addressbookmenu函数

创建人:

郭成

创建日期:

12月22日

*/

intin_number;

PatientInfoP;

intflag=1;

FILE*fp,*fptemp;//必须两个文件操作,fp是数据源文件,fptemp是临时文件,修改后的数据临时放入该文件中

fp=fopen(Filename,"r");//文件读

fptemp=fopen("temp.txt","w");//文件写

printf("\n修改联系人信息");

printf("\n请输入你要修改的联系人的编号:

");//先查询,再修改

scanf("%d",&in_number);

while(fread(&P,sizeof(PatientInfo),1,fp))//文件读

{

if(P.number==in_number)//读出修改

{

P.number=in_number;

printf("请输入姓名:

");

scanf("%s",P.name);

printf("请输入电话:

");

scanf("%s",&P.phonecode);

printf("请输入类型:

");

printf("存储类别:

(A.办公类B.个人类C.商务类)");

scanf("%s",P.group);

printf("请输入邮箱:

");

fflush(stdin);//清空输入缓存,以便不影响后面输入的东西

scanf("%s",P.email);

printf("\n------------------------------------------------------------");

flag=0;

}

fwrite(&P,sizeof(PatientInfo),1,fptemp);/*找没找到都往临时文件中写,因为对文件操作只有追加和覆盖写两种方方式,

因此修改中间某条记录不方便,只能引入第二个文件或者放入数据、链表中*/

printf("\n修改成功!

");

}

fclose(fp);

fclose(fptemp);

if(flag)

{

printf("没有你要查询的结果!

");

}

else

{

fptemp=fopen("temp.txt","r");//从临时文件中读

fp=fopen(Filename,"w");//往源文件中覆盖写

while(fread(&P,sizeof(PatientInfo),1,fptemp))

{

fwrite(&P,sizeof(PatientInfo),1,fp);//从临时文件中回写

}

fclose(fp);

fclose(fptemp);

}

}

voidDelete(charFilename[])//

{

/*

函数说明:

删除指定文件中的某条数据

形参说明:

数组作为形参,实参必须是一个地址,用于传递文件名

调用位置:

addressbookmenu函数

创建人:

郭成

创建日期:

12月22日

*/

intin_number;

PatientInfoP;

intflag=1;

FILE*fp,*fptemp;

fp=fopen(Filename,"r");

fptemp=fopen("temp.txt","w");

printf("\n请输入你想要删除的联系人的编号:

");//先查询,再删除

scanf("%d",&in_number);

while(fread(&P,sizeof(PatientInfo),1,fp))

{

if(P.number!

=in_number)//如果找到要删除的记录则不写,否则都要写

fwrite(&P,sizeof(PatientInfo),1,fptemp);

else

flag=0;

}

fclose(fp);

fclose(fptemp);

if(flag)

{

printf("没有你要删除的编号!

");

}

else

{

fp=fopen(Filename,"w");

fptemp=fopen("temp.txt","r");

while(fread(&P,sizeof(PatientInfo),1,fptemp))

{

fwrite(&P,sizeof(PatientInfo),1,fp);

}

printf("删除成功!

");

fclose(fp);

fclose(fptemp);

}

}

void

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1