通讯管理C语言课程设计文档 2Word文档下载推荐.docx
- 文档编号:5860801
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:47.96KB
通讯管理C语言课程设计文档 2Word文档下载推荐.docx
《通讯管理C语言课程设计文档 2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通讯管理C语言课程设计文档 2Word文档下载推荐.docx(21页珍藏版)》请在冰点文库上搜索。
⑶算法提示:
①、数据结构:
结构体类型数组。
②、数据库结构:
下表构成该系统的基本数据库。
编号
姓名
电话号码
地址
char
char
Char
⑷测试数据:
纪录数20
⑸其它
对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
2.设计要求:
1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5).实际操作过程中遇到的问题及解决方法:
设计总结及心得体会.
6).上机演示。
二、进度安排<
1>
星期一上午
熟悉这次课程设计的目的和课程设计的要求,通过图书馆或因特网查找与帧封装课题相关的资料,明确了解一些要用到的文件和调用函数等,然后再把整个程序设计的总体框架、流程图等构思出来,并进行书面程序设计。
星期一下午
机房上机,在计算机上编辑源程序。
调试程序,在改正错误的同时不断完善程序,使源代码满足课程设计的要求和实现课程设计的基本功能。
星期三下午
继续修改、编辑、调试程序。
不断改正错误后,要保证程序能成功编译成目标文件,链接成功成为可执行文件,再运行能显示出“帧封装已完成”的信息,这样才能算已经完成了本课题的基本功能。
之后,开始撰写课程设计报告。
星期四下午
进一步完善程序并运行演示,完成课程设计答辩,完成并打印课程设计报告。
目
录
一、设计内容与设计要求
3
2.设计要求
4
二、进度安排
三、课题的主要功能
5
四、课题的功能的模块的划分
6
1、功能模块图
2、流程图:
7
五、主要功能的实现
9
六、程序的调试
12
七、课题设计的总结和心得体会
13
八、参考资料
14
九、附录
15
十、课程设计评分表
31
三<
2>
、课题的主要功能
1、通过该系统实现对通讯录信息进行录入、显示、修改、删除、插入、排序、保存等操作的管理。
按编号查询,按姓名查询,按电话查询;
还有按电话删除记录,按姓名删除记录;
插入记录等。
2、执行一个具体的功能之后,程序将重新显示主菜单。
四、课题的功能的模块的划分
1、功能模块图
通讯录管理系统
信息的录入
信息的显示
信息的保存
信息的删除
按编号查询
按姓名查询
按电话查询
插入记录
退出系统
结束程序
menu_select()
程序运行
Listfind(linklisthead)
Inertnode(linklisthead,listnode*p)
Delnode(linklisthead)
Createlist()
是否结束?
开始
Main()
NO
YES
五、主要功能的实现
1<
3>
、menu()主菜单:
首先进入运行通讯录管理系统的主菜单界面,列出了所有功能选项,如下图所示:
通过printf()函数在屏幕上绘制一个菜单,将菜单进行编号,并显示一个提示输入选项,输入0~8之间的数字。
输入选项就是输入菜单编号,该输入项作为函数的返回值,带到主函数,主函数根据这个数字调用相应的功能函数。
2、然后就输入1,再按回车键进行对通讯录信息的录入,按照提示语输入每项内容,分别输入姓名,电话号码,编号,地址。
以下为该功能的截图:
再按要求输入一些信息后得到下图:
输入过程中,每输入一个数就按一下回车键,若选择Y,则继续添加信息,得到的截图为:
可以再输入新的信息,如下图:
此时可以再继续添加信息,也可以不添加了,如果选择N,则会出现“pressanykeyentermenu”的提示,即按任意键就可返回主菜单。
3、输入3就可以保存记录了。
4、通讯录信息的显示。
5、del()删除记录:
在主菜单下输入4可以实现记录的删除,删除记录有两种方式,一个是按电话删除,另一个是按姓名删除。
六、程序的调试
程序的调试是将编制的程序投入实际运行之前,有手工活编译程序的方法进行测试,修正语法错误和逻辑错误的过程。
在调试过程中出现了很多问题,不如经常提示说,没有识别内存,不能read这样的错误,然后就会弹出一个对话框,阻止了程序的运行。
还有就是在你结束了这个阻止对话框之后,就会自动大尅一个新的VC编译器,其中源程序代码也在里面,它就要我们去修改,不过看了半天那个错误也不知道怎么修改,这是因为我们平时很少接触过像如此这次的错误,这些错误有些是我们没有学过的源代码的出错,所以就是木然了,只能呆呆的发傻的看那个错误,不过后来经过老师的帮助,终于把错误纠正了,终于又有了信心完成任务了。
在连接过程中,一般不会出现连接错误,如果出现了连接错误,说明源程序中存在子程序的调用混乱或参数传递错误等问题。
这时又要用编辑程序对源程序进行修改,再进行编译和连接,如此反复进行,直至没有连接错误为止。
将修改后的程序进行试算,这时可以假设几个模拟数据去试运行,并把输出结果与手工处理的正确结果相比较。
如有差异,就表明计算机的程序存在有逻辑错误。
如果程序不大,可以用人工方法去模拟计算机对源程序的这几个数据进行修改处理;
如果程序比较大,人工模拟显然行不通,这时只能将计算机设置成单步执行的方式,一步步跟踪程序的运行。
一旦找到问题所在,仍然要用编辑程序来修改源程序,接着仍要编译、连接和执行,直至无逻辑错<
4>
七、课题设计的总结和心得体会<
5>
经过一周多C语言课程设计,总算把课程设计给完成了,这是一个艰苦而又漫长的过,程序调试也是比较烦人的,不过皇天不负有心人,终于让我们的付出有了收获。
C语言的功能强,使用方便灵活,所以得到广泛的使用,它使程序设计人员有发挥聪明才智、显示编程技巧的机会。
但是要真正学好C,用好C,并不容易,“灵活”固然是好事,但也使人难以掌握,尤其是我们这些初学者,往往会容易出现错误,出了错误也不知是怎么回事。
要调试好一个C程序,就需要我们不断积累经验,提高程序设计和调试程序水平。
C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。
使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。
使我们体会到自身知识和能力能在实际中的应用和发挥。
不但可以激发创新意识,还可以开发创造能力、培养沟通能力。
这次实习时间虽然仅有一个多星期,但确实使我受益非浅。
在设计的过程中,终于体会到了“天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身”这句话的意思了,自己动手做出来的东西并不是想象中的那么简单。
经过这次的程序设计就知道了,程序调试时更是烦人,一般都会很容易出错,就是原本是正确的程序,只是有几个警告的,稍作修改就会出现好几个错误了,有时侯的错误连自己也不知怎么改了,可能时犯糊涂了,改不回正确的了,所以这是就是越改越烦,就郁闷了。
不过还是很好的,这样才能磨练一个人的意志力嘛,这样对于我们也算是一次锻炼,一次考验,只有经历过考验,我们才会长见识,有了进步,才能促进我们成长,从无知的世界走出来。
只有不断的学习,才会有进步。
这次课程设计总的来说是检验了我们这个学期来,对所学C语言的知识一次小的初步检验,要求我们要不断积累经验,不断的总结经验,吸取教训,以至不断地完善自己。
在此次课程设计中我也看到了我的不足,对课本知识还不够熟练,就快要考试了,也就只能查漏补缺了。
希望是及时发现,能来得及补上。
总之,经过这次课程设计,使我加深了对C语言的了解,更是加强了我对C语言的兴趣,因为就那不多的源代码程序,就能实现一个相当大的功能,这使我不得不佩服啊。
可以认为使获益匪浅的,以后也加大努力学好C++,我并不是希望能成为一位软件工程师或是其他的什么网络编译高手,而是自己的兴趣所趋,有点这方面的好奇,想去探索。
八、参考资料
《C程序设计》
清华大学出版社
谭浩强
《C语言程序设计》
电子工业出版社
张泽虹
九、附录(源代码)
/******头文件(.h)***********/
#include"
stdio.h"
/*I/O函数*/
stdlib.h"
/*标准库函数*/
string.h"
/*字符串函数*/
ctype.h"
/*字符操作函数*/
#defineM50
/*定义常数表示记录数*/
typedefstruct/*定义数据结构*/
{
charname[20];
/*姓名*/
charunits[30];
/*单位*/
chartele[10];
/*电话*/
}ADDRESS;
/******以下是函数原型*******/
intenter(ADDRESSt[]);
/*输入记录*/
voidlist(ADDRESSt[],intn);
/*显示记录*/
voidsearch(ADDRESSt[],intn);
/*按姓名查找显示记录*/
intdelete(ADDRESSt[],intn);
/*删除记录*/
int
add(ADDRESSt[],intn);
/*插入记录*/
voidsave(ADDRESSt[],intn);
/*记录保存为文件*/
intload(ADDRESSt[]);
/*从文件中读记录*/
voiddisplay(ADDRESSt[]);
/*按序号查找显示记录*/
voidsort(ADDRESSt[],intn);
/*按姓名排序*/
voidqseek(ADDRESSt[],intn);
/*快速查找记录*/
voidcopy();
/*文件复制*/
voidprint(ADDRESStemp);
/*显示单条记录*/
intfind(ADDRESSt[],intn,char*s);
/*查找函数*/
intmenu_select();
/*主菜单函数*/
/******主函数开始*******/
main()
inti;
ADDRESSadr[M];
/*定义结构体数组*/
intlength;
/*保存记录长度*/
clrscr();
/*清屏*/
for(;
;
)/*无限循环*/
{
switch(menu_select())
/*调用主菜单函数,返回值整数作开关语句的条件*/
case0:
length=enter(adr);
break;
/*输入记录*/
case1:
list(adr,length);
/*显示全部记录*/
case2:
search(adr,length);
/*查找记录*/
case3:
length=delete(adr,length);
case4:
length=add(adr,length);
break;
case5:
save(adr,length);
/*保存文件*/
case6:
length=load(adr);
/*读文件*/
case7:
display(adr);
/*按序号显示记录*/
case8:
sort(adr,length);
case9:
qseek(adr,length);
case10:
copy();
/*复制文件*/
case11:
exit(0);
/*如返回值为11则程序结束*/
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
chars[80];
intc;
gotoxy(1,25);
/*将光标定为在第25行,第1列*/
printf("
pressanykeyentermenu......\n"
);
/*提示压任意键继续*/
getch();
/*读入任意字符*/
gotoxy(1,1);
********************MENU*********************\n\n"
0.Enterrecord\n"
1.Listthefile\n"
2.Searchrecordonname\n"
3.Deletearecord\n"
4.addrecord\n"
5.Savethefile\n"
6.Loadthefile\n"
7.displayrecordonorder\n"
8.sorttomakenewfile\n"
9.Quickseekrecord\n"
10.copythefiletonewfile\n"
11.Quit\n"
***********************************************\n"
do{
\n
Enteryouchoice(0~11):
"
/*提示输入选项*/
scanf("
%s"
s);
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整型数*/
}while(c<
0||c>
11);
/*选择项不在0~11之间重输*/
returnc;
/*返回选择项,主程序根据该数调用相应的函数*/
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
enter(ADDRESSt[])
inti,n;
char*s;
\npleaseinputnum\n"
/*提示信息*/
%d"
&
n);
/*输入记录数*/
pleaseinputrecord\n"
/*提示输入记录*/
name
unit
telephone\n"
------------------------------------------------\n"
for(i=0;
i<
n;
i++)
%s%s%s"
t[i].name,t[i].units,t[i].tele);
----------------------------------------------\n"
returnn;
/*返回记录条数*/
/*显示记录,参数为记录数组和记录条数*/
voidlist(ADDRESSt[],intn)
\n\n*******************ADDRESS******************\n"
/*显示所有记录*/
/***********************************************************/
/*
*/
//TODO:
addyourcodehere
%-20s%-30s%-10s\n"
if((i+1)%10==0)
/*判断输出是否达到10条记录*/
Pressanykeycontinue...\n"
/*压任意键继续*/
************************end*******************\n"
/*查找记录*/
voidsearch(ADDRESSt[],intn)
chars[20];
/*保存待查找姓名字符串*/
/*保存查找到结点的序号*/
pleasesearchname\n"
/*输入待查找姓名*/
i=find(t,n,s);
/*调用find函数,得到一个整数*/
if(i>
n-1)
/*如果整数i值大于n-1,说明没找到*/
notfound\n"
else
print(t[i]);
/*找到,调用显示函数显示记录*/
/*显示指定的一条记录*/
voidprint(ADDRESStemp)
\n\n********************************************\n"
temp.name,temp.units,temp.tele);
**********************end***********************\n"
/*查找函数,参数为记录数组和记录条数以及姓名s*/
intfind(ADDRESSt[],intn,char*s)
i++)/*从第一条记录开始,直到最后一条*/
if(strcmp(s,t[i].name)==0)
/*记录中的姓名和待比较的姓名是否相等*/
returni;
/*相等,则返回该记录的下标号,程序提前结结束*/
/*返回i值*/
/*删除函数,参数为记录数组和记录条数*/
intdelete(ADDRESSt[],intn)
/*要删除记录的姓名*/
intch=0;
inti,j;
pleasedeletedname\n"
/*输入姓名*/
/*调用find函数*/
/*如果i>
n-1超过了数组的长度*/
nofoundnotdeleted\n"
/*显示没找到要删除的记录*/
/*调用输出函数显示该条记录信息*/
Areyousuredeleteit(1/0)\n"
/*确认是否要删除*/
ch);
/*输入一个整数0或1*/
if(ch==1)
/*如果确认删除整数为1*/
/*删除该记录,实际后续记录前移*/
/*************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯管理C语言课程设计文档 通讯 管理 语言 课程设计 文档