收藏 分销(赏)

C语言通讯录管理系统程序代码.doc

上传人:精*** 文档编号:3635827 上传时间:2024-07-11 格式:DOC 页数:25 大小:242.50KB
下载 相关 举报
C语言通讯录管理系统程序代码.doc_第1页
第1页 / 共25页
C语言通讯录管理系统程序代码.doc_第2页
第2页 / 共25页
C语言通讯录管理系统程序代码.doc_第3页
第3页 / 共25页
C语言通讯录管理系统程序代码.doc_第4页
第4页 / 共25页
C语言通讯录管理系统程序代码.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、C语言通讯录管理系统程序代码252020年4月19日文档仅供参考一、 课程设计题目及要求题目 通讯录管理系统任务:自学C语言中相关知识,设计出通讯录管理系统。要求如下所述:u 建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;u 能够提供添加、删除和修改通讯录信息的功能;u 能够提供按姓名或电话等查询;u 将通讯录保存在文件中;u 能够按表格方式输出通讯录信息。二、系统设计方案 (一)总体框架图: 通讯录管理系统:1、录入通讯录信息 2、修改通讯录信息 3、查询通讯录信息 4、浏览通讯录信息 5、增加通讯录信息 6、推出系通讯录统 (二)模块设计 模块一:头文件,变量定

2、义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:录入通讯录信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件student.txt 模块三:通讯录信息的查找 声明void seek()为查找函数,经过switch(item)设定用学号查找,用姓名查找两个分支 模块四:通讯录信息的修改 声明void modify()为学生信息修改函数,经过switch(item)设定所要修改的项目 模块五:通讯录信息按学号排序 声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序 模块六:加通讯录信息 声明void ins

3、ert()插入通讯录信息,先经过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环 模块七:通讯录信息 声明void del()实现通讯录信息删除,经过学号对比确定要删除的信息,然后用后一个替换掉。 模块八:示学生信息 经过display()函数输出通讯录信息 模块九;存信息 经过fp=fopen(student.txt,w);写入信息 模块十:界面菜单 经过switch(num)调用,以上各函数,实现功能三、设计详情1. 主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】显示一系列功能选项输入n,判断n是否是18 ?根据n的值调用各功能模块函数结束开始N图1. 主函数流程图v

4、oid menu()/* 界面 */ int num;printf( nn 自动化0901通讯录管理系统 nn);printf( * nn);printf( * 制作人:翁行兴 * n n);printf( * nn); printf(*系统功能菜单* n);printf( - - n);printf( * 1.刷新学生信息 * * 2.查询学生信息 * n);printf( * 3.修改学生信息 * * 4.增加学生信息 * n);printf( * 5.按学号删除信息 * * 6.显示当前信息 * n);printf( * 7.保存当前学生信息 * * 8.退出系统 * n);printf

5、( - - n);printf(请选择菜单编号:);scanf(%d,&num);switch(num) case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf(请在1-8之间选择n);四、源代码#include #include #include #define BUFLEN 100 #d

6、efine LEN 15 #define N 100 struct record /*结构体*/char codeLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */stuN;int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();v

