C语言同学通讯录程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言课程综合实验设计
设计题目:同学通讯录程序设计
学院: 计算机与信息科学学院、软件学院班级:2012级教育技术学
*名:***
学号:***************
2013年6月14日
1.题目功能分析以及整体思路
1.1整体设计思路
建立一个函数,用来添加、显示、删除、查询、修改、保存,读取和统计通讯录等信息,完成通讯录的功能。主函数采用密码,保护了通讯录数据,可以调用8个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、读取记录、统计记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6、7、8、0数字键分别可以执行某个功能模块。
1.2程序设计
1.2.1根据图1定义数据类型建立函数
typedef struct
{
long score; /*学号*/
char name[10]; /*姓名*/
char sex[8]; /*性别*/
char adds[20]; /*工作单位*/
char num[15]; /*电话号码*/
char email[20]; /*邮箱*/
}Person;
Person pe[80];
1.2.2主函数设置密码和调用函数
主函数通过for循环和字符比较函数可以实现密码功能,登陆成功后可以调用menu
函数。我们定义的menu函数主要是利用switch语句对数据进行处理,流程图如下:
void main() /*主函数*/
{
int h,flag1,flag2;
char name[20]="zxq",password[10]="931009";
char person[20],password1[10];
printf ("\t\t ************* 通讯录管理系统!*************\n\n");
printf ("\t\t\t 用户登录\n\n");
for(h=0;h!=5;)
{
printf("\t\t\t\t 用户名:");
gets(person);
flag1=strcmp(person,name);
printf("\t\t\t\t 密码:");
gets(password1);
flag2=strcmp(password,password1);
if(flag1==0 && flag2==0)
{
printf("\t\t\t\t 登陆成功!\n\n");
menu();
break;
}
else
{
printf ("\t\t\t 用户名或密码错误!\n\n");
printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",4-h);
h++;
}
}
if (h=5)
printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n");
}
1.2.3增加函数及其流程图
本程序设计具有通讯信息的录入,进行保存、查找、删除、修改、统计等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。可运用于小的管理软件。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。
1.2.3.1.删除通讯录记录流程
图 4. 删除通讯录记录流程图:
int Delete_a_record(Person per[]) /*删除通讯录*/ {
char s[20];
int i=0,j;
printf("\t请输入想删除记录中的名字:");
scanf("%s",s);
while(strcmp(per[i].name,s)!=0&&i if(i==n) { printf("\t通讯录中没有此人!\n"); } for(j=i;j { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已经成功删除!\n"); n=n-1; return (n); } 1.2.3.2. 文件写入和读取功能: 该段程序可以通过文件指针,for循环,while循环,if循环可以实现文件的写入和读取功能。 void WritetoText(Person per[]) /*写入文件*/ { int i=0; FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/ printf("\t保存到文件\n"); /*输入文件名*/ printf("\t请输入所保存的文件名:"); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t无法打开文件\n"); system("pause"); return; } while(i { fprintf(fp,"%-3d%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,pe r[i].sex,per[i].num,per[i].adds,per[i].email); i++; } fclose(fp); /*关闭文件*/ printf("保存成功!\n"); }