C语言课程设计报告通讯录管理系统Word格式.docx
《C语言课程设计报告通讯录管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告通讯录管理系统Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
3.1定义结构体与函数
structpeople
{charname[20];
charsex[4];
charcel[11];
charddr[50];
charQQ[20];
}ren[100];
.......................结构体
inttj(structpeopleren[],intn);
..............................添加函数
voidcz(structpeopleren[],intn);
..............................查找函数
voidfh();
...........................................................................返回界面函数
voidxg(structpeopleren[],intn);
..........................................修改函数
voidsc(structpeopleren[],intn);
.............................................删除函数
voidpx(structpeopleren[],intn);
.............................................排序函数
3.2实验思路图
3.2.1添加函数
3.2.2查找函数
3.2.3修改函数
3.2.4删除函数
4.实验总结(分析程序的得与失)
这个课题是设计一个选课管理系统,该系统能够较好的管理好学生的选课信息,也拥有比较完善的功能,但是该系统依旧有漏洞,此程序必须按照系统提示的操作来执行,你只能选系统提供给你的课程,否则将得不到预期的结果。
后面的删除函数,虽然可以删除,但达不到理想的效果。
在编写过程中,我逐步的了解了程序模块化设计的思想含义。
在整个程序设计的过程中语法的错误还是比较容易检查的,但是对于那些逻辑思维的问题方面的缺陷不易查出,因此常常出现系统提示没有错误但是仍然不能够正常运行的境况,尽管有很多不足之处,但我在整个系统程序设计的过程中,我可以感受到自己对C语言有了一定的掌握,对整体的把握度也提高了很多。
此外编程是一项高精度的工作,所以我们要有规范化,标准化的代码编写习惯,良好的编写习惯,不但有助于代码的纠错,也有助于不同人员之间的协作。
我们还要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大的避免重复性的工作。
另外我们要重视程序的算法,在程序中,算法是灵魂,我们要努力学习各种先进的算法,提高自编程能力。
5.心得体会
从刚开始的不知如何下手到最后看到自己的程序按自己的想法运行,心里时不时的有一种喜悦。
我认识到书上和老师教的内容是有限的,要想掌握更多的知识我们必须多动脑,多思考,不断地靠自己去学习,同时我们还应向他人请教,从而了解更多自己不知道的知识。
回头看来,编写这个程序并不像原来想像的那么难,我们要相信自己,无论做什么事,只要我们仔细的思考了,认真的去做了,我们就一定能做好。
通过这周的编程我发现了自己的一些不足,在编写时经常犯一些低级错误,由于自己的马虎而浪费了不少时间。
在不知如何进行的时候有一种不自信,总想别人正在做什么,这些不足既然被发现就得在以后的做事中注意,争取改掉。
经过一周的努力我掌握了一些基本的C语言进行程序设计的技巧,更深的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,同时学会了一些调试一个较长程序的基本方法,提高了书写程序设计开发文档的能力(书写课程设计报告)。
这一周的实践让我受益匪浅,在此我要感谢孜孜不倦指导我们的老师,感谢在我困惑时给我帮助的同学,感谢学校给我们一个这样动手动脑的机会,使我们在理论与实践相结合方面又得到了一次很好的锻炼,让我们得到很大的收获。
6.代码
#include<
stdio.h>
stdlib.h>
string.h>
intmain()
{intm;
charch;
intn=0;
voidcx(structpeopleren[],intn);
voidxs(structpeopleren[],intn);
ch=getchar();
printf("
==============================================\n"
);
@欢迎进入通讯录系统@\n"
@@\n"
@添加个人信息―――按数字键1@\n"
@修改个人信息―――按数字键2@\n"
@删除个人信息———按数字键3@\n"
@查找个人信息———按数字键4@\n"
@对个人信息排序——按数字键5@\n"
@============================================@\n"
输入1-5的数:
"
scanf("
%d"
&
m);
while(m<
0||m>
6)
{printf("
}
switch(m)
{case1:
添加个人信息\n"
n=tj(ren,n);
xs(ren,n);
fh();
break;
case2:
修改个人信息\n"
xg(ren,n);
case3:
删除个人信息\n"
sc(ren,n);
case4:
查找个人信息\n"
cx(ren,n);
case5:
对个人信息排序\n"
px(ren,n);
}
inttj(structpeopleren[],intn)
{inti=0;
charsin;
do
{printf("
\n姓名:
%s"
ren[n+i].name);
===============================\n"
性别:
ren[n+i].sex);
联系电话:
ren[n+i].cel);
住址:
ren[n+i].ddr);
QQ号:
ren[n+i].QQ);
getchar();
是否继续添加?
<
YorN>
:
"
sin=getchar();
i++;
}while(sin!
='
n'
&
sin!
N'
return(n+i);
voidcx(structpeopleren[],intn)
{intx;
chars[20];
inti=0;
\n要何种方式查找:
\n"
printf("
1按姓名查找\n"
2按联系方式查找\n"
3按QQ号查找\n\n"
输入查找方式1,2,3:
x);
while(x!
=1&
x!
=2&
=3)
输入不正确\n"
if(x==1)
\n输入此人姓名:
s);
while(strcmp(ren[i].name,s)!
=0&
i>
n)i++;
ren[i].name);
\n性别:
ren[i].sex);
\n联系方式:
ren[i].cel);
\n地址:
ren[i].ddr);
\nQQ号:
ren[i].QQ);
if(x==2)
输入此人联系方式:
while(strcmp(ren[i].cel,s)!
姓名:
if(x==3)
输入此人QQ号:
while(strcmp(ren[i].QQ,s)!
%s\n\n"
%s\n"
voidsc(structpeopleren[],intn)
{chars[20];
inti=0,j;
请输入删除人的姓名:
=n)i++;
for(j=i;
j<
n-1;
j++)/*删除少人数*/
{strcpy(ren[j].name,ren[j+1].name);
strcpy(ren[j].sex,ren[j+1].sex);
strcpy(ren[j].cel,ren[j+1].cel);
strcpy(ren[j].ddr,ren[j+1].ddr);
strcpy(ren[j].QQ,ren[j+1].QQ);
删除完成!
voidxg(structpeopleren[],intn)
请输入要修改的姓名:
联系方式:
地址:
修改成功!
voidfh()
{chary;
\n是否返回首页<
%c"
y);
if(y=='
Y'
||y=='
y'
)
voidpx(structpeopleren[],intn)
{intk,i,j;
}s;
\n按怎样的方式排序\n\n"
1-----按姓名排序\n\n"
);
2-----按联系电话排序\n"
k);
while(k!
k!
输入排序方式1,2,3:
j);
if(k==1)
{for(i=0;
i<
n;
i++)
for(j=1;
n-i;
j++)
if(strcmp(ren[i].name,ren[j].name)>
0)
{strcpy(s.name,ren[i].name);
strcpy(ren[i].name,ren[j].name);
strcpy(ren[j].name,s.name);
strcpy(s.sex,ren[i].sex);
strcpy(ren[i].sex,ren[j].sex);
strcpy(ren[j].sex,s.sex);
strcpy(s.cel,ren[i].cel);
strcpy(ren[i].cel,ren[j].cel);
strcpy(ren[j].cel,s.cel);
strcpy(s.ddr,ren[i].ddr);
strcpy(ren[i].ddr,ren[j].ddr);
strcpy(ren[j].ddr,s.ddr);
strcpy(s.QQ,ren[i].QQ);
strcpy(ren[i].QQ,ren[j].QQ);
strcpy(ren[j].QQ,s.QQ);
if(k==2)
if(strcmp(ren[i].cel,ren[j].cel)>
排序完成\n"
voidxs(structpeopleren[],intn)
{inti;
for(i=0;