C语言课程设计_通讯录管理系统

这篇具有很好参考价值的文章主要介绍了C语言课程设计_通讯录管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

任务

以本班同学的具体数据为背景,设计一个本班同学通讯录。

实现功能

1)  通讯录编辑(添加、删除)。

2)  按不同的项进行查找。

3)  对已存在的通讯录按不同的项排序。

4)  将通讯录写入文件

5)从文件读入通讯录

备注:通讯录至少应该有以下数据项:

姓名,地址,电话,邮编,E-mail。

概要设计

(1)人数不定,每输入一个人编号。

(2)记录每位同学的姓名、电话号码、地址、邮编和E-mail。 

(3)可对记录中的姓名和电话号码等进行修改。

(4)可增加或删除记录

(5)加入查询功能,通过姓名或电话号码查询到同学的条目。

(6)在开始画面加入简单的菜单便于选择功能。

(7)将信息保存在文件。

详细设计 

 1.数据结构和系统框架

 1.主要流程:

C语言课程设计_通讯录管理系统

2. 主要功能

 C语言课程设计_通讯录管理系统

系统功能需求:

<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语言》这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。同时也使我知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。

附件:源码下载

C语言课程设计-通讯录管理系统_c语言课程设计之通讯录管理系统资源-CSDN文库https://download.csdn.net/download/NBITer/87369754文章来源地址https://www.toymoban.com/news/detail-457349.html

到了这里,关于C语言课程设计_通讯录管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】实现通讯录管理系统

    大家好,我是苏貝,本篇博客带大家实现通讯录,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 本文将使用C语言来实现通讯录管理系统,该通讯录包括若干联系人,和每个联系人的姓名、年龄、性别、电话、地址。此通讯录的功能包括:增加联系人信息,

    2024年02月08日
    浏览(49)
  • 【C语言】优化通讯录管理系统

    大家好,我是苏貝,本篇博客带大家优化上一篇的通讯录,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 在上一篇博文 实现通讯录管理系统 的最后,我们了解了那段代码的问题:通讯录的大小是固定的100个元素,如果想要存放1000个人的信息,那么空间就

    2024年02月06日
    浏览(47)
  • 【C语言】优化通讯录管理系统2

    本篇博客是基于上一篇博客写出来的,了解上一篇博客 大家好,我是苏貝,本篇博客带大家再次优化上一篇的通讯录,实现将录入的数据在程序退出后存储到文件中,在下一次程序开始时打开文件获取数据,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 既

    2024年02月04日
    浏览(55)
  • c语言:通讯录管理系统(文件版本)

    前言: 本通讯录管理系统一共三个版本,除此文章以外还有如下俩个版本,大家可以根据需求自取: 基础增删查改功能版本 :c语言:通讯录管理系统(增删查改)-CSDN博客 动态分配内存版本 :c语言:通讯录管理系统(动态分配内存版)-CSDN博客         本文是在基础的通

    2024年02月07日
    浏览(50)
  • c语言:通讯录管理系统(增删查改)

      前言: 本通讯录管理系统一共三个版本,除此文章以外还有如下俩个版本,大家可以根据需求自取: 动态分配内测版 :c语言:通讯录管理系统(动态分配内存版)-CSDN博客 文件版本 :c语言:通讯录管理系统(文件版本)-CSDN博客 目录 一.大体的框架 主函数初步设计 联系

    2024年02月08日
    浏览(48)
  • 【C语言】通讯录管理系统(附图解、源码)

    目录 一.前言 二.准备工作 三.ContactTest.c测试区 1.菜单 2.选择功能 四.Contact.h头文件引用区 1.通讯录成员结构体函数的创建 2.实现功能函数的创建 五.ContactRealize.c功能实现区 1.初始化成员信息 2.查找目标成员位置 3.增加联系人 4.删除指定联系人 5.查找指定联系人 6.修改指定联系

    2024年02月03日
    浏览(48)
  • 学生通讯录管理系统的设计与实现

    1.1 问题的描述 学生通讯录管理系统是为了帮助老师、同学,或者其他一些需要使用通讯录的人员进行管理和分析的一种应用程序。 1.2 问题分析和任务定义 (1)输入数据建立通讯录; (2)查询通讯录中满足要求的信息; (3)插入新的通讯录信息; (4)删除不需要的通讯

    2024年02月10日
    浏览(55)
  • c语言:通讯录管理系统(动态分配内存版)

    前言: 本通讯录管理系统一共三个版本,除此文章以外还有如下俩个版本,大家可以根据需求自取: 基础增删查改功能版本 :c语言:通讯录管理系统(增删查改)_luming.02的博客-CSDN博客 文件保存版本 :c语言:通讯录管理系统(文件版本)-CSDN博客         本文是在基

    2024年02月08日
    浏览(60)
  • C语言用链表实现通讯录管理系统

    目录 总体思路 具体代码 编译通过 总体代码 一、创建一个结构体保存通讯录信息。 二、构建链表,并存于文件中。 三、实现链表结点的增加、删除、查询、输出。 一、创建一个结构体,保存信息。 二、用尾插法创建一个链表,并让用户选择是否输入数据。 三、将链表数据

    2024年02月02日
    浏览(52)
  • 精通C语言:打造高效便捷的通讯录管理系统

    ✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言项目 贝蒂的主页:Betty‘s blog 在我们大致学习完C语言之后,我们就可以利用目前所学的知识去做一些有意思的项目,而今天贝蒂就带大家完成一个通讯录的简易实现, 本章你可能需要

    2024年02月19日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包