C语言qq好友管理系统课程设计.docx
- 文档编号:8387543
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:279.37KB
C语言qq好友管理系统课程设计.docx
《C语言qq好友管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C语言qq好友管理系统课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
C语言qq好友管理系统课程设计
C语言qq好友管理系统课程设计(总17页)
课程设计
QQ好友管理系统
课程设计名称:
数据结构课程设计
专业班级:
16机电二班
小组成员:
王守锋石松轶陆永斌张智斌李浩明
指导教师:
徐丽萍
课程设计时间:
2017年5月30日
计算机应用技术专业课程设计任务书
学生姓名
专业班级
学号
题目
QQ好友中通讯录管理系统
课题性质
工程设计
课题来源
自拟课题
指导教师
同组姓名
无
主要内容
运用C语言和数据结构知识设计QQ好友管理系统
QQ不仅仅是个社交平台,还应是个工作平台,将通讯录保存在QQ用时更加方便。
通过QQ可以直接呼叫联系人。
任务要求
1添加好友信息2显示好友信息
3删除好友信息4更改好友信息
5查询好友信息
参考文献
《数据结构(C语言版)》严蔚敏清华大学出版社
《C语言程序设计》(第三版)谭浩强清华大学出版社
审查意见
指导教师签字:
教研室主任签字:
年月日
1需求分析
QQ的普及度越来越高,其功能也需要加强。
将通讯录的功能添加到QQ好友管理系统中,使其在聊天中就可以呼叫联系人,并且将通讯录的信息可以QQ中长期保存,在无手机的情况下也查找好友手机号。
从而使QQ功能更加完善,使用起来更加方便和快捷。
2概要设计
(1)实现功能:
(2)序中各函数程简单说明见下:
返回值
函数名
参数表
函数说明
提供客户
int
main
void
主函数
是
void
menu
void
显示功能
是
int
reads
Haoyoustu[N]
读取
否
void
save
haoyoustu[N],n
保存
是
void
add
void
添加
是
void
del
void
删除
否
void
query
void
查找
是
void
chang
void
修改
否
void
show
void
信息显示
是
(3)对程序中的各个函数功能的描述
[1]主函数main
系统开始、结束界面的显示、各个功能函数的调用、转换以及参数的传递、定义QQ头结点并传递给各个功能函数
[2]功能显示menu
介绍程序的功能,按那些键实现其特点功能。
[3]读取函数reads
读取用户输入的信息,将其按线性表的形式呢存储,
联系人的编号为其头结点。
[4]保存函数save
将输入的信息保存,若失败返回保持失败。
[5]添加联系人函数add
增加联系人到QQ通讯录的尾部,返回增加是否成功。
[6]删除函数del
按照用户指定的联系人编号删除相应联系人信息,返回删除是否成功。
[7]查找函数query
按照用户提供的联系人姓名查找第一个合法姓名对应的信息,查找成
功则显示信息,失败则提示无此联系人,返回是否查找到。
[8]修改函数chang
按照用户提供的联系人姓名修改联系人所有信息,返回修改是否
成功。
[9]显示信息函数show
显示当前通讯录中所有联系人的信息,若为空通讯录,则显示无联
系人。
3详细设计
4运行环境
1)软件环境
操作系统:
Windows7,Windows8
2)硬件环境
处理器:
IntelPentium166MX或更高
内存:
32MB以上
硬盘空间:
1GB以上
显卡:
SVGA显示适配
5开发工具和编程语言
MicrosoftvisualC++
C语言
6程序设计
#include<>
#include<>
#include<>
#include""/*主要做图形图像,例如说设置背景色的函数,字体颜色的函数、输出格式的函数等*/
#defineN30
typedefstructhaoyou/*typedef是类型定义的意思。
typedefstruct是为了使用这个结构体方便。
具体区别在于:
若structnode{}这样来定义结构体的话。
在申请node的变量时,需要这样写,structnoden;若用typedef,可以这样写,typedefstructnode{}NODE;。
在申请变量时就可以这样写,NODEn;区别就在于使用时,是否可以省去struct这个关键字*/
{
charnum[20];
charname[10];
charadress[50];
charQQ[15];
chartel[15];
}haoyou;
voidmenu();
intreads(haoyoustu[N]);um,stu[i].name,stu[i].adress,stu[i].QQ,stu[i].tel);
}
fclose(fp);
returni;
}
voidsave(haoyoustu[N],intn)um,stu[i].name,stu[i].adress,stu[i].QQ,stu[i].tel);
}
fclose(fp);
}
voidadd()/*添加好友信息*/
{
FILE*fp;
intn,i;
haoyoustu;
if((fp=fopen("d:
\\","a"))==NULL)/*如果文件已经存在,可以追加好友信息*/
{
if((fp=fopen("d:
\\","w"))==NULL)/*文件不存在时,创建新文件,输入好友信息*/
{
printf("文件打开失败!
\n");
return;
}
}
printf("**************************************\n");
printf("请输入要添加的好友数量,按回车键确认:
\n");
printf("**************************************\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("*****************************************************\n");
printf("请输入第%d个好友的编号、姓名,用空格分开,并按回车键确认:
\n",i);
printf("*******************************************************\n");
scanf("%s%s",,;
printf("******************************************************\n");
printf("请输入第%d个好友的地址、QQ号和电话,用空格分开,并按回车键确认:
\n",i);
printf("*****************************************************\n");
scanf("%s%s%s",,,;
fprintf(fp,"%s%s%s%s%s\n",,,,,;
}
fclose(fp);
}
voidshow()um,stu[i].name,stu[i].adress,stu[i].QQ,stu[i].tel);
printf("*******************************************************\n");
getch();
}
voiddel()/*好友信息删除函数*/
{
haoyoustu[N];
charnumber[20];
intn,i,j;
n=reads(stu);
printf("********************************************\n");
printf("请输入要删除信息的好友编号,按回车键确认:
\n");
printf("********************************************\n");
scanf("%s",number);
for(i=0;i if(strcmp(number,stu[i].num)==0)break; if(i>=n) { printf("没有找到该好友信息! \n"); return; } else { for(j=i+1;j stu[j-1]=stu[j]; } save(stu,n-1); printf("删除成功! \n"); } voidchange()um)==0) break; if(i>=n) { printf("无此好友信息! "); return; } printf("******************************************************\n"); printf("请输入更改后好友的编号,姓名,地址,QQ号,电话,按回车键确认: \n"); printf("******************************************************\n"); scanf("%s%s%s%s%s",stu[i].num,stu[i].name,stu[i].adress,stu[i].QQ,stu[i].tel); save(stu,n); } voidquery()um)==0)break; if(i>=n) { printf("没有找到该好友信息! \n"); return; } else { printf("******************************************************\n"); printf("编号姓名地址QQ号电话\n"); printf("*******************************************************\n"); printf("\n%s%s%s%s%s\n",stu[i].num,stu[i].name,stu[i].adress,stu[i].QQ,stu[i].tel); printf("****************************************************\n"); } } 7调试分析 1在测试删除QQ联系人函数时发现无论通讯录中现存多少条记录只要删除一条测试中的问题举例: 之后,通讯录就会被清空,经过检查发现是删除函数中的条件控制设置有错,导致只要一删除一个联系人就会事头结点与尾结点指向同一个,导致再显示联系人时显示无联系人。 经过调整已处理好。 算法改进设想举例: 2程序中还有很多地方不能很好的模拟QQ通讯录的功能,比如在增肌联系人时,不管原来新联系人姓名是否已存在,都会被加入通讯录,这样一来就有可能重复记录。 此外在查找联系人时只要查找到一个合法记录就会中断查找操作,如此有可能导致记录的漏查。 结合以上两点应优化增加查找联系人算法,在存入之间进行防重判断。 8测试结果 1.测试数据举例 编号 姓名 地址 QQ号 手机号 1 duanbao henan 163388 3768388 2 xiaoming henan 3 xiaowang henan 2 2.按如下顺序进行测试: 1)显示各个功能所对应的建 2)添加好友信息 3)显示好友信息 4)删除好友信息 5)更改好友信息 6)查询好友信息 7)退出系统 3按照如上提供的测试步骤得出以下结果运行图: 1)显示各个功能所对应的建如图1 图1运行实例 2)添加好友信息如图2 图2运行实例 3)显示好友信息如图3 图3运行实例 3)删除好友信息如图4 图4运行实例 5)更改好友信息如图 图5运行实例 6)查询好友信息如图6 图6运行实实例 7)退出系统如图7 图7运行实例 9参考文献 [1]严蔚敏,《数据结构(C语言版)》清华大学出版社 [2]谭浩强.《C语言程序设计》(第三版)清华大学出版社 [3]PeterVanDerLinden,C专家编程,人民邮电出版社 [4]KennethC和指针,人民邮电出版社 10心得体会 通过这次数据结构实践作业,我更深刻的体会到了C语言的语句简洁性、紧凑性,将文件与结构体结合可以实现好多功能。 语言是程序的骨肉,而数据结构和算法即使程序的灵魂,要想成功的编写程序必须选好合适的数据结构,比如这次课程设计中,最开始我准备用普通的结构体进行设计,后来发现那样很不方便,后来改为用文件之后就方便了许多。 另外,我觉得比较重要的一点是在编复杂程序时要有宏观思想,想从整体把握设计好各个板块的调用关系,最好先做出一个流程图,再按照这个总体设想进一步具体、细化! 这样才不会在需要调用其它函数时手忙脚乱! 此外,进行如上所述的操作前提都是以扎实的语言基础做为前提的,在最开始的代码编辑阶段,我曾被指针很深的困扰,后来对此一节找了些资料进行“补课”,自己也进行的深入的理解,后来才逐渐顺利起来! 11计算机应用技术学院课程设计成绩评价表 课程名称: 数据结构课程设计 设计题目: QQ好友中通讯录系统 专业: 班级: 姓名: 学号: 序号 评审项目 分数 满分标准说明 1 内容 思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。 任务饱满,做了大量的工作。 2 创新 内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解 3 完整性、实用性 整体构思合理,理论依据充分,设计完整,实用性强 4 数据准确、可靠 数据准确,公式推导正确 5 规范性 设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定 6 纪律性 能很好的遵守各项纪律,设计过程认真; 7 答辩 准备工作充分,回答问题有理论依据,基本概念清楚。 主要问题回答简明准确。 在规定的时间内作完报告。 总分 综 合 意 见 指导教师年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 qq 好友 管理 系统 课程设计