关键词不能为空

当前您在: 主页 > 高中公式大全 >

动画片熊出没C语言qq好友管理系统课程设计

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-12-24 23:07
tags:qq好友管理器

堂堂正正-日语句子

2020年12月24日发(作者:汪照)




课 程 设 计


QQ好友管理系统


课程设计名称: 数据结构课程设计
专 业 班 级 : 16机电二班
小组成员 :王守锋 石松轶 陆永斌 张智斌 李浩明
指 导 教 师 : 徐丽萍
课程设计时间: 2017年5月30日





计算机应用技术 专业课程设计任务书


0

学生姓名
题 目
课题性质
指导教师
专业班级 学号
QQ好友中通讯录管理系统
工程设计

课题来源
同组姓名
自拟课题

运用C语言和数据结构知识设计QQ好友管理系统
主要内容
QQ不仅仅是个社交平台,还应是个工作平台,将通讯录保存在QQ用时更加
方便。
通过QQ可以直接呼叫联系人。
1 添加好友信息 2 显示好友信息
任务要求
3 删除好友信息 4 更改好友信息

5 查询好友信息
《数据结构(C语言版)》严蔚敏 清华大学出版社
参考文献
《C语言程序设计》(第三版)谭浩强 清华大学出版社


指导教师签字:
审查意见
教研室主任签字: 年 月 日

1


目 录

1 需求分析 ................................. ................................................. 3
2概要设计 ...................................... ............................................. 3
3 详细设计 ....................................... ........................................... 5
4 运行环境 ....................................... ........................................... 5
5 开发工具和编程语言 .................................. ........................... 6
6 程序设计 ......... .................................................. ....................... 6
7 调试分析 ............. .................................................. ................. 12
8 测试结果 .................. .................................................. ............ 12
9参考文献 ........................ .................................................. ....... 17
10心得体会 ............................ .................................................. . 18
11 成绩评价表................................. ......................................... 18












2

1 需求分析

QQ的普及度越来越高,其功 能也需要加强。将通讯录的功能添加到QQ好友
管理系统中,使其在聊天中就可以呼叫联系人,并且将通 讯录的信息可以QQ中
长期保存,在无手机的情况下也查找好友手机号。从而使QQ功能更加完善,使< br>用起来更加方便和快捷。

2概要设计
(1)实现功能:








菜 单































(2)序中各函数程简单说明见下:

返回值
int
void
int
void
void
void
void
void
void
函数名
main
menu
reads
save
add
del
query
chang
show
参数表
void
void
Haoyou stu[N]
haoyou stu[N],n
void
void
void
void
void
函数说明 提供客户
主函数 是
显示功能 是
读取 否
保存 是
添加 是
删除 否
查找 是
修改 否
信息显示 是







3


(3)对程序中的各个函数功能的描述
[1]主函数main
系统开始、结束界面的显示、各个功能函数的调用、转换以及参 数的
传递、定义QQ头结点并传递给各个功能函数
[2]功能显示menu
介绍程序的功能,按那些键实现其特点功能。
[3]读取函数reads
读取用户输入的信息,将其按线性表的形式呢存储,
联系人的编号为其头结点。
[4]保存函数save
将输入的信息保存,若失败返回保持失败。
[5]添加联系人函数add
增加联系人到QQ通讯录的尾部,返回增加是否成功。
[6]删除函数del
按照用户指定的联系人编号删除相应联系人信息,返回删除是否成功。
[7]查找函数query
按照用户提供的联系人姓名查找第一个合法姓名对应的信息,查找成
功则显示信息,失败则提示无此联系人,返回是否查找到。
[8]修改函数chang
按照用户提供的联系人姓名修改联系人所有信息,返回修改是否
成功。
[9]显示信息函数show
显示当前通讯录中所有联系人的信息,若为空通讯录,则显示无联
系人。









4


3 详细设计




显示
功能
menu

主函数main





读取
功能
reads
保存
功能
save
添加
功能
add
删除
功能
del

查找
功能
quer
y
修改
功能
chang
显示
功能
show
4 运行环境

1) 软件环境
操作系统:Windows7,Windows8
2) 硬件环境
处理器:Intel Pentium 166MX 或更高
内存:32MB以上
硬盘空间:1GB以上
显卡:SVGA 显示适配






5

5 开发工具和编程语言
Microsoft visual C++
C语言


