C课程设计林晓伟doc.docx
- 文档编号:11224409
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:26
- 大小:308.17KB
C课程设计林晓伟doc.docx
《C课程设计林晓伟doc.docx》由会员分享,可在线阅读,更多相关《C课程设计林晓伟doc.docx(26页珍藏版)》请在冰豆网上搜索。
C课程设计林晓伟doc
《程序设计基础》
课程设计报告说明书
学生姓名
学号
所在专业
所在班级
指导教师
提交时间
评阅情况
成绩
一引言…………………………………………………………….3
二系统总体设计…………………………………………………………….4
1菜单函数…………………………………………………………….6
2输入通讯录…………………………………………………………….7
3显示通讯录…………………………………………………………….8
4find函数…………………………………………………………….9
5删除通讯录…………………………………………………………….10
6查找通讯录…………………………………………………………….11
7修改通讯录…………………………………………………………….12
8添加通讯录…………………………………………………………….13
9退出通讯录…………………………………………………………….14
10测试结果…………………………………………………………….15
三附录(源代码)…………………………………………………………….17
四总结…………………………………………………………….24
一引言
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理而设计的。
通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。
因此在系统构建时,只要我们本着丰富通讯录的信息资源,为用户提供最为方便的快捷的信息阅览途径和管理手段,去吸引用户,那么通讯录管理系统是完全可行的。
通讯录软件设计的灵感来源于生活和工作中的需要。
如今,随着社会的飞速发展,信息时代改变着人们的各种生活方式。
人们的联系信息,联系方式变得复杂而多样化,以前所使用的各种电话簿、通讯本等小册子由于查找不方便、功能单一等缺陷已经无法胜任它的“时代使命”,而现在各种手机,商务通内设的电话簿尽管携带方便却又挥之不去其“记录量少,界面小,浏览不方便”的缺点。
工作中看到有些人巧妙地利用excell或者word制表格来建立通讯录,每逢用时再打开,可是查找极其不便,维护起来也麻烦。
通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。
用c语言构建的通讯录系统设计,通过课上学到的和查阅一些文献的一些关于结构体[1]、数组、指针、函数以及循环函数的运用[1]和字符串的处理[2]等基本知识可以初步的实现通讯录的输入、显示、查找、删除、快速查询等通讯录简单而用的一些实用的功能,给人们带来更多的方便。
本管理系统设计合理、操作方便、运行稳定、功能完备,具有较高的实用价值。
本课程设计主要运用C语言中的结构体、数组、链表、等数据结构,设计一个简单的管理系统应用程序。
本程序设计出了通讯录管理系统的基本功能,并设计了简单的界面,主要考察对自定义函数的熟悉程度,使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。
通过完成本课题进一步熟悉C语言基本知识,并掌握数据结构的一些基本算法思想,进一步熟悉指针的用法,数组的建立运用和函数调用,加深对数据结构的理解,提高算法设计的能力,锻炼编程的能力。
用C语言编程的通讯录管理系统,要求实现通讯录系统中,添加新记录、删除记录、显示记录信息、按名字查找信息和退出系统等功能。
录入人员的编号、姓名、个人邮箱、地址、联系电话。
显示所有人员的信息。
通过输入姓名查找人员信息。
通过输入姓名查找到要删除的人员信息,然后可以进行删除,回显当前通讯录信息。
通过输入姓名查找到要修改的人员信息,然后依次进行信息修改。
添加人员信息。
二系统总体设计
本系统设计的函数是由一个主函数几个子函数组成的。
首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决输入、显示、查找、删除、修改,退出功能的子函数编程中遇到的问题。
首先通过结构体的定义,确定通讯录的项目和大小。
首先通过输入函数添加信息,然后再逐步编写和验证其它功能。
显示函数的设计利用C语言的循环功能依次输出信息。
查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人。
删除函数的设计是通过指定位置以后的数组下标减一实现删除目的的,for循环和while循环在这此设计中也起了很大的作用。
1概要设计
系统功能模块图如图1所示:
2
三详细设计
1菜单函数
菜单函数首先标出欢迎使用通讯录管理系,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:
2输入通讯录
将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。
其流程图如图4所示:
3显示通讯录
显示通讯录通过循环函数将全部的通讯录信息以此显示出来,其流程图如图5所示:
4find函数
find函数通过输入姓名与原通讯录中存储的姓名,两字符串的比较,找到与输入姓名相同的姓名的位置,其流程图如图6所示:
5删除通讯录
删除通讯录通过数组中该位置之后的数据存放位置向前移一位来实现删除功能,其流程图如图7所示:
6查找通讯录
查找通讯录通过find函数找到所查通讯录的位置,再将该位置的通讯录信息显示出来,其流程图如图8所示:
假
真
假
真
图8查找函数流程图
7修改通讯录
修改通讯录通过find函数找到所要修改通讯录位置,显示出信息,确认修改后,即可逐项修改,其流程图如图9所示:
8添加通讯录
在存储未满的情况下,用find函数找到要添加的位置后即可逐项添加通讯录信息,其流程图如图10所示:
9退出通讯录
在使用完通讯录后,按6键便会退出系统,其流程图如图11所示:
10测试结果
进入系统后,系统会出现图12所示菜单
在主菜单中输入3后,输入要找的姓名。
在系统没有要找信息时,系统会给出提示,确认用户是否继续查找,如图13所示:
在确认修改后,按系统提示依次修改便可修改
在确认修改并输入修改后信息以后,系统便能按用户意愿修改的通讯录信息,如图14所示:
在主菜单中输入1后输入要删除的姓名,再按1键确定,系统便自动删除要删除的通讯录信息,如图15所示:
在主菜单中按6键,便可退出系统,如图16所示:
三附录
#include
#include
#defineN80
/****************************************定义通讯录************************************/
typedefstruct
{
charnum[N];
charname[20];
chartele[15];
charadd[20];
charemal[15];
}STUDENT;STUDENTstu[N];
intmenu();
intshuru(STUDENTstu[N]);
voidxianshi(STUDENTstu[],intn);
intshanchu(STUDENTstu[],intn);
voidchazhao(STUDENTstu[],intn);
voidxiugai(STUDENTstu[],intn);
inttianjia(STUDENTstu[],intn);
inttuichu();
/***************************主函数****************************************/
intmain()
{intlength,m=0;
while(m>=0)
{switch(menu())
{case0:
length=shuru(stu);break;
case1:
xianshi(stu,length);break;
case2:
length=shanchu(stu,length);break;
case3:
chazhao(stu,length);break;
case4:
xiugai(stu,length);break;
case5:
length=tianjia(stu,length);break;
case6:
m=tuichu();break;
default:
printf("输入错误,请重新输入\n");}}
return0;}
/***********************************主菜单**********************************/
intmenu()
{intm;
printf("**************************欢迎使用通讯录管理系统***********************\n");
printf("*******************************主菜单**********************************\n");
printf("\t\t\t0.输入通讯录\n");
printf("\t\t\t1.显示通讯录\n");
printf("\t\t\t2.删除通讯录\n");
printf("\t\t\t3.查找通讯录\n");
printf("\t\t\t4.修改通讯录\n");
printf("\t\t\t5.添加通讯录\n");
printf("\t\t\t6.退出通讯录\n");
do{printf("\t\t\t请输入选项0-6\n");
scanf("%d",&m);}
while(m<0||m>6);
returnm;}
/******************************输入通讯录*******************************/
intshuru(STUDENTstu[N])
{
inti,n;
printf("\n请输入要加入通讯录的数目\n");
scanf("%d",&n);
printf("其输入信息\n");
for(i=0;i {printf("请输入编号: \n"); scanf("%s",stu[i].num); printf("\n请输入姓名\n: "); scanf("%s",stu[i].name); printf("\n请输入电话: \n"); scanf("%s",stu[i].tele); printf("\n请输入地址: \n"); scanf("%s",stu[i].add); printf("\n请输入emal: \n"); scanf("%s",stu[i].emal); printf("编号: %s\n姓名: %s\n电话: %s\n地址: %s\nemal: %s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal); } returnn;} /******************************显示通讯录********************************/ voidxianshi(STUDENTstu[],intn) {inti; for(i=0;i<=n-1 ;i++) { printf("编号: %s\n姓名: %s\n电话: %s\n地址: %s\nemal: %s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal); } } /******************************查找函数********************************/ intfind(STUDENTstu[],intn) {inti; chars[20]; printf("请输入的姓名\n"); scanf("%s",s); for(i=0;i if(strcmp(s,stu[i].name)==0) returni; returni; } /*******************************删除通讯录********************************/ intshanchu(STUDENTstu[],intn) {inti,j,ch; i=find(stu,n); if(i>n-1) {printf("没有找到要删除的记录,是否重新输入1/0\n"); scanf("%d",&ch); if(ch==1)n=shanchu(stu,n);} else { printf("编号: %s\n姓名: %s\n电话: %s\n地址: %s\nemal: %s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal); printf("是否确定要删除: %d是%2d否\n",1,0);} scanf("%d",&ch); if(ch==1) { for(j=i+1;j { strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j-1].tele,stu[j].tele); strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j-1].emal,stu[j].emal); } n--; printf("删除成功\n"); }returnn; } /*******************************查找通讯录********************************/ voidchazhao(STUDENTstu[],intn) {inti,ch; i=find(stu,n); if(i>n-1) {printf("没有找到要查找的记录,是否重新输入1/0\n"); scanf("%d",&ch); if(ch==1)chazhao(stu,n);} else printf("编号: %s\n姓名: %s\n电话: %s\n地址: %s\nemal: %s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);} /*******************************修改通讯录********************************/ voidxiugai(STUDENTstu[],intn) {inti,ch; i=find(stu,n); if(i>n-1) {printf("没有找到要修改的记录,是否重新输入1/0\n"); scanf("%d",&ch); if(ch==1)xiugai(stu,n);} else { printf("编号: %s\n姓名: %s\n电话: %s\n地址: %s\nemal: %s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal); printf("是否确定要修改: %d是%2d否\n",1,0);} scanf("%d",&ch); if(ch==1) {printf("编号: \n"); scanf("%s",stu[i].num); printf("\n姓名\n: "); scanf("%s",stu[i].name); printf("\n电话: \n"); scanf("%s",stu[i].tele); printf("\n地址: \n"); scanf("%s",stu[i].add); printf("\nnemal: \n"); scanf("%s",stu[i].emal); printf("修改成功\n");}} /*******************************添加通讯录********************************/ inttianjia(STUDENTstu[],intn) {inti,j; if(N<=n+1) printf("储存已满"); else { printf("请输入要插入的位置\n"); scanf("%d",&i); for(j=n-1;j>=i;j--) { strcpy(stu[j+1].name,stu[j].name); strcpy(stu[j+1].tele,stu[j].tele); strcpy(stu[j+1].add,stu[j].add); strcpy(stu[j+1].emal,stu[j].emal); } printf("其输入要插入的信息\n"); printf("编号: \n"); scanf("%s",stu[i].num); printf("\n请输入姓名: \n"); scanf("%s",stu[i].name); printf("\n请输入电话: \n"); scanf("%s",stu[i].tele); printf("\n请输入地址: \n"); scanf("%s",stu[i].add); printf("\n请输入emal: \n"); scanf("%s",stu[i].emal); printf("添加成功"); n++;} returnn; } /*******************************退出通讯录********************************/ inttuichu() { intn; n=-1; printf("**********************************谢谢使用**************************************"); returnn;} 四总结 这是我第一次做课程设计,从刚开始的一窍不通到完成这份课程设计,无疑是一次难得的成长过程。 完成这份课程设计,分为三个过程: 过去、现在、未来。 我利用很多时间学习如何使用C语言来实现通讯录,上网参考了很多篇通讯录的例子,并利用自己这学期所学的C语言做一个关于通讯录的一个课程设计。 从设计思想开始做起,由于对C学的不深,所以设计思想和源代码都是参考的。 通过查阅各种相关资料,了解到做课程设计的基本方法。 虽然我已经学习过C语言程序设计,但只是单纯的理论学习和一些简单的编程,并不曾用所学的知识作过这样的课程设计。 依据文档中设计要求、总体设计以及详细设计来开发源码实现软件所需求的功能。 其中最为印象深刻的是,对每个函数模块的调用,我非常有兴趣,然后就分别的学习每个函数.其实分别学习,觉得其实挺简单的.所以,难点是最开始的设计思想,设计时脑海里应该要想这个系统究竟要做什么的,然后用笔把基本流程图画一画,在把每个函数模块组在一起,最后写代码. C语言的这个通讯录系统,源代码中最重要的是,结构体的应用,数组,链表。 还有逻辑性的调用函数。 学习这个课程设计,加深了对它们的学习,理解。 总而言之,觉得自己的C学的不精,以后一定要加强C的学习,同时还要加强实践环节,为以后工作打好基础,积累经验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 林晓伟 doc