手机短信管理系统_第1页
手机短信管理系统_第2页
手机短信管理系统_第3页
手机短信管理系统_第4页
手机短信管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图4-1主函数流程图图4-1主函数流程图程序截图图4-2主界面截图图4-1主界面流程图图4-2主界面截图图4-1主界面流程图源代码/*项目名称:手机短信管理系统实施时间: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\tYIBIN 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循环}通讯录流程图开始开始读出功能代号添加删除修改查看显示关闭123456结束退出通讯录(图4-3)通讯录流程图添加功能:录入新的联系人数据,姓名、电话号码、类型、邮箱。开始开始读入编号录入数据录入数据失败返回主菜单保存编号重复YN录入成功YN(图4-4)添加功能流程图删除功能:输入编号,对其信息进行删除。开始开始读入编号删除删除失败返回主菜单保存有此编号NY(图4-4)删除功能流程图修改功能:输入编号,对其信息进行修改。开始开始读入编号修改修改失败返回主菜单保存有此编号NY(图4-5)修改功能流程图查看:输入编号,显示出此编号的姓名、电话号码、类型、邮箱。开始开始打开文件输入编号没有此编号返回主菜单显示信息有此编号NY(图4-6)显示功能流程图程序截图(图4-7)通讯录主界面截图(图4-8)添加功能截图(图4-9)修改功能截图(图4-10)显示功能截图源代码/*项目名称:手机短信管理系统实施时间: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); }}voidShow(charFilename[]){ /* 函数说明:显示指定文件中的所有数据 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:addressbookmenu函数 创建人:郭成 创建日期:12月22日 */ PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); while(fread(&P,sizeof(PatientInfo),1,fp)) { 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\t\t\t"); } printf("\n\t\t\t所有联系人信息已全部显示出来!\n"); fclose(fp);}短信录流程图开始开始读出功能代号新建删除修改查看显示关闭123456结束关闭短信录(图4-11)短信录主函数流程图 新建功能:在新建短信输入编号时,将判断此编号在通讯录上有无,如果有则显示出来,并对此编号发送信息,如果没有此编号则新建一条信息。开始开始读入编号显示此编号信息发送短信返回主菜单保存编号是否存在NY(图4-12)新建短信流程图(删除、修改、查看、显示流程图均与通讯录相差不大,这里就不画出来了)程序截图(图4-13)短信录主界面截图(图4-14)短信录新建短信截图(图4-15)短信录显示短信截图(图4-16)短信录删除短信截图源代码/*项目名称:手机短信管理系统实施时间:2015年12月22日创建人:郭成*/#include"stdio.h"#include"stdlib.h"#include"string.h"#include"windows.h"//定义了Windows的所有资料型态、函数调用、资料结构和常数识别字#include"conio.h"//进行输入、输出的//定义结构体类型typedefstructPatient_Info//typedef自定义结构体类型PatientInfo,可以用PatientInfo来定义变量{ intnumber;//编号 charname[8];//姓名 charphonecode[20];//电话号码 chargroup[10];//类型 charemail[20];//邮箱 charcontent[200];//短信内容}PatientInfo;//局部函数声明staticvoidAdd(char[]);staticvoidSearch(char[]);staticvoidAlter(char[]);staticvoidDel(char[]);staticvoidShow(char[]);//主菜单voidMessagemenu(){ inti; charFilename[20];//文件名变量 charMes[]="Message.dll";//指定文件 strcpy(Filename,Mes); 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");Add(Filename);break; case2:system("cls");Del(Filename);break; case3:system("cls");Alter(Filename);break; case4:system("cls");Search(Filename);break; case5:system("cls");Show(Filename);break; case6:break; default:printf("错误选择!请重选");break; } }while(i!=6);}//新建短信voidAdd(charFilename[])//{ /* 函数说明:对指定文件名进行数据的插入 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:messagemenu函数 创建人:郭成 创建日期:12月22日 */ intin_number; PatientInfoP;//定义一个信息的变量 intflag=1; FILE*fp,*fptemp;//fp是数据源文件,fptemp是临时文件 fptemp=fopen("Addressbook.dll","r");//已只读方式临时打开通讯录文件,此操作是为了才看通讯录里是否有相同的编号,如果有则显示出来 printf("请根据以下提示信息操作:"); printf("\n编号:"); scanf("%d",&in_number); while(!feof(fptemp)&&flag) { if(fread(&P,sizeof(PatientInfo),1,fptemp)) { if(P.number==in_number) { printf("\n该编号已存在,自动显示该编号联系人!\n"); 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"); } } } fclose(fptemp);//关闭通讯录文件以便短信内容储存在短信文件内 fp=fopen(Filename,"a");//以追加方式打开短信文件准备追加 printf("\n新建短信:\n"); P.number=in_number; printf("姓名:"); scanf("%s",P.name); printf("电话:"); scanf("%s",&P.phonecode); printf("短信内容:"); scanf("%s",P.content); printf("\n\t\t\t"); if(fwrite(&P,sizeof(PatientInfo),1,fp)!=1) { printf("输入数据失败,请重新输入!"); } else printf("\n添加成功!"); fclose(fp);}voidSearch(charFilename[]){ /* 函数说明:从指定文件中查找数据 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:messagemenu函数 创建人:郭成 创建日期: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|"); printf("\n\t\t\t|%d",P.number); printf("|%s\t",P.name); printf("|%s\t",P.phonecode); printf("|%s\t",P.content); printf("\n\n\t\t\t联系人%s的信息已显示出来!\n",P.name); printf("\t\t\t"); flag=0; } } fclose(fp); if(flag) { printf("没有你要找的信息!"); }}voidAlter(charFilename[])//{ /* 函数说明:修改指定文件中的数据 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:messagemenu函数 创建人:郭成 创建日期: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("\n姓名:"); scanf("%s",P.name); printf("电话:"); scanf("%s",&P.phonecode); printf("短信内容:"); scanf("%s",P.content); printf("\n\t\t\t"); 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); }}voidDel(charFilename[])//{ /* 函数说明:删除指定文件中的某条数据 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:messagemenu函数 创建人:郭成 创建日期: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); }}voidShow(charFilename[]){ /* 函数说明:显示指定文件中的所有数据 形参说明:数组作为形参,实参必须是一个地址,用于传递文件名 调用位置:messagemenu函数 创建人:郭成 创建日期:12月22日 */ PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); while(fread(&P,sizeof(PatientInfo),1,fp)) {printf("\n\t\t\t\n"); printf("\n\t\t\t|编号\t|姓名\t|电话\t\t|短信内容\t\t\t|"); printf("\n\t\t\t|%d",P.number); printf("|%s\t",P.name); printf("|%s\t",P.phonecode); printf("|%s\t",P.content); printf("\n\t\t\t"); } printf("\n\t\t\t所以联系人的信息已显示出来!\n"); fclose(fp);}总结经过二个周的程序设计实验,我清楚并且深刻地认识到了编写一个计算机程序的不易。要成功实现一个C程序的编译与运行,前提是熟练掌握C语言中基本的命令指示符,并且要能熟练运用各种语句结构及算法。其次,好的开始才能带动一个好的过程,一个程序的设计离不开一个清晰的逻辑框架和程序模块,同时也需要我们严格并有条理地按照既有的设计思路来进行代码的编写。代码的编写对我来说可以说是最大的一道坎,对于只有一学期C语言学习经历的我来说,要编写这么庞大复杂的程序是几乎是不可能的,但是,在代码编写过程中我不断学习,不断去想那些师兄问问题,找同学互相学习,终于把代码基本编写了出来。最后,程序的调试也是个极其困难的过程,要么是语法错误,要么修改后有些功能实现不了,那些简单的语法错误我们改正还比较容易,功能实现的问题就比较困难了,我还得四处搜集资料,或者请教老师和一些水平比较高的同学。一门技术的理论学习是辛苦的,但要懂得一门技术的运用更要付出劳动和汗水。虽然我的程序还有很多欠缺,比如,当删除或修改通讯录中一个人的信息后,他在短信录中的信息还是没变,但最后我还是值得高兴,就像自己完成了一个奇迹一样,做了一件自己一个人几乎不可能完成的任务,那种成就感无法用语言表达。虽然程序设计困难重重,但我都坚持了下来。这两周的实验也让我明白,虽然自己手中的手机玩起来很容易,但其实手机的背后是多大的人力物力的堆积啊,这都是现代科技的成果!总而言之,这两周的实验让我收益匪浅。它不仅将理论与实际相结合,培养了我动手操作和独立思考的能力,为我以后步入社会做准备。这次的实验激发了我不断学习兴趣,它让还我明白了,不论困难多大,只要我们积极思考,勇于实践,就一定能够解决问题。目录TOC\o"1-3"\u第一章总论 1一、项目提要 1二、可行性研究报告编制依据 2三、综合评价和论证结论 3四、存在问题与建议 4第二章项目背景及必要性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论