1、C 语言课程设计报告课程设计题目:QQ 好友资料系统仲恺农业技术学院QQ 好友资料系统课程设计一.需求分析本 QQ 好友资料系统可以为您储存您的好友 QQ 资料(包括好友的序号,QQ 号码,QQ 昵称,好友真实姓名,以及好友性别),管理您的好友资料.本系统具体有如下功能:1.查找好友资料:本系统存储了您的好友资料若干名,如果您想查找某个好友的资料,您可以使用本系统功能 1.您只需要输入好友的名字,系统将自动输出对方的全部 QQ 资料,从而找到对方的所有 QQ 资料.方便又快速.2.插入新的好友资料:如果您想在本系统增加新的好友资料,那么您可以用2本系统功能 2,来继续存储新的好友资料.您可以任
2、意选择一个位置插入您的好友资料,然后按提示输入好友资料就行了,非常简单.3.删除好友资料:您若想删除某个好友的资料,也可以使用本系统,即本系统功能 3.您只要输入您想删除的好友的序号,即可以删除所对应的好友的全部 QQ资料.4.一次性查看全部好友资料:由于本系统是您的 QQ 好友资料存储空间,所以您也可以一次性查看所有好友的资料,即本系统功能 4.5.本系统及设计者的介绍.6.退出本系统.二.概要设计1. 存储结构说明:为了完成这个 QQ 好友资料系统,我采用了结构体数组来存储数据.就是将好友的资料以序号为顺序一一存储进结构体数组里面.结构这种存储结构有很好的优点.首先它结构简单清晰整齐,让我
3、们一目了然,知道系统的数据是怎样的;其次,数据调用起来也非常方便,可以让我们清楚的知道调用的是何种数据;最后,它也方便修改.当然,在一开始使用结构体数组的时候也碰到一些困难,比如说不清楚如何去修改里面的数据.但在,艰难地,在老师和同学的帮助下,终于搞清楚了数据的调用与修改,让这个 QQ 好友资料系统得以产生.2.每个部分的算法设计说明:由于本 QQ 好友资料系统主要功能为四个,即:查找某个好友资料,添加新好友资料,删除某个好友资料,查看全部好友资料.所以本系统程序主要算法分为以下 5 个:A.首先是主函数的算法.主函数里面主要包括两个部分,一个是系统的界面的源代码,另外一个是一个 while
4、循环.循环里面包括一个 switch 语句,来实现对各个输入功能的选择以及切换.其中 switch 语句里面包含 6 个 case,即查找功能,添加功能,删除功能,查看全部资料功能,介绍系统及制作者功能,退出功能(用 exit()函数实现).主函数流程图:选择功能查找某个好友资料添加新的好友资料删除某个好友资料查看所有好友资料系统及制作者介绍退出该QQ好友系统开 始B.实现查找功能的函数 search().这里主要用到字符串数组,for 语句循环,strcmp 函数以及结构体数组的调用.先输入好友真实姓名(即关键字这里用到字符串数组),然后使用 strcmp 函数和 for 循环来实现字符串的
5、比较,最后调用结构体数组里面的数据输出查找结果.流程图如下:开 始4输入 rnstrcmp(rn,qi.realname)=0输出好友资料Y结 束NC.实现添加(插入)功能的函数 add().这里主要用到 for 语句跟 strcpy 函数以及结构体数组的调用.先输入要插入的位置,然后用一个 for 循环跟 strcpy 函数以及调用结构体数组来实现插入位置后面的数据的后移,接着按照提示输入新的好友资料,最后调用结构体数组里面的数据输出新的好友资料.流程图如下:定义 rn20,i开 始定义 j,k输入 k11j=kYstrcpy(qj.qqname,qj-1.qqname);strcpy(qj
6、.realname,qj-1.realname);qj.number=qj-1.number;qj.qqnum=qj-1.qqnum;qj.sex=qj-1.sex;N输入新的好友资料 qk-1.number=k; qk-1.qqnum; qk-1.qqname; qk-1.realname;qk-1.sex输出新的好友资料 qk-1.number,qk-1.qqnum,qk-1.qqname,qk-1.realname,qk-1.sex,qk-1.sex结 束D 实现删除功能的函数 delete().这里的算法思想跟实现添加功能的函数的算法思想相似.也是主要用到 for语句跟 strcpy
7、函数以及结构体数组的调用.先输入要删除的好友资料的位置,然后不同的是,用一个 for 语句跟 strcpy 函数来实现被删除的位置后面的数据的前移.接着再用一个 for 语句以及调用结构体数组里面的数据来输出一个全新的(即不包含被删除资料)全部的好友资料.流程图如下:6输入 fe#include#includestruct qq /*定义一个结构体*/int number; /*序号*/int qqnum; /*qq 号码*/char qqname30; /*qq 昵称*/char realname30; /*好友真实名字*/char sex; /*好友性别*/开 始 定义 ii=k;j-)
8、/*定义一个循环,使插入位置 k 后面的资料依次往后移*/strcpy(qj.qqname,qj-1.qqname);strcpy(qj.realname,qj-1.realname);qj.number=qj-1.number;qj.qqnum=qj-1.qqnum;qj.sex=qj-1.sex;qk-1.number=k; /*输入新的好友资料*/printf(“输入新的 qq 号码n“);scanf(“%d“,printf(“输入新的好友呢称n“);scanf(“%s“,qk-1.qqname);printf(“输入新的好友名字n“);scanf(“%s“,qk-1.realname)
9、;fflush(stdin);printf(“新好友的性别n“);scanf(“%c“,printf(“新的好友的资料如下n“);printf(“序号:%dnqq 号码:%dnqq 昵称:%sn 真实名字:%sn 性别:%cn“,qk-1.number,qk-1.qqnum,qk-1.qqname,qk-1.realname,qk-1.sex);10void delete() /*定义一个删除功能的函数*/int e,f,l;printf(“输入要删除的好友序号n“);scanf(“%d“,for(e=f;en“);printf(“ 本系统介绍:n“);printf(“ 本系统可以为您储存您的
10、好友资料提供很大的方便.n“);printf(“1.本系统存储了您的好友资料若干名,您可以通过查找好友的名字从而找到对方的 qq 资料,即本系统功能 1.n“);printf(“2.您可以用本系统继续存储新的好友资料,即本系统功能 2.n“);printf(“3.您若想删除某个好友的资料,也可以使用本系统,即本系统功能3.n“);printf(“4.您也可以一次性查看所有好友的资料,即本系统功能 4.n“);printf(“n“);printf(“设计者介绍:n“);printf(“姓名:林校平n“);printf(“班级:网络工程 051n“);printf(“学号:9n“);void ma
11、in() /*定义主函数*/int b=252;int a=14;int n;printf(“%c%c%c%c%c%c%c%c%c%c“,b,b,b,b,b,b,b,b,b,b);printf(“%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c “,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a);printf(“%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c“,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a);printf(“n“);printf(“n“);printf(“ QQ 好友资
12、料系统n“);printf(“n“);printf(“ 33333333333333333333333333333n“);printf(“ 33 33n“); printf(“ 33 *1 查找好友资料 1233n“);printf(“ 33 33n“); printf(“ 33 *2 添加好友资料 33n“);printf(“ 33 33n“);printf(“ 33 *3 删除好友资料 33n“);printf(“ 33 33n“); printf(“ 33 *4 所有好友资料 33n“);printf(“ 33 33n“); printf(“ 33 *5 系统及设计者介绍 33n“);p
13、rintf(“ 33 33n“); printf(“ 33 *6 退出 33n“);printf(“ 33 33n“);printf(“ 33333333333333333333333333333n“);printf(“n“);printf(“ 设计者:林校平“);printf(“n“);printf(“n“);printf(“n“);printf(“%c%c%c%c%c%c%c%c%c%c“,b,b,b,b,b,b,b,b,b,b);printf(“%c %c %c %c %c %c %c %c %c %c %c %c %c %c %c “,a,a,a,a,a,a,a,a,a,a,a,a,a
14、,a,a);printf(“%c %c %c %c %c %c %c %c %c %c %c %c %c %c %cn“,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a);printf(“n“);printf(“n“);while(1) /*定义一个循环来使各个功能之间的切换*/printf(“请输入选择的功能n“);scanf(“%d“,switch(n)case 1: search();break;case 2: add();break;case 3: delete();break;case 4: shuchu();break;case 5: introduce();break
15、;case 6: exit(0);default: printf(“输入错误,请继续输入n“); 四.调试分析正确操作后显示的功能结果A.当进入系统时我们可以见到的欢迎界面如下:14B.选择功能 1,按提示输入好友的真实姓名,即输出相应好友的 QQ 资料,如图:若无此好友,则显示C.选择功能 2,按提示输入新的好友资料,将显示:D.选择功能 3,然后输入要删除的好友的序号,将显示剩下的好友资料.如图(由于图太大,只截取部分):E.选择功能 4,然后将输出所有好友资料,如图(由于图太大,只截取部分):F.选择功能 5,将显示系统及制作者介绍.G.选择功能 6,将退出系统.五.课程设计总结与心得体
16、会16经过一个星期的努力,这次的 C 语言课程设计终于告一段落了,我的也顺利做出来了.虽然在功能上不是很多,功能也比较简单,但这是我辛辛苦苦设计出来的,努力思考写出来的程序,所以我还是有很大的成就感跟兴奋,更多的是开心.当然,课程设计并不是件简简单单的事情,整个过程应该这样来形容,从一开始的跌跌撞撞到最后终于圆满成功.这一路上碰到了很多问题,但经过刻苦努力的思考,与老师同学的帮助下,终于顺利完成.课程设计的一开始就碰到问题了,老师给的题目都给同学们选完了,所谓比较简单的题目都给同学们选完了.但是我从 QQ 聊天中获得了灵感,于是决定设计一个.选完题目又遇到问题了,当我写了几十行的界面代码之后,
17、突然发现不知道接下来该怎么入手了.但是我通过上网找资料学习,并查看课本相关的内容,终于开始着手写我的函数代码了.由于结构体那章学的还行,所以当写有关结构体代码的时候还是挺顺利的.然后就到了另一个困难,不知道如何更简单的就实现查找功能.幸好在书上我发现可以用 strcmp 函数来实现,只要实现字符串的比较,就可以输出相应的资料.再来又到了添加功能的问题,不过这次由于有了一些经验了,所以便很快写出了添加函数的代码以及删除功能函数的代码.不过这中间也出了点小问题,就是不知道 for 语句里面的循环条件该怎么设置,另外就是在添加那里,输入真实姓名之后不能输入性别.幸好这些都在老师的帮助下解决了,那个循
18、环条件应该根据好友个数跟插入或删除的位置来决定,而那个不能输入性别的问题,只要加个 fflush(stdin)函数就行了.最后在怎么设置退出系统这里我又搞不懂了,不过还是在同学的帮助下搞懂了,只要添加个 exit(0)函数就行了.所以在这个过程中碰到了大大小小的问题不少,但经过自己认真思考与谦虚请教老师同学并耐心试验,终于都一一解决了.所以这次 C 语言课程设计让我感触良多.首先我懂得了一个道理,抄袭是没有用的,一定要自己动手.因为抄袭别人的成果我们什么都没有学到.这次课程设计,我坚持自己思考,虽然困难多多,但经过自己努力思考获得成功,而不是抄袭别人的,可以让我们真正的学到很多知识,而且印象深刻.我敢说,这次课程设计让我学到了更多的 C 语言知识.还有,碰到困难的时候,我们会沮丧,会烦躁,但千万不要气馁,只要我们付出更多的努力,一定可以克服困难的,这也是我这次课程设计学到的道理.所以总的来说,这次课程设计让我学到了更多的 C 语言知识,增强了动手能力与独立思考能力,更增加了我对网络工程这个专业的兴趣.另外,还得谢谢老师跟同学的帮助,我这个系统才得以顺利完成.