任务
以本班同学的具体数据为背景,设计一个本班同学通讯录。
实现功能
1) 通讯录编辑(添加、删除)。
2) 按不同的项进行查找。
3) 对已存在的通讯录按不同的项排序。
4) 将通讯录写入文件
5)从文件读入通讯录
备注:通讯录至少应该有以下数据项:
姓名,地址,电话,邮编,E-mail。
概要设计
(1)人数不定,每输入一个人编号。
(2)记录每位同学的姓名、电话号码、地址、邮编和E-mail。
(3)可对记录中的姓名和电话号码等进行修改。
(4)可增加或删除记录
(5)加入查询功能,通过姓名或电话号码查询到同学的条目。
(6)在开始画面加入简单的菜单便于选择功能。
(7)将信息保存在文件。
详细设计
1.数据结构和系统框架
1.主要流程:
2. 主要功能
系统功能需求:
<1>记录功能:记录每位同学的姓名、电话号码、地址、邮编和E-mail
<2>查找功能:按不同方式查找信息
<3>添加功能:添加信息
<4>排序功能:将信息按照姓名排序
<5>删除功能:删除指定的信息
<6>保存在文件:将做完的信息保存在文件
<7>结束:结束程序
3.函数说明
选择功能函数
void next()
{
void show();
void seek();
void add();
void sort();
void out();
void keep();
int end();
int b;
printf("\t***********************NEXT**************************\n");
printf("\t请选择接下来的操作:");
scanf("%d",&b);
printf("\t*****************************************************\n");
switch(b)
{
case 1 :show();break;
case 2 :seek();break;
case 3 :add();break;
case 4 :sort();break;
case 5 :out();break;
case 6 :keep();break;
case 7 :end();break;
}
}
输入函数
void write()
{
void next();
void write1();
printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
write1();
}
void write1()
{
void next();
void write2();
int a;
printf("是否输入:");
scanf("%d",&a);
printf("\n");
switch(a)
{
case 1 :write2();break;
case 2 :next();break;
}
}
void write2()
{
void write1();
j=i+1;
printf("%d\t",j);
scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail);
i=i+1;
write1();
}
输出函数
void show()
{
void next();
int s=0;
printf("\t下面将会显示输入的数据:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
for(i=0;i<j;i++)
{
s=s+1;
printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
printf("\t显示结束\n");
next();
}
查找函数
void seek()
{
int q;
void numberseek();
void nameseek();
printf("\t请选择搜索方式:1~按名字查找\n\t 2~按家庭电话号码查找\n");
printf("\t请选择查找方式:");
scanf("%d",&q);
switch(q)
{
case 1 :nameseek();break;
case 2 :numberseek();break;
}
}
void nameseek()
{
void next();
char d[5];
printf("\t请输入要查找学生的名字:");
scanf("%s",d);
for(i=0;i<j;i++)
{
if(strcmp(d,stu[i].name)==0)
{
printf("\t你要查找的学生信息为:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void numberseek()
{
void next();
int e;
printf("\t请输入要查找的电话号码:");
scanf("%d",&e);
for(i=0;i<j;i++)
{
if(e==stu[i].phone)
{
printf("\t你要查找的学生信息为:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
添加函数
void add()
{
void next();
void write1();
i=j;
printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
write1();
}
课程设计成果
程序源代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
char name[20];
int long phone;
char adress[40];
int postcode;
char e_mail[30];
}stu[100];
int j=0,i=0;
void next()
{
void show();
void seek();
void add();
void sort();
void out();
void keep();
int end();
int b;
printf("\t***********************NEXT**************************\n");
printf("\t请选择接下来的操作:");
scanf("%d",&b);
printf("\t*****************************************************\n");
switch(b)
{
case 1 :show();break;
case 2 :seek();break;
case 3 :add();break;
case 4 :sort();break;
case 5 :out();break;
case 6 :keep();break;
case 7 :end();break;
}
}
void write()
{
void next();
void write1();
printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
write1();
}
void write1()
{
void next();
void write2();
int a;
printf("是否输入:");
scanf("%d",&a);
printf("\n");
switch(a)
{
case 1 :write2();break;
case 2 :next();break;
}
}
void write2()
{
void write1();
j=i+1;
printf("%d\t",j);
scanf("%s%d%s%d%s",stu[i].name,&stu[i].phone,stu[i].adress,&stu[i].postcode,stu[i].e_mail);
i=i+1;
write1();
}
void show()
{
void next();
int s=0;
printf("\t下面将会显示输入的数据:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
for(i=0;i<j;i++)
{
s=s+1;
printf("%d\t%s\t%d\t%s\t%d\t%s\n",s,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
printf("\t显示结束\n");
next();
}
void seek()
{
int q;
void numberseek();
void nameseek();
printf("\t请选择搜索方式:1~按名字查找\n\t 2~按家庭电话号码查找\n");
printf("\t请选择查找方式:");
scanf("%d",&q);
switch(q)
{
case 1 :nameseek();break;
case 2 :numberseek();break;
}
}
void nameseek()
{
void next();
char d[5];
printf("\t请输入要查找学生的名字:");
scanf("%s",d);
for(i=0;i<j;i++)
{
if(strcmp(d,stu[i].name)==0)
{
printf("\t你要查找的学生信息为:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void numberseek()
{
void next();
int e;
printf("\t请输入要查找的电话号码:");
scanf("%d",&e);
for(i=0;i<j;i++)
{
if(e==stu[i].phone)
{
printf("\t你要查找的学生信息为:\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
printf("\t%s\t%d\t%s\t%d\t%s\n",stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
break;
}
else
continue;
}
next();
}
void add()
{
void next();
void write1();
i=j;
printf("\t请输入信息(每次输入1时继续输入,输入2时停止输入)\n");
printf("\t姓名\t家庭电话\t地址\t邮编\tE-mail\n");
write1();
}
void sort()
{
void next();
void show();
int h,g,x;
char temp;
for(i=0;i<(j-1);i++)
{
h=i;
for(g=i+1;g<j;g++)
{
if(strcmp(stu[h].name,stu[g].name)==0)
h=g;
if(h!=i)
{
strcpy(temp,stu[i].name);strcpy(stu[i].name,stu[h].name);strcpy(stu[h].name,temp);
x=stu[i].phone;stu[i].phone=stu[h].phone;stu[h].phone=temp;
strcpy(temp,stu[i].adress);strcpy(stu[i].adress,stu[h].adress);strcpy(stu[h].adress,temp);
x=stu[i].postcode;stu[i].postcode=stu[h].postcode;stu[h].postcode=temp;
strcpy(temp,stu[i].e_mail);strcpy(stu[i].e_mail,stu[h].e_mail);strcpy(stu[h].e_mail,temp);
}
}
}
printf("排序成功\n");
show();
}
void out()
{
void next();
int t,h,v;
printf("\t请输入要删除的学生编号:");
scanf("%d",&t);
h=i;
for(v=t-1;v<h;v++)
{
strcpy(stu[v].name,stu[v+1].name);
stu[v].phone=stu[v+1].phone;
strcpy(stu[v].adress,stu[v+1].adress);
stu[v].postcode=stu[v+1].postcode;
strcpy(stu[v].e_mail,stu[v+1].e_mail);
}
j=j-1;
printf("\t删除完毕\n");
next();
}
void keep()
{
void next();
FILE *fp;
int v=0;
char filename[10];
printf("请输入要保存的文件名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("文件无法打开\n");
exit(0);
}
fprintf(fp,"\t姓名\t电话号\t地址\t邮编\tE-mail\n");
for(i=0;i<j;i++)
{
v=v+1;
fprintf(fp,"%d\t%s\t%d\t%s\t%d\t%s\n",v,stu[i].name,stu[i].phone,stu[i].adress,stu[i].postcode,stu[i].e_mail);
}
fclose(fp);
printf("已经保存在文件%s中\n",filename);
next();
}
int end()
{
void next();
int g;
printf("\t是否关闭程序:\n1:是\t2:否\n");
printf("\t请输入你的选择:");
scanf("%d",&g);
switch(g)
{
case 1 :return 0;
case 2 :next();
}
return 0;
}
int main()
{
int ch;
printf("\t********************开始*********************\n\n");
printf("\t 1. 显示通讯录\n");
printf("\t 2. 查找\n");
printf("\t 3. 添加通讯录\n");
printf("\t 4. 按姓名排序\n");
printf("\t 5. 删除通讯录\n");
printf("\t 6. 将记录保存在文件\n");
printf("\t 7. 结束\n");
printf("\t***********************************************\n");
printf("\t请先输入信息\n");
write();
return 0;
}
课程设计心得
通过为期一周的课程设计,我对《C语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。文章来源:https://www.toymoban.com/news/detail-457349.html
附件:源码下载
C语言课程设计-通讯录管理系统_c语言课程设计之通讯录管理系统资源-CSDN文库https://download.csdn.net/download/NBITer/87369754文章来源地址https://www.toymoban.com/news/detail-457349.html
到了这里,关于C语言课程设计_通讯录管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!