c语言实现通讯录管理系统(c课程设计)
工具:Visual C++6.0
说明:
本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计。功能包括增、删、查、改等,非常适合初学者练手。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。
运行效果:
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct student //定义结构体
{
char name[]; //姓名
char num[]; //学号
char sex[]; //性别
char from[]; //籍贯
char political[]; //政治面貌
char phone[]; //手机号
char QQ[]; //QQ号
char dorm[]; //宿舍
struct student *next; //结构体指针
}stu;
stu *head; void print() //主菜单
{
system("cls");
printf("\n\n\n");
printf(" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf(" ***********************************************************\n");
printf(" \t\t\t班级通讯录管理系统\n");
printf("\n");
printf(" \t\t1. 输入数据");
printf("\t\t2. 显示数据\n");
printf(" \t\t3. 插入数据");
printf("\t\t4. 删除数据\n");
printf(" \t\t5. 查看数据");
printf("\t\t6. 修改数据\n");
printf(" \t\t7. 保存数据");
printf("\t\t8. 返回主菜单\n");
printf(" ***********************************************************\n");
printf(" ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~\n");
printf(" -----------------------------------------------------------\n\n");
} void input(stu *p1) //输入相关数据
{
printf("姓名:");
scanf("%s",&p1->name);
printf("学号:");
scanf("%s",&p1->num);
printf("性别:");
scanf("%s",&p1->sex);
printf("籍贯:");
scanf("%s",&p1->from);
printf("政治面貌:");
scanf("%s",&p1->political);
printf("手机号:");
scanf("%s",&p1->phone);
printf("QQ号:");
scanf("%s",&p1->QQ);
printf("宿舍:");
scanf("%s",&p1->dorm);
} stu * inputdata() //数据输入的函数
{
stu *p1,*p2;
int i=;
p1=(stu *)malloc(sizeof(stu));
if(p1!=NULL)
{
head=p1;
printf("\n\t\t\t☆☆☆输入数据☆☆☆\n");
printf("------------------------------------------------------------------\n");
printf("在姓名处输入“ok”代表输入数据结束\n");
while(i)
{
printf("姓名:");
scanf("%s",&p1->name);
if(strcmp(p1->name,"ok")==)
{
printf("\n输入完毕!\n");
printf("========================================================================\n");
i=;
p2->next=NULL;
free(p1);
p1=p2;
}
else
{
printf("学号:");
scanf("%s",&p1->num);
printf("性别:");
scanf("%s",&p1->sex);
printf("籍贯:");
scanf("%s",&p1->from);
printf("政治面貌:");
scanf("%s",&p1->political);
printf("手机号:");
scanf("%s",&p1->phone);
printf("QQ号:");
scanf("%s",&p1->QQ);
printf("宿舍:");
scanf("%s",&p1->dorm);
printf("=====================================\n");
p2=p1;
p1=(stu *)malloc(sizeof(stu));
if(p1!=NULL)
{
p2->next=p1;
}
}
}
return(p1->next);
}
} stu * lookdata(stu *p1) //查看数据的函数
{
printf("\n\t\t\t☆☆☆显示数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
while(p1!=NULL)
{
printf("姓名:%s\n",p1->name);
printf("学号:%s\t",p1->num);
printf("性别:%s\t",p1->sex);
printf("籍贯:%s\t",p1->from);
printf("政治面貌:%s\t",p1->political);
printf("手机号:%s\t",p1->phone);
printf("QQ号:%s\t",p1->QQ);
printf("宿舍:%s\n",p1->dorm);
printf("======================================================================\n");
p1=p1->next;
}
return p1;
} void insert() //插入数据
{
int i;
char named[];
stu *p1,*p2,*p3;
p1=head;
p3=(stu *)malloc(sizeof(stu));
p3->next=NULL;
printf("\n\t\t\t☆☆☆插入数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
printf("请输入插入者的资料:\n");
input(p3);
printf("\n插入选项\n");
printf("1.首位置插入\t2.尾位置插入\t3.前插\n");
printf("请输入你的选择:");
scanf("%d",&i);
switch(i)
{
case :p3->next=p1;
head=p3;
break;
case :while(p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
p1->next=p3;
break;
case :printf("请输入姓名(前插):");
scanf("%s",named);
while(strcmp(named,p1->name)!=)
{
p2=p1;
p1=p1->next;
}
p2->next=p3;
p3->next=p1;
break;
}
printf("插入成功!\n");
printf("======================================================================\n");
return;
} void deleted() //删除数据
{
stu *p1,*p2;
char Name[]; //想要删除的人的姓名
printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
printf("请输入要删除的姓名:");
scanf("%s",Name);
p1=head;
if(head==NULL)
{
printf("内存空空神马都没有!\n");
printf("======================================================================\n");
return;
}
if(strcmp(Name,p1->name)==)
{
head=p1->next;
printf("删除成功!\n");
printf("======================================================================\n");
return;
}
while(p1!=NULL&&(strcmp(Name,p1->name)!=))
{
p2=p1;
p1=p1->next;
}
if(p1==NULL)
{
printf("此人不存在!\n");
printf("======================================================================\n");
return;
}
if(p1->next!=NULL)
{
p1=p1->next;
p2->next=p1;
printf("删除成功!\n");
printf("======================================================================\n");
return;
}
else
{
p2->next=NULL;
printf("删除成功!\n");
printf("======================================================================\n");
return;
}
} find(stu *p2) //通过姓名查找查看数据的函数
{
char name[];
int b=;
printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
printf("请输入您想查找人的姓名:");
scanf("%s",name);
while(p2!=NULL)
{
if(strcmp(name,p2->name)==)
{
printf("你要找到的数据\n");
printf("姓名:%s\n",p2->name);
printf("学号:%s\t",p2->num);
printf("性别:%s\t",p2->sex);
printf("籍贯:%s\t",p2->from);
printf("政治面貌:%s\t",p2->political);
printf("手机号:%s\t",p2->phone);
printf("QQ号:%s\t",p2->QQ);
printf("宿舍:%s\n",p2->dorm);
printf("======================================================================\n");
b=;
}
p2=p2->next;
}
if(b==)
{
printf("\n您要查找的人不存在!\n");
}
} update(stu *p2) //通过姓名查找修改数据
{
char name[];
int b=,i;
printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
printf("请输入将要修改人的姓名:");
scanf("%s",name);
while(p2!=NULL)
{
if(strcmp(name,p2->name)==)
{
printf("该同学的基本信息\n");
printf("姓名:%s\n",p2->name);
printf("学号:%s\t",p2->num);
printf("性别:%s\t",p2->sex);
printf("籍贯:%s\t",p2->from);
printf("政治面貌:%s\t",p2->political);
printf("手机号:%s\t",p2->phone);
printf("QQ号:%s\t",p2->QQ);
printf("宿舍:%s\n",p2->dorm);
printf("\n请选择要修改的信息\n");
printf("\t1.姓名\t2.学号\t3.性别\t4.籍贯\n\t5.政治面貌\t6.手机号\t7.QQ\t8.宿舍\n");
printf("\n您的选择是(1~8):");
scanf("%d",&i);
printf("请输入修改之后的内容\n");
switch(i)
{
case :printf("姓名:");
scanf("%s",&p2->name);
break;
case :printf("学号:");
scanf("%s",&p2->num);
break;
case :printf("性别:");
scanf("%s",&p2->sex);
break;
case :printf("籍贯:");
scanf("%s",&p2->from);
break;
case :printf("政治面貌:");
scanf("%s",&p2->political);
break;
case :printf("手机号:");
scanf("%s",&p2->phone);
break;
case :printf("QQ:");
scanf("%s",&p2->QQ);
break;
case :printf("宿舍:");
scanf("%d",&p2->dorm);
break;
}
printf("\n修改成功!\n");
printf("=========================================================================\n");
b=;
}
p2=p2->next;
}
if(b==)
{
printf("没有找到该人的资料!\n");
}
} save(stu *p2) //保存数据
{
FILE *fp;
char file[];
printf("\n\t\t\t☆☆☆保存数据☆☆☆\n");
printf("----------------------------------------------------------------------\n");
printf("输入文件名:");
scanf("%s",file);
if((fp=fopen(file,"w"))==NULL)
{
printf("cannot open this file\n");
exit();
}
fprintf(fp,"姓名\t学号\t性别\t籍贯\t政治面貌\t手机号\tQQ号\t宿舍\n");
while(p2!=NULL)
{
fprintf(fp,"%s\t",p2->name);
fprintf(fp,"%s\t",p2->num);
fprintf(fp,"%s\t",p2->sex);
fprintf(fp,"%s\t",p2->from);
fprintf(fp,"%s\t",p2->political);
fprintf(fp,"%s\t",p2->phone);
fprintf(fp,"%s\t",p2->QQ);
fprintf(fp,"%s\n",p2->dorm);
p2=p2->next;
}
printf("\n保存成功!\n");
printf("======================================================================\n");
fclose(fp);
} void screen()
{
int i;
char s[]={"欢迎使用由ZM制作班级通讯录管理系统,\n\n\t\t\t本系统用于通讯录管理----排序,打印\n\n\n\t\tWelcome to use produced by ZM class address book\n\n\t\t management system,sorting,printing"}; printf("\n================================================================================\n");
printf("\n\n\n\t\t\t");
for(i=;s[i]!=NULL;i++)
{
Sleep();
printf("%c",s[i]);
}
printf("\n\n\n\n\n\n\n\n\t\t ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您旅途愉快~ ~\n");
printf("================================================================================\n"); } void main()
{
int i;
system("color 4e");
screen();
Sleep();
print();
while()
{
printf("请输入你的选择(1~9):");
loop:scanf("%d",&i);
if(i<||i>)
{
printf("输入有误,请在1~9中进行选择:");
goto loop;
}
switch(i)
{
case :
inputdata();
break;
case :
lookdata(head);
break;
case :
insert();
break;
case :
deleted();
break;
case :
find(head);
break;
case :
update(head);
break;
case :
save(head);
break;
case :
print();
break;
case :
exit();
break;
}
}
}
c语言实现通讯录管理系统(c课程设计)的更多相关文章
- C语言连接MySQL数据库(课程设计总结)
刚结束课程设计,也预示着假期立即就要到来了.本次课程设计并不算难,无非就是让做一个XXX系统,实现用户的注冊.登录.菜单管理.超级用户等等一些功能,到如今为止已经做过好几个了,所以基本流程都熟悉了! ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- C语言课程设计—图书管理系统
这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...
- C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...
- 大一C语言课程设计——班级档案管理系统
记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
- c语言程序课程设计题目
<C语言程序设计>课程设计课题表 一.A类 .职工信息管理系统设计 职工信息包括职工号.姓名.性别.年龄.学历.工资.住址.电话等(职工号不重复).试设计一职工信息管理系统,使之能提供以下 ...
- 课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统
课程设计- 基于ssm的捐赠物资分配管理系统 && 基于java的申请救援管理系统 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架: ...
随机推荐
- configure编译,显示错误不合法的选项空
解决: 注释的问题,讲注释重启起一行,或者取消掉就可以了 不要在反斜杠后面在写任何东西,他会把你写的东西当作新的一行的输入内容的
- 工作好搭档(三):慧想 S100 液晶显示器支架
引言:工欲善其事,必先利其器.码农十年,与电脑打了二十多年的交道,也配置了一些过得去的装备.资金有限,更希望所有的投入都在刀刃上.写工作好搭档系列,是晒考虑的原因.思路.经验和教训.欢 ...
- ego network的概念
转:http://greatpowerlaw.wordpress.com/2013/01/05/ego-network/ 所谓的ego network,它的节点是由唯一的一个中心节点(ego),以及这 ...
- 警告: Request method 'POST' not supported的原因之一
警告: Request method 'POST' not supported是经常遇到的,这里记录一下我经常遇到的一种情况,以免忘记. 我使用拦截器拦截所有请求,然后列出不拦截的请求.有时候由于自己 ...
- ListView实现分页加载(三)实现分页加载
在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...
- JSON解析问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/quanqinayng/article/details/25121955 这是data.chatFil ...
- 一.在Linux中for和cat遍历文件内容出现no space
以前使用for var in file方式逐行读取文件内容的时候,都没有出现问题,但是今天使用如下代码,会出现“no space” ,目标数据文件内容为6.8M, # 写入临时文件,第一行不能写入 f ...
- python 中if-else的多种简洁的写法
因写多了判断语句,看着短短的代码却占据来好几行,于是便搜下if-else简洁的写法,结果也是发现新大陆 4种: 第1种:__就是普通写法 a, b, c = 1, 2, 3 if a>b: c ...
- JavaScript:回调模式(Callback Pattern) (转载)
JavaScript:回调模式(Callback Pattern) 函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode() ...
- ESlint 语法检测配置说明
部分vue-cli脚手架创建的默认eslint规则: 代码末尾不能加分号 ; 代码中不能存在多行空行 tab键不能使用,必须换成两个空格 代码中不能存在声明了但未使用的变量 关闭eslint 这里只说 ...