c语言通讯录程序说明书.docx
- 文档编号:10278963
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:29
- 大小:80.93KB
c语言通讯录程序说明书.docx
《c语言通讯录程序说明书.docx》由会员分享,可在线阅读,更多相关《c语言通讯录程序说明书.docx(29页珍藏版)》请在冰点文库上搜索。
c语言通讯录程序说明书
一需求分析
用过对C语言一个学期的学习,虽然为达到精通的地步,但对计算机语言有了初步的认识,对于一些简单的用法已经初步掌握,能够编写一些比较简单的程序。
这次课程设计我选择了通讯录管理程序设计这一题目。
主要是运用所学C语言基础知识设计一个管理软件,用以实现通讯录管理工作。
对成员的录入、删除、修改、浏览、查找、排序保存进行了设计。
能够实现数据的连续录入,按姓名查找、修改、删除、排序。
但功能单一,只是针对无重名通讯录进行的一些基本操作。
一直以来人们使用传统的人工方式进行通讯录的管理工作,计算机尚未广泛使用之前,通讯录的管理主要依靠手工,不足之处显而易见:
作效率很低,处理能力也比较低,劳动强度比较大。
但是伴随着信息社会的到来,信息的极大丰富必然要求人们适应信息社会,利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。
从而人们对信息和数据的利用与处理随之进入了自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为了各行各业的必要和必需。
相应系统的建成无疑会为管理者对管理系统提供极大的帮助。
将管理程序转化到管理软件中。
这就使得通讯管理工作能够得到有关人员的大力支持和积极配合。
对于降低通讯管理的劳动强度、提高工作质量和效率、方便人员对信息的查询、提高信息资源的利用效率和管理水平都具有重要意义。
二总体设计
1课程设计目的
(1)加强课堂讲授和书本内容的理解课堂讲授主要介绍语言的一些基本语法规则和注意事项,枯燥无味的内容,通过上机实验来掌握、理解语法规则是学习计算机程序设计的有效方法。
通过多次有针对性的上机实验,可以逐步加深对语法规则的理解,从而达到灵活运用和培养程序设计能力的目的。
(2)实习C语言的开发、集成环境,只有通过上机实验,才能熟悉这个环境,从而提高程序开发效率。
(3)通过上机编写和调试程序,可使学生真正了解程序在计算机中的执行过程以及计算机软件的开发过程,提高学习C语言程序设计的兴趣。
2程序设计题目和要求
(1)题目
通讯录管理程序设计
(2)要求
1)要求通讯录中包含编号、姓名、单位、通信地址、邮箱和联系电话等基本信息,程序具有数据录入、删除、修改、浏览、查找、排序以及数据保存等功能。
2)程序结构合理、算法准确、语法正确,并生成可执行文件
3程序设计概要
(1)实现功能:
1)数据的连续录入
2)按姓名对数据进行查找
3)按姓名对数据进行删除
4)按姓名对数据进行排序
5)数据的整体浏览
6)对通讯录进行保存
7)退出系统
(3)主要函数
为实现通讯录的数据管理,针对数据录入、数据删除、数据修改、数据浏览及数据查找、数据排序及数据保存相应使用了Enter()、Delete()、Modify()、Glance()、Search()、Sort()及Save()等函数。
1)main()
程序必不可少的主函数,实现各个功能之间的连接以及功能的选择。
2)Enter()
实现数据的连续性录入及返回主菜单的功能。
3)Delete()
按姓名找到要删除的用户信息,并进行删除操作以及返回主菜单的功能。
4)Modify()
按姓名找到要修改的用户信息,并进行修改操作以及返回主菜单的功能。
5)Glance()
实现对数据的整体浏览以及返回主函数。
6)Search()
实现按姓名对用户进行查找以及返回主函数。
7)Sort()
实现按姓名对整体数据的排序以及返回主函数。
8)Save()
实现对通讯录的保存以及返回主函数。
三详细设计
1main()函数
main()之前定义一个结构体变量用于存放通讯录信息,运用do-while语句实现主菜单整体的循环,内嵌一个do-while语句实现主菜单显示的循环,而switch()语句通过输入变量a的值控制switch语句,从而调用相应子函数实现对功能项目的选择。
系统连接之后进入如图界面:
图1主菜单界面
(1)程序展示:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
structlist
{charname[20],unit[40];
charadress[40],mail[30];
chartelephone[20];
}man[50];
intnumber=0;
intEnter();/*函数声明*/
intDelete();/*函数声明*/
intModify();/*函数声明*/
intGlance();/*函数声明*/
intSearch();/*函数声明*/
intSort();/*函数声明*/
intSave();/*函数声明*/
voidexit();/*函数声明*/
main()
{inta;
do
{do
{printf("\n*********MENU*********\n");
printf("1.数据录入\n");
printf("2.数据删除\n");
printf("3.数据修改\n");
printf("4.数据浏览\n");
printf("5.数据姓名查找\n");
printf("6.数据按姓名排序\n");
printf("7.数据保存\n");
printf("0.退出\n");
printf("**********************\n");
printf("\nEnteryourchoice(0-7):
");
scanf("%d",&a);
}while(a<0||a>7);
switch(a)
{case1:
Enter();break;
case2:
Delete();break;
case3:
Modify();break;
case4:
Glance();break;
case5:
Search();break;
case6:
Sort();break;
case7:
Save();break;
case0:
exit(0);break;
}
}while(a);
}
2Enter()函数
主函数中输入1则开始调用Enter()语句,Enter()为定义的一个子函数(递归函数)通过输入的c值(是否为y)来控制函数的递归调用从而实现连续的数据录入,并通过调用Save()函数完成对通讯录的保存。
然后运用返回值自动返回主菜单,进行其他功能的选择。
主菜单中选择1,进入录入菜单,写入要录入信息,之后是否继续添加,输入y进入继续录入界面,继续添加信息,之后是否继续添加,输入n则调用Save()函数进行保存,返回主菜单。
显示如图界面:
图2录入界面
(1)程序展示:
Enter()
{charc;
printf("\n*******录入信息*******\n");
printf("输入姓名:
");
scanf("%s",&man[number].name);
printf("输入单位:
");
scanf("%s",&man[number].unit);
printf("输入地址:
");
scanf("%s",&man[number].adress);
printf("输入邮箱:
");
scanf("%s",&man[number].mail);
printf("输入电话:
");
scanf("%s",&man[number].telephone);
number++;
printf("\n是否继续添加?
(y\n):
");
scanf("%c",&c);
c=getchar();
if(c=='y')
Enter();
else
Save();
return(0);
}
3Delete()
主函数中输入“2”则开始调用Delete()语句,Detele()利用for循环if语句通过对name[20]赋字符串对要删除的信息进行查找,查找到相应要删除用户信息,运用if语句通过输入字符c的值确定是否要删除,如果删除,然后会调用Save()函数实现删除后信息的保存。
并运用返回值自动返回主菜单。
如果没有查找到相应用户信息或选择不删除,则运用返回值自动返回主菜单。
主菜单中选择2,进入删除菜单,写入要删除信息进行查找,查找到相应要删除用户信息之后是否删除,输入y则进行删除,调用Save()函数进行保存,返回主菜单。
显示如图界面:
图3删除界面
(1)程序展示:
Delete()
{inti,j;
charc,name[20];
printf("\n***输入要删除用户名***\n姓名");
scanf("%s",name);
for(i=0;i {if(strcmp(man[i].name,name)==0) {printf("\n以下是要删除的用户信息: "); printf("\n姓名: %s",man[i].name); printf("\n单位: %s",man[i].unit); printf("\n地址: %s",man[i].adress); printf("\n邮箱: %s",man[i].mail); printf("\n电话: %s",man[i].telephone); printf("\n*********************"); printf("\n是否删除? (y\n): "); scanf("%c",&c); c=getchar(); if(c=='y') {for(j=i;j {man[j]=man[j+1]; number--;} printf("\n*******删除成功*******"); Save(); } } else printf("\n****无相应用户信息****"); }return(0); } 4Modify() 利用for循环if语句通过对name[20]所赋字符串查找要修改的信息,查找到相应信息,则对其进行重新赋值,调用Save()函数实现修改后信息的保存。 运用返回值自动返回主函数。 如果没有查找到要修改的相应的用户信息,则运用返回值自动返回主函数。 主菜单中选择3,进入修改菜单,写入要修改信息进行查找,查找到之后输入y修改后信息,调用Save()函数进行保存,返回主菜单。 显示如图界面: 图4修改界面 (2)程序展示: /*修改模块: 修改数据的子函数*/ Modify() {inti; charname[20]; printf("\n***输入要修改用户名***\n姓名"); scanf("%s",name); for(i=0;i {if(strcmp(man[i].name,name)==0) {printf("\n您要修改的用户信息"); printf("\n姓名: %s",man[i].name); printf("\n单位: %s",man[i].unit); printf("\n地址: %s",man[i].adress); printf("\n邮箱: %s",man[i].mail); printf("\n电话: %s",man[i].telephone); printf("\n******************"); printf("\n输入修改后用户信息: "); printf("\n姓名: "); scanf("%s",&man[i].name); printf("\n单位: "); scanf("%s",&man[i].unit); printf("\n地址: "); scanf("%s",&man[i].adress); printf("\n邮箱: "); scanf("%s",&man[i].mail); printf("\n电话: "); scanf("%s",&man[i].telephone); printf("\n*******修改成功*******"); Save(); } else printf("\n****无相应用户信息****"); }return(0); } 5Glance() 通过编号number的值确定是否存有信息,如果含有信息,则通过for语句进行循环显示出通讯录所有信息。 然后运用返回值自动返回主菜单。 如果没有任何信息,则运用返回值自动返回主菜单。 主菜单中选择4,进入浏览菜单,通过编号number的值确定是否存有信息,如果含有信息,则通过for语句进行循环显示出通讯录所有信息。 自动返回主菜单。 显示如图界面: 图5浏览界面 (2)程序展示: /*浏览模块: 浏览数据的子函数*/ Glance() {inti; if(number! =0) {printf("\n****通讯录所有信息****"); for(i=0;i {printf("\n姓名: %s",man[i].name); printf("\n单位: %s",man[i].unit); printf("\n地址: %s",man[i].adress); printf("\n邮箱: %s",man[i].mail); printf("\n电话: %s",man[i].telephone); printf("\n*********************"); } } else {printf("\n通讯录中无任何记录"); printf("\n返回主菜单: "); }return(0); } 6Search() 运用for语句进行循环,通过输入name[20]的字符串查找要查找的相应用户信息。 查找到相应用户信息则打印出来,然后运用返回值自动返回主菜单。 未找到相应用户信息,则运用返回值自动返回主菜单。 主菜单中选择5,进入查找菜单,输入要查找姓名,如有相应信息,则显示出来,后自动返回主菜单。 显示如图界面: 图6查找界面 (2)程序展示: Search() {inti; charname[20]; printf("\n***输入要查找用户名***\n姓名"); scanf("%s",name); for(i=0;i {if(strcmp(man[i].name,name)==0) {printf("\n您要查找的用户信息"); printf("\n姓名%s",man[i].name); printf("\n单位%s",man[i].unit); printf("\n地址%s",man[i].adress); printf("\n邮箱%s",man[i].mail); printf("\n电话%s",man[i].telephone); printf("\n******************"); } else {printf("\n无相应用户信息"); printf("\n返回主菜单: "); } }return(0); } 7Sort() 运用冒泡法对通讯录中信息按姓名进行排序,并调用Save()函数进行保存,调用Glance()进行浏览。 利用返回值自动返回主菜单。 主菜单中选择6,进入排序菜单,运用冒泡法对信息按姓名进行排序,并调用Save()函数对排序后信息进行保存,是否进行浏览,如果输入y则调用Glance()函数进行浏览,后自动返回主菜单。 不浏览则自动返回主菜单。 显示如图界面: 图7排序界面 (2)程序展示: Sort() {inti,j; charc; structlisttmp; for(j=0;j for(i=j+1;i {if(strcmp(man[j+1].name,man[j].name)<0) {tmp=man[j];man[j]=man[i];man[i]=tmp;} Save(); printf("\n排序成功是否显示? (y\n): "); scanf("%c",&c); c=getchar(); if(c=='y') Glance(); return(0); } } 8Save() 运用文件知识完成对通讯录的保存。 主菜单中选择7,进入排保存菜单,将新建一个空白文件,并将所有通讯录信息写入空白文件保存。 后自动返回主菜单。 显示如图界面: 图8保存界面 (2)程序展示: Save() {intj; FILE*fp; fp=fopen("man.txt","w"); if(fp==NULL) printf("can'topenthefile."); if(number! =0) {for(j=0;j {fwrite(man,sizeof(man),1,fp);} } printf("保存成功! "); fclose(fp); return(0); } 9退出 运用exit()函数实现程序的推出。 主菜单中选择0,再按任意键推出通讯录。 显示如图界面: 图9退出界面 四结论 通过一周的课程设计训练,我了解到自己在C语言方面还有很多不足,在实践过程中老师给了我很大的帮助和鼓励,对于教程中的很多知识有了更进一步的认识。 从中懂得了很多知识不只要了解学习,还要进行实际操作训练,从中提高自己的实际动手能力。 我所选择的是设计一个通讯录管理系统,这对我们来说是一次尝试与创新的过程,也可以说是一个挑战的过程,毕竟以前没有作过,缺少经验。 现在利用自己学到的知识设计并制作一个通讯录管理系统,这本身就是一个知识转化为生产力的过程,所以我都很兴奋,也投入了很高的热情与努力。 在设计中基本能按照规范的方法和步骤进行,首先对现有的系统进行调查,并查阅有关资料,最后确定设计方案,然后设计并制作,实施过程中深刻的认识到认真执行管理系统软件标准的重要性,由于对管理系统软件相关的标准和规范不太了解,缺少行为操作准则,所以在设计中手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强了解。 在以后的学习中一定会在掌握理论知识的基础上多多实践,增强自己的动手能力,为自己的未来增添一份筹码。 参考文献 [1]谭浩强,张基温.C语言程序设计教程(第3版)[M].北京: 高等教育出版社,2006 [2]吕凤煮.C语言基础教程——基础理论与案例[M].北京: 清华大学出版社,2005 [3]黄明、梁旭、万洪莉.C语言课程设计[M].北京: 电子工业出版社,2006 [4]郭宁,郑小玲.管理信息系统[M].北京: 人民邮电出版社,2006 [5]赵池龙,杨林,陈伟.实用软件工程[M].北京: 电子工业出版社,2006 附录 #include"stdio.h" #include"stdlib.h" #include"string.h" structlist {charname[20],unit[40]; charadress[40],mail[30]; chartelephone[20]; }man[50]; intnumber=0; intEnter();/*函数声明*/ intDelete();/*函数声明*/ intModify();/*函数声明*/ intGlance();/*函数声明*/ intSearch();/*函数声明*/ intSort();/*函数声明*/ intSave();/*函数声明*/ voidexit();/*函数声明*/ main() {inta; do {do {printf("\n*********MENU*********\n"); printf("1.数据录入\n"); printf("2.数据删除\n"); printf("3.数据修改\n"); printf("4.数据浏览\n"); printf("5.数据姓名查找\n"); printf("6.数据按姓名排序\n"); printf("7.数据保存\n"); printf("0.退出\n"); printf("**********************\n"); printf("\nEnteryourchoice(0-7): "); scanf("%d",&a); }while(a<0||a>7); switch(a) {case1: Enter();break; case2: Delete();break; case3: Modify();break; case4: Glance();break; case5: Search();break; case6: Sort();break; case7: Save();break; case0: exit(0);break; } }while(a); } /*录入模块: 数据录入的子函数*/ Enter() {charc; printf("\n*******录入信息*******\n"); printf("输入姓名: "); scanf("%s",&man[number].name); printf("输入单位: "); scanf("%s",&man[number].unit); printf("输入地址: "); scanf("%s",&man[number].adress); printf("输入邮箱: "); scanf("%s",&man[number].mail); printf("输入电话: "); scanf("%s",&man[number].telephone); number++; printf("\n是否继续添加? (y\n): "); scanf("%c",&c); c=getchar(); if(c=='y') Enter(); else Save(); return(0); } /*删除模块: 删除数据的子函数*/ Delete() {inti,j; charc,name[20]; printf("\n***输入要删除用户名***\n姓名"); scanf("%s",name); for(i=0;i {if(strcmp(man[i].name
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯录 程序 说明书