6 程序设计
#include
#include
#include
#include主要做图形图像,例如说设置背景色的函数,字体颜色的
函数、输出格式的函数等*
#define N 30
typedef struct haoyou*typedef是类型定义的意思。typedef struct 是为了使用这
个结构体方便。 具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的
变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct
node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去
struct这个关键字*
{
char num[20];
char name[10];
char adress[50];
char QQ[15];
char tel[15];
}haoyou;
void menu();
int reads(haoyou stu[N]); 读取
void save(haoyou stu[N],int n); 保存
void add(); 添加
void del(); 删除
void query(); 查询
void change(); 修改
void show(); 信息显示
void main()
{
int n;
while(1) *while(1)其中1代表一个常量表达式,他永远不会等于0。所以,循环会
一直执行下去。除非 你设置break等类似的跳出循环语句循环才会中止*
{

6








menu();
printf(n
printf(您现在看到的是QQ中的通讯录 n
printf(n
printf(n
printf(请输入您要选择的操作编号,按回车键确认:n
printf(n
scanf(
switch(n)
{
case 1: add();break;
case 2: show();break;
case 3: del();break;
case 4: change();break;
case 5: query();break;
case 0: exit(0);
default:
printf(












printf(输入错误,请输入列表中存在的编号 n
printf(
}
printf(
printf(按任意键返回n
printf(
getch(); *getch();或ch=getch(); 用getch ();会等待你
按下任意键,再继续执行下面的语句;用ch=getch();会等待你按下任意键之 后,把该键
字符所对应的ASCII码赋给ch,再执行下面的语句。*
}

}
void menu()
{
system(颜色
system(清屏
printf(好友信息管理系统*******************n
printf(添加好友信息 **n
printf(显示好友信息 **n
printf(删除好友信息 **n
printf(更改好友信息 **n
printf(查询好友信息 **n
printf(退出 **n
printf(
}

7

int reads(haoyou stu[N]) 读取好友文件中的内容
{

FILE *fp;
int i=0;
if((fp=fopen(
{
printf(文件打开失败!n
return 0;
}
else
{
for(i=0;!feof(fp);i++)

fscanf(fp,%s %s %sn
].QQ,stu[i].tel);

}
fclose(fp);
return i;
}
void save(haoyou stu[N],int n) 好友信息改变后更新文件
{
FILE *fp;
int i=0;
if((fp=fopen(
{
printf(文件打开失败!n
return
}
else
{
for(i=0;i
fprintf(fp,
tu[i].QQ,stu[i].tel);
}
fclose(fp);
}
void add()*添加好友信息*
{
FILE *fp;
int n,i;
haoyou stu;

8

if((fp=fopen(如果文件已经存在,可以追
加好友信息*
{
if((fp=fopen(文件不存在时,创建新
文件,输入好友信息*
{
printf(文件打开失败!n
return;
}
}
printf(
printf(请输入要添加的好友数量,按回车键确认:n
printf(
scanf(
for(i=1;i<=n;i++)
{

printf(
printf(请输入第%d个好友的编号、姓名,用空格分开,并按回车键确认:n

printf(
scanf(

printf(
printf(请输入第%d个好友的地址、QQ号和电话,用空格分开,并按回车键确认:
n

printf(
scanf(

fprintf(fp,%s %s %s %sn

}
fclose(fp);
}
void show() 好友信息显示函数
{
haoyou stu[N];
int i,n;
n=reads(stu);
printf(所有的好友信息如下*******************nn
printf(序号 编号 姓名 地址 QQ号 电话 n
printf(
for(i=0;i
9


printf(
].num,stu[i].name,stu[i].adress,st u[i].QQ,stu[i].tel);
printf(
getch();
}
void del() *好友信息删除函数*
{
haoyou stu[N];
char number[20];
int n,i,j;
n=reads(stu);
printf(
printf(请输入要删除信息的好友编号,按回车键确认:n
printf(
scanf(
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
}
void change() 好友信息更改
{
haoyou stu[N];
int n,i;
char number[20];
printf(
printf(请输入要更改信息的好友编号,按回车键确认:n
printf(
scanf(
n=reads(stu);
for(i=0;i if(strcmp(number,stu[i].num)==0)
break;

10













if(i>=n)
{
printf(无此好友信息!
return;
}
printf(
printf(请输入更改后好友的编号,姓名,地址,QQ号,电话,按回车键确认:n

printf(

scanf(
u[i].tel);
save(stu,n);
}

void query() 按编号对好友信息查询
{
haoyou stu[N];
char number[20];
int i,n;
n=reads(stu);
printf(
printf(请输入待查询的好友编号,按回车键确认:n
printf(
scanf(
for(i=0;i if(strcmp(number,stu[i].num)==0) break;
if(i>=n)
{







printf(没有找到该好友信息!n
return;
}
else
{

printf(
printf(编号 姓名 地址 QQ号 电话 n

printf(

printf(
i].name,stu[i].adress ,stu[i].QQ,stu[i].tel);


11

printf(
}
}


7 调试分析
1 在测试删除QQ联系人函数时发现无论通讯录中现存多少条记录只
要删除一条测试中的问题举例: 之后,通讯录就会被清空,经过检查发现是
删除函数中的条件控制设置有错,导致只要一删除一个联系人 就会事头结点
与尾结点指向同一个,导致再显示联系人时显示无联系人。经过调整已 处
理好。算法改进设想举例:
2 程序中还有很多地方不能很好的模拟QQ通讯录的功能 ,比如在增肌联
系人时,不管原来新联系人姓名是否已存在,都会被加入通讯录,这样一来
就有 可能重复记录。此外在查找联系人时只要查找到一个合法记录就会中断
查找操作,如此有可能导致记录的 漏查。结合以上两点应优化增加查找联系
人算法,在存入之间进行防重判断。

8 测试结果
1.测试数据举例

编号 姓名
1 duanbao
2 xiaoming
3 xiaowang
地址
henan
henan
henan
QQ号 手机号
163388 3768388
37838282 83263848
67284784 474847382
2.按如下顺序进行测试:
1) 显示各个功能所对应的建
2) 添加好友信息
3) 显示好友信息
4) 删除好友信息
5) 更改好友信息
6) 查询好友信息

12

7) 退出系统


3 按照如上提供的测试步骤得出以下结果运行图:
1) 显示各个功能所对应的建如图1

图1 运行实例
2) 添加好友信息如图2

13


图2 运行实例

3) 显示好友信息如图3


14

图3 运行实例

3) 删除好友信息如图4

图4 运行实例


5) 更改好友信息如图


15


图5 运行实例
6) 查询好友信息如图6


图6 运行实实例


7) 退出系统如图7

16


图7 运行实例

9参考文献

[1]
严蔚敏,《数据结构(C语言版)》 清华大学出版社
[2]谭浩强.《C语言程序设计》(第三版) 清华大学出版社
[3]Peter Van Der Linden ,C专家编程,人民邮电出版社
[4]Kenneth C和指针 ,人民邮电出版社









17

10心得体会

通过这次数据结构实践作业,我更深刻的体会到了C语言的语句简洁性、紧
凑性,将 文件与结构体结合可以实现好多功能。
语言是程序的骨肉,而数据结构和算法即使程序的灵魂,要想成 功的编写程
序必须选好合适的数据结构,比如这次课程设计中,最开始我准备用普通的结构
体进 行设计,后来发现那样很不方便,后来改为用文件之后就方便了许多。
另外,我觉得比较重要的一点是 在编复杂程序时要有宏观思想,想从整体把
握设计好各个板块的调用关系,最好先做出一个流程图,再按 照这个总体设想进
一步具体、细化!这样才不会在需要调用其它函数时手忙脚乱!
此外,进行 如上所述的操作前提都是以扎实的语言基础做为前提的,在最开
始的代码编辑阶段,我曾被指针很深的困 扰,后来对此一节找了些资料进行“补
课”,自己也进行的深入的理解,后来才逐渐顺利起来!














11
计算机应用技术
学院课程设计成绩评价表

18

课程名称:数据结构课程设计
设计题目:
QQ好友中通讯录系统

专业: 班级: 姓名: 学号:
序号 评审项目 分 数 满分标准说明
思路清晰;语言表达准确,概念清楚,论点正确;实验方法科
1 内 容 学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,
做了大量的工作。
2 创 新
内容新颖,题目能反映新技术,对前人工作有改进或突破,或
有独特见解
3 完整性、实用性 整体构思合理,理论依据充分,设计完整,实用性强
4 数据准确、可靠 数据准确,公式推导正确
5 规 范 性
设计格式、绘图、图纸、实验数据、标准的运用等符合有关标
准和规定
6 纪 律 性 能很好的遵守各项纪律,设计过程认真;
7 答 辩
准备工作充分,回答问题 有理论依据,基本概念清楚。主要问
题回答简明准确。在规定的时间内作完报告。












指导教师 年 月 日


19

中国遗产税-鼎的拼音


我想死-官场现形记读后感


看球赛-网上发表文章


个体工商户注册资金-渝新欧


动物叫声下载-复读软件


变频器作用-吉非罗齐


encompass-全都是泡菜


可爱的-叫一声妈妈



本文更新与2020-12-24 23:07,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/487959.html

C语言qq好友管理系统课程设计的相关文章