《手机短信管理系统大学论文.doc》由会员分享,可在线阅读,更多相关《手机短信管理系统大学论文.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、宜宾学院课程设计文档 课 程 软件编程实践 题 目 手机短信管理系统 院 别 计算机与信息工程学院 专 业 软 件 工 程 学生姓名 学 号 班 级 2015级 6班 授课教师 1目录第1章 系统总体设计21.1 系统功能结构描述21.2 系统功能结构图31.3 系统开发目标3第2章 通讯录设计42.1 通讯录概念结构设计42.2 数据存储4第3章 短信录设计53.1 短信概念结构设计53.2 数据存储5第4章 系统详细设计64.1 概要设计64.1.1 函数声明64.1.2 结构体声明64.2 主要函数74.2.1 主函数74.2.1.2 流程图74.2.1.3 程序截图84.2.1.4 源
2、代码84.2.2 通讯录104.2.2.2 流程图104.2.2.3 程序截图134.2.2.4 源代码154.2.3 短信录234.2.3.2 流程图234.2.3.3 程序截图254.2.3.4 源代码27第5章 总结35第1章 系统总体设计1.1 系统功能结构描述手机短信管理系统是手机实现功能的一组重要的代码程序,主要实现对手机中的通讯录进行添加、修改、查询功能,实现对手机中短信进行添加、修改、查询功能,能对短信进行记录和管理 ,在新建短信的时候也可以查看通讯录上联系人的信息,通讯录是对手机上的联系人进行操作,可以方便的查看和使用,对联系人的姓名、电话、类型、邮箱进行管理,建立通讯录更是
3、方便了短信的操作。功能结构需求如下:q 通讯录模块 :本功能主要是实现对用户信息的添加、删除、查询功能。q 短信模块:本功能主要是实现对用户发送短信的添加、删除、查询功能。基本功能:(1)查看功能:a.当输入编号时,显示出该编号的数据;b.可以查看所有的编号的数据;(2)添加功能:a.能录入新数据添加到文件中(联系人添加到addressbook.dll文件中,短信信息添加到message.dll文件中),当录入了重复的编号时,则提示数据录入重复并取消录入。(3)修改功能:a.选中某个人的编号时,可对此人的信息进行修改;(4)删除功能:选中某个人的编号时,可对此人在文件中的相应数据进行删除。(5
4、)主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多次选择执行不同的功能。1.2 系统功能结构图手机短信管理系统通讯录短信添加联系人删除联系人修改联系人查看联系人新建短信删除短信修改短信查看短信显示所有图3-1 系统功能结构图1.3 系统开发目标对于典型的管理系统,尤其是对像手机短信管理系统这样的非常实用的管理系统,必须要满足使用方便、操作灵活等设计需求。本系统在设计时应满足以下几个目标: 1采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。2对用户输入的数据,系统进行严格的数据检验,尽可能排除重复的错误。3系统运行稳定安全可靠。第2章 通
5、讯录设计2.1 通讯录概念结构设计 通讯录是对手机上的联系人进行操作,可以方便的查看和使用,对联系人的姓名、电话、类型、邮箱进行管理,建立通讯录更是方便了短信的操作,数据储存在addressbook.dll 文件中2.2 数据存储表2-1 用户基本信息中文名称:用户基本信息中文名称类型键值注释编号整型记录用户编号(唯一)姓名字符型记录用户姓名电话字符型记录用户电话邮箱字符型记录用户邮箱类型字符型记录用户类型第3章 短信设计3.1 短信概念结构设计 短信的功能能对通信录的联系人进行添加短信,也可以由用户新建,数据保存在message.dll 文件中。3.2 数据存储表2-2 短信功能基本信息中文
6、名称:竞赛项目基本信息中文名称类型键值注释编号整型姓名字符型电话字符型内容字符型第4章 系统详细设计4.1 概要设计 4.1.1 函数声明void main();/主函数void Addressbookmenu();/通讯录void Messagemenu();/短信4.1.2 结构体声明typedef struct Patient_Info/typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量int number;/编号char name8;/姓名char phonecode20; /电话号码char group10;/类型char email20;/
7、邮箱char content200;/短信内容PatientInfo;4.2 主要函数4.2.1 主函数4.2.1.2 流程图图4-1 主函数流程图4.2.1.3 程序截图图4-2主界面截图图4-1 主界面流程图4.2.1.4 源代码/*项目名称:手机短信管理系统实施时间:2015年12月22日创建人:郭成*/调用预处理#includestdio.h/标准输入输出#includestdlib.h/常用的系统函数/函数声明void Addressbookmenu();/通讯录void Messagemenu();/短信/主函数void main()char filename20;/文件名变量in
8、t i;system(title 手机短信管理系统);/设置cmd窗口标题 system(color 3B);/背景湖蓝,字体白dosystem(cls);/清屏printf(now datetime:n);system(date /T);/调用系统日期 system(TIME /T);/调用系统时间printf( nnn );printf(nttt -n);printf(ttt *=手机短信管理系统=*n);printf(nttt -n);printf(tt * *n);printf(tt * * 1.通讯录 * *n);printf(tt * * 2.短信 * *n);printf(tt
9、* *n);printf(tt * * *n);printf(tt * * 0.退出系统 * *n);printf(tt * * *n);printf(nttt -n);printf(ttt YIBIN University );printf(nttt -n);scanf(%d, &i);switch (i)case 1: system(cls); Addressbookmenu(); break;/case1 调用addressbookmenu函数case 2: system(cls); Messagemenu(); break;/case2 调用messagemenu函数case 0: b
10、reak;/case0 退出default:printf(错误选择!请重选); break;/default : .break;一般用在switch语句里面,它的作用是在比较i和下面的1、2之后都不一致就执行。当然如果都不满足也可以不去做任何事,所以就可以省略不用 while (i != 0);/当i不等于0循环4.2.2 通讯录4.2.2.2 流程图开始读出功能代号添加删除修改查看显示关闭123456结束退出通讯录(图4-3)通讯录流程图添加功能:录入新的联系人数据,姓名、电话号码、类型、邮箱。开始读入编号录入数据录入数据失败返回主菜单保存编号重复YN录入成功YN(图4-4)添加功能流程图删
11、除功能:输入编号,对其信息进行删除。开始读入编号删除删除失败返回主菜单保存有此编号NY(图4-4)删除功能流程图修改功能:输入编号,对其信息进行修改。开始读入编号修改修改失败返回主菜单保存有此编号NY(图4-5)修改功能流程图查看:输入编号,显示出此编号的姓名、电话号码、类型、邮箱。开始打开文件输入编号没有此编号返回主菜单显示信息有此编号NY(图4-6)显示功能流程图4.2.2.3 程序截图(图4-7)通讯录主界面截图(图4-8)添加功能截图(图4-9)修改功能截图(图4-10)显示功能截图4.2.2.4 源代码/*项目名称:手机短信管理系统实施时间:2015年12月22日创建人:郭成*/#i
12、ncludestdio.h#includestdlib.h#includestring.h/定义结构体类型typedef struct Patient_Info/typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量int number;/编号char name8;/姓名char phonecode20; /电话号码char group10;/类型char email20;/邮箱char content200;/短信内容PatientInfo;/局部函数声明static void Insert(char);static void Search(char);
13、static void Update(char);static void Delete(char);static void Show(char);/主菜单void Addressbookmenu()char filename20 ;/文件名变量int i;char Add=Addressbook.dll;/指定文件strcpy(filename,Add);do printf(nnow datetime:n); system(date /T); system(TIME /T);printf(nnn);printf(tt *=手机通讯录管理系统=*n);printf(tt * *n);printf
14、(tt * 1.添加联系人 2.删除联系人 *n);printf(tt * 3.修改联系人 4.查看联系人 *n);printf(tt * 5.显示所有联系人 6.关闭通讯录 *n);printf(tt * *n);printf(tt * * *n);printf(tt * * 请输入序号 * *n);printf(tt * * *n);printf(tt *=*n);scanf(%d, &i); fflush(stdin);/清空输入缓存,以便不影响后面输入的东西switch (i)case 1: system(cls); Insert(filename); break;case 2: sy
15、stem(cls); Delete(filename); break;case 3: system(cls); Update(filename); break;case 4: system(cls); Search(filename); break;case 5: system(cls); Show(filename); break;case 6: break;default:printf(错误选择!请重选); break; while (i != 6);/添加联系人void Insert(char Filename)/*函数说明:对指定文件名进行数据的插入形参说明:数组作为形参,实参必须是一
16、个地址,用于传递文件名调用位置:addressbookmenu函数创建人:郭成创建日期:12月22日*/int in_number;PatientInfo P;/定义一个信息的变量int flag = 1;FILE *fp;fp = fopen(Filename, r);/以只读方式打开文件,第一个参数:文件名,第二个参数是打开方式,a表示追加写方式,w表示覆盖写,r表示只读方式,返回值是一个文件指针printf( 请根据以下提示信息操作:);printf(n 编号:);/先查重,再追加插入scanf(%d, &in_number);while (!feof(fp) & flag)/feof表
17、示 end of file,表示文件末尾,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 = fo
18、pen(Filename, a);/以追加方式打开文件准备追加elsereturn;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(
19、&P, sizeof(PatientInfo), 1, fp) != 1)/*fwrite是文件写函数,从P变量中向文件中写入一条短信信息,第一个参数是来源变量的地址, 第二个参数是写的长度单位,第三个参数是写几个单位,第四个参数是要写的文件*/printf(输入数据失败,请重新输入!);else printf(n 添加成功!);fclose(fp);void Search(char Filename)/*函数说明:从指定文件中查找数据形参说明:数组作为形参,实参必须是一个地址,用于传递文件名调用位置:addressbookmenu函数创建人:郭成创建日期:12月22日*/int in_num
20、ber;PatientInfo P;int flag = 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(nttt -n);printf(nttt| 编号t| 姓名t| 电话tt| 类型t| 邮箱ttt|);printf
21、(nttt| %dt ,P.number);printf( %st ,P.name);printf( %st ,P.phonecode);printf( %st ,P.group);printf( %st|,P.email);printf(nnttt 联系人%s的信息已显示出来!n,P.name);printf(ttt -);flag=0;fclose(fp);if (flag)printf( 没有你要找的联系人!);void Update(char Filename)/*函数说明:修改指定文件中的数据形参说明:数组作为形参,实参必须是一个地址,用于传递文件名调用位置:addressbookm
22、enu函数创建人:郭成创建日期:12月22日*/int in_number;PatientInfo P;int flag = 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),
23、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;fwri
24、te(&P, sizeof(PatientInfo), 1, fptemp);/*找没找到都往临时文件中写,因为对文件操作只有追加和覆盖写两种方方式, 因此修改中间某条记录不方便,只能引入第二个文件或者放入数据、链表中*/ printf( n 修改成功!);fclose(fp);fclose(fptemp);if (flag)printf(没有你要查询的结果!);elsefptemp = fopen(temp.txt, r);/从临时文件中读fp = fopen(Filename, w);/往源文件中覆盖写while (fread(&P, sizeof(PatientInfo), 1, fpt
25、emp)fwrite(&P, sizeof(PatientInfo), 1, fp);/从临时文件中回写fclose(fp);fclose(fptemp);void Delete(char Filename)/*函数说明:删除指定文件中的某条数据形参说明:数组作为形参,实参必须是一个地址,用于传递文件名调用位置:addressbookmenu函数创建人:郭成创建日期:12月22日*/int in_number;PatientInfo P;int flag = 1;FILE *fp, *fptemp;fp = fopen(Filename, r);fptemp = fopen(temp.txt,
26、 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);elseflag = 0;fclose(fp);fclose(fptemp);if (flag)printf( 没有你要删除的编号!);elsefp = fopen(Filename, w);fptemp = f
27、open(temp.txt, r);while (fread(&P, sizeof(PatientInfo), 1, fptemp)fwrite(&P, sizeof(PatientInfo), 1, fp);printf( 删除成功!);fclose(fp);fclose(fptemp);void Show(char Filename)/*函数说明:显示指定文件中的所有数据形参说明:数组作为形参,实参必须是一个地址,用于传递文件名调用位置:addressbookmenu函数创建人:郭成创建日期:12月22日*/PatientInfo P;int flag = 1;FILE *fp;fp =
28、fopen(Filename, r);while (fread(&P, sizeof(PatientInfo), 1, fp)printf(nttt -n);printf(nttt| 编号t| 姓名t| 电话tt| 类型t| 邮箱ttt|);printf(nttt| %dt ,P.number);printf( %st ,P.name);printf( %st ,P.phonecode);printf( %st ,P.group);printf( %st|,P.email);printf(nttt -);printf(nttt 所有联系人信息已全部显示出来!n);fclose(fp);4.2.
29、3 短信录4.2.3.2 流程图开始读出功能代号新建删除修改查看显示关闭123456结束关闭短信录(图4-11)短信录主函数流程图新建功能:在新建短信输入编号时,将判断此编号在通讯录上有无,如果有则显示出来,并对此编号发送信息,如果没有此编号则新建一条信息。开始读入编号显示此编号信息发送短信返回主菜单保存编号是否存在NY(图4-12)新建短信流程图(删除、修改、查看、显示流程图均与通讯录相差不大,这里就不画出来了)4.2.3.3 程序截图 (图4-13)短信录主界面截图(图4-14)短信录新建短信截图(图4-15)短信录显示短信截图(图4-16)短信录删除短信截图4.2.3.4 源代码/*项目
30、名称:手机短信管理系统实施时间:2015年12月22日创建人:郭成*/#includestdio.h#includestdlib.h#includestring.h#include windows.h /定义了Windows的所有资料型态、函数调用、资料结构和常数识别字#include conio.h /进行输入、输出的/定义结构体类型typedef struct Patient_Info/typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量int number;/编号char name8;/姓名char phonecode20; /电话号码char g
31、roup10;/类型char email20;/邮箱char content200;/短信内容PatientInfo;/局部函数声明static void Add(char);static void Search(char);static void Alter(char);static void Del(char);static void Show(char);/主菜单void Messagemenu()int i;char Filename20;/文件名变量char Mes=Message.dll;/指定文件strcpy(Filename,Mes);do printf(nnow datetime:n); system(date /T); system(TIME /T);printf(nnn);printf(tt *=手机短信管理系统=*n);printf(tt * *n);printf(tt * 1.新建信息 2.删除信息 *n);printf(tt * 3.修改信息 4.查看联系人 *n);printf(tt * 5.显示所有信息 6.关闭短信录 *n);printf(tt *
限制150内