7、oid modify();void insert();void del();void display();void save();void menu(); int main() while(k)menu();system(pause);return 0; void readfile()/* 建立信息 */char *p=student.txt;FILE *fp;int i=0;if (fp=fopen(student.txt,r)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(pause);exit(0);

8、while(fscanf(fp,%s %s%d%s %s %s %s %s,stui.code,stui.name,&stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8)i+; i=i;fclose(fp);n=i;printf(录入完毕!n); void seek() /*查找*/int i,item,flag;char s121; /* 以姓名和学号最长长度+1为准 */printf(-n);printf(-1.按学号查询-n);printf(-2.按姓名查询-n);printf(-3.退出本菜单-n);printf(-n)

9、;while(1)printf(请选择子菜单编号:);scanf(%d,&item);flag=0;switch(item) case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0)flag=1;printf(学号 姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.ad

10、d,stui.tel,stui.mail);if(flag=0)printf(该学号不存在!n); break;case 2:printf(请输入要查询的学生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.name,s1)=0)flag=1;printf( 学号 姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui

11、.tel,stui.mail);if(flag=0)printf(该姓名不存在!n); break;case 3:return;default:printf(请在1-3之间选择n); void modify() /*修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 */printf(请输入要要修改的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /*比较字符串是否相等*/num=i;printf(-n);printf(1.修改姓名n)

12、;printf(2.修改年龄n);printf(3.修改性别n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改电话号码n);printf(7.修改E-mail地址n);printf(8.退出本菜单n);printf(-n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);switch(item)case 1:printf(请输入新的姓名:n);scanf(%s,s2);strcpy(stunum.name,s2); break;case 2:printf(请输入新的年龄:n);scanf(%d,&stunum.a

13、ge);break;case 3:printf(请输入新的性别:n);scanf(%s,sex1);strcpy(stunum.sex,sex1); break;case 4:printf(请输入新的出生年月:n);scanf(%s,s2);strcpy(stunum.time,s2); break;case 5:printf(请输入新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2); break;case 6:printf(请输入新的电话号码:n);scanf(%s,s2);strcpy(stunum.tel,s2); break;case 7:printf

14、(请输入新的E-mail地址:n);scanf(%s,s2);strcpy(stunum.mail,s2); break;case 8:return;default:printf(请在1-8之间选择n); void sort()/*按学号排序*/int i,j,*p,*q,s; char temp10;for(i=0;ii;j-)if(strcmp(stuj-1.code,stuj.code)0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,stuj-1.nam

15、e);strcpy(stuj-1.name,stuj.name);strcpy(stuj.name,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strcpy(stuj.sex,temp);strcpy(temp,stuj-1.time);strcpy(stuj-1.time,stuj.time);strcpy(stuj.time,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1

16、.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.mail);strcpy(stuj-1.mail,stuj.mail);strcpy(stuj.mail,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s; void insert() /*插入函数*/ int i=n,j,flag;printf(请输入待增加的学生数:n);scanf(%d,&m);do flag=1;while(flag)flag=0;printf(请输入第 %d 个学生

17、的学号:n,i+1);scanf(%s,stui.code);for(j=0;ji;j+)if(strcmp(stui.code,stuj.code)=0)printf(已有该学号,请检查后重新录入!n);flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf(请输入第 %d 个学生的姓名:n,i+1);scanf(%s,stui.name);printf(请输入第 %d 个学生的年龄:n,i+1);scanf(%d,&stui.age);printf(请输入第 %d 个学生的性别:n,i+1);scanf(%s,stui.sex);printf(请输入第 %d

18、 个学生的出生年月:(格式:年.月)n,i+1);scanf(%s,stui.time);printf(请输入第 %d 个学生的地址:n,i+1);scanf(%s,stui.add);printf(请输入第 %d 个学生的电话:n,i+1);scanf(%s,stui.tel);printf(请输入第 %d 个学生的E-mail:n,i+1);scanf(%s,stui.mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf(录入完毕!nn);sort(); void del()int i,j,flag=0;char s1LEN+1;printf(请输

19、入要删除学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;jn-1;j+)stuj=stuj+1;if(flag=0)printf(该学号不存在!n);if(flag=1)printf(删除成功,显示结果请选择菜单6n);n-; void display() int i;printf(所有学生的信息为:n);printf(学号 姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);for(i=0;in;i+) printf(%6s %7s %5d %5s %9s

20、%8s %10s %14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail); void save()int i;FILE *fp;fp=fopen(student.txt,w); /*写入*/for(i=0;in;i+)fprintf(fp,%s %s %d %s %s %s %s %sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);fclose(fp); void menu()

21、/* 界面 */int num;printf( nn 自动化0901学生信息管理系统 nn);printf( * nn);printf( * 制作人:翁行兴 * n n);printf( * nn); printf(*系统功能菜单* n);printf( - - n);printf( * 1.刷新学生信息 * * 2.查询学生信息 * n);printf( * 3.修改学生信息 * * 4.增加学生信息 * n);printf( * 5.按学号删除信息 * * 6.显示当前信息 * n);printf( * 7.保存当前学生信息 * * 8.退出系统 * n);printf( - - n);p

22、rintf(请选择菜单编号:);scanf(%d,&num);switch(num) case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf(请在1-8之间选择n);五调试过程一主界面二测试数据当选择4增加学生信息时,出现对话框,先输入增加的数量。再按要求依次输入,如图输入两组数据,按6查询

23、。如图按3修改信息,如图,输入要修改学生的学号然后选择要修改的选项,例如修改姓名,如图然后再按6查询,如图修改成功!删除信息,先选择5,按学号删除,如图再依据提示按6查询剩余的通讯录,如图学号为03的已经成功删除!三依然存在的问题1,第一次输入的数据到了第二次就不能够保存,可能是编写保存的函数没有编到位2,对于显示时不能每一次操作之后都换一个屏,使得众多的操作都集中在一个屏上,显得不美观。六课程设计总结经过C课程设计这门课,使我对C语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息科学与工程学院自动化专业的学习中占据着十分重要的地位。同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。在遇到不懂的时候,要善于请教她认,不要认为自己什么都懂,这种想法是极其错误的,只有不断吸收她人好的方面,充实自己,自己才能不断的进步。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服