当前位置:首页 » 编程语言 » c语言手机通讯录管理系统
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言手机通讯录管理系统

发布时间: 2022-02-27 00:56:59

① 急求c语言编程 - 通讯录管理系统

#include"stdio.h"
#define SIZE 5

struct stu
{
char name[10];
int no;
int age;
char add[10];
}stu[SIZE];

void readdat();
void writedat();
void change();

main()
{
char k;

printf(" 欢迎进入学生信息管理系统\n");
printf("\n\n 1.学生信息输入系统 ");
printf(" 2.学生信息查询系统\n");
printf(" 3.学生信息修改系统\n\n\n");
began:
printf("\n\n请输入选项:");
scanf("%d",&k);
switch(k)
{
case 1: writedat(); break;

case 2: readdat(); break;

case 3: change(); break;

default: goto began;
}
goto began;
while(1);
}

void writedat()
{
FILE *fp;
char i;

printf("\n\n请输入学生的姓名、学号、年龄和地址:\n");
for(i=0;i<SIZE;i++)
{
printf("输入%d号学生信息:",i+1);
scanf("%s %d %d %s",stu[i].name,&stu[i].no,&stu[i].age,stu[i].add);
}

if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}
fclose(fp);
}

void readdat()
{
FILE *fp;
int i,k,kk;

jixu:
printf("查询全部请输入0,查询单个请输入1:");
scanf("%d",&k);

if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
if(k==0)
{
printf("编号 姓名 学号 年龄 地址\n");
for(i=0;i<SIZE;i++)
{
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",i+1,stu[i].name,stu[i].no,stu[i].age,stu[i].add);
}
}
else if(k==1)
{
printf("请输入学生的编号:");
scanf("%d",&kk);
printf("编号 姓名 学号 年龄 地址\n");
if(fread(&stu[kk-1],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);
}
else
{
printf("输入错误!");
goto jixu;
}
fclose(fp);
}

void change()
{
FILE *fp;
char i,kk;

while(1)
{
printf("请输入修改信息学生的编号(0退出):");
scanf("%d",&kk);
if(kk==0)
return;

printf("编号 姓名 学号 年龄 地址\n");
if((fp=fopen("E:\\a.dat","rb"))==NULL)
{
printf("Read Error\n");
return;
}
for(i=0;i<SIZE;i++)
if(fread(&stu[i],sizeof(struct stu),1,fp)!=1)
{
if(!feof(fp))
printf("write error\n");
return;
}
printf("%-5d%-8s%-8d%-5d%s\n",kk,stu[kk-1].name,stu[kk-1].no,stu[kk-1].age,stu[kk-1].add);

printf("请输入学生的姓名、学号、年龄和地址:\n");
scanf("%s %d %d %s",stu[kk-1].name,&stu[kk-1].no,&stu[kk-1].age,stu[kk-1].add);
if((fp=fopen("E:\\a.dat","wb"))==NULL)
{
printf("Open Error\n");
return;
}
for(i=0;i<SIZE;i++)
{
if(fwrite(&stu[i],sizeof(struct stu),1,fp)!=1)
printf("write error\n");
}

fclose(fp);
}
}

② c语言程序设计 通讯录管理系统

你好!

有一个程序可以满足你的要求,你看看吧,可以按照你的要求修改

③ 求一个c语言设计程序:通讯录管理系统

#include<cstdio>
#include<cstdlib>
#include<cstring>
/**通讯录*/
#definename256///名字
#definetele32///手机号
#definebirt32///生日
#definestID32///学号
typedefstructdirectory
{
charName[name];
charTele[tele];
charBirt[birt];
charStID[stID];
structdirectory*next,*prior;
}CONTACTS;
boolJ_T(charp[])///电话号码
{
intlen=strlen(p);
if(len!=11||p[0]!='1')return0;
for(inti=1;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'))
return0;
}
return1;
}
boolJ_L(intyear)///平/润年
{
return(year%4==0&&year%100!=0||year%400==0);
}
boolJ_B(charp[])///生日
{
intlen=strlen(p);
if(!(len>=8&&len<=10))return0;/**1949/1/1(8)1949/12/31(10)**/
intsum=0,Bith[3],k=0;
for(inti=0;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'||p[i]=='/'))///输入合法
return0;
}
p[len]='/';
p[len+1]='';
for(inti=0;i<=len;i++)
{
if(p[i]!='/')
sum=10*sum+p[i]-'0';
else
{
Bith[k++]=sum;
sum=0;
}
}
p[len]='';
if(!(Bith[1]>=1&&Bith[1]<=12))
return0;
switch(Bith[1])
{
case1:case3:case5:case7:case8:case10:case12:
if(!(Bith[2]>=1&&Bith[2]<=31))return0;break;
case4:case6:case9:case11:
if(!(Bith[2]>=1&&Bith[2]<=30))return0;break;
case2:
if(J_L(Bith[0])==1){if(!(Bith[2]>=1&&Bith[2]<=29))return0;}///润年29天
else{if(!(Bith[2]>=1&&Bith[2]<=28))return0;}break;///平年28天
}
return1;
}
boolJ_I(charp[])///学号
{
intlen=strlen(p);
if(len!=11||p[0]==0)return0;
for(inti=1;i<len;i++)
{
if(!(p[i]>='0'&&p[i]<='9'))
return0;
}
return1;
}
voidInput_(CONTACTS*head,boolx)///1,新录入;2,添加
{
printf("录入几个人? ");
intn;
scanf("%d",&n);
getchar();
while(n--)
{
CONTACTS*p,*pnew=newCONTACTS;
if(x==0)
p=head->next;
else
p=head->prior;
printf("名字 ");
gets(pnew->Name);
printf("手机号 ");
while(1)
{
gets(pnew->Tele);
if(J_T(pnew->Tele)==1)
break;
else
printf("输入手机号码错误,请重输 ");
}
printf("生日 ");
while(1)
{
gets(pnew->Birt);
if(J_B(pnew->Birt)==1)
break;
else
printf("输入不正确,请检查 ");
}
printf("学号 ");
while(1)
{
gets(pnew->StID);
if(J_I(pnew->StID)==1)
break;
else
printf("输入学号错误,请检查后重新输入 ");
}
p->next=pnew;
pnew->prior=p;
pnew->next=head;
head->prior=pnew;
}
return;
}
voidOutput_(CONTACTS*head)///输出
{
CONTACTS*p=head->next;
printf("------------------------ ");
while(p!=head)
{
printf("%-8s:%s %-8s:%s %-8s:%s %-8s:%s ","|姓名",p->Name,"|学号",p->StID,"|手机号码",p->Tele,"|生日",p->Birt);
if(p->next!=head)
putchar(' ');
p=p->next;
}
printf("------------------------ ");
return;
}
voidOpen_files(CONTACTS*pHead)///外部倒入数据
{
CONTACTS*pNew,*pNext;
FILE*fp;
charfilename[name];
puts("请输入你要打开文件的地址");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
puts("无法打开文件");
fflush(stdin);
}
else
{
pNext=(CONTACTS*)malloc(sizeof(CONTACTS));
pHead->next=pNext;
pNext->prior=pHead;
fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);
while(!feof(fp))
{
pNew=(CONTACTS*)malloc(sizeof(CONTACTS));
pNext->next=pNew;
pNew->prior=pNext;
pNext=pNew;
fscanf(fp,"%s%s%s%s",pNext->Name,pNext->StID,pNext->Tele,pNext->Birt);
}
pNext->next=pHead;
pHead->prior=pNext;
puts("导入数据成功!");
fclose(fp);
}
return;
}
voidSave_files(CONTACTS*pHead)///保存数据
{
CONTACTS*p=pHead->next;
FILE*fp;
charfilename[name];
if(p==pHead)
{
puts("无学生信息,请先录入学生信息");
}
else
{
while(1)
{
puts("请输入你要保存文件的地址");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
puts("无法打开文件");
else
{
while(p->next!=pHead)
{
fprintf(fp,"%s %s %s %s ",p->Name,p->StID,p->Tele,p->Birt);
p=p->next;
}
fprintf(fp,"%s %s %s %s ",p->Name,p->StID,p->Tele,p->Birt);
puts("保存文件成功!");
fclose(fp);
break;
}
}
}
return;
}
intMenu()
{
system("cls");
printf("-----------------------通讯录----------------------- ");
printf("|******* 1.录入| ");
printf("|******* 2.添加| ");
printf("|******* 3.查看| ");
printf("|******* 4.保存| ");
printf("|******* 5.打开| ");
printf("|******* 0.退出| ");
printf("---------------------------------------------------- ");
inti;
do
{
printf("输入选项:_");
scanf("%d",&i);
}
while(i<0||i>5);
returni;
}
boolLoading(inttime)
{
charadmin[20]={"1"},passw[20]={"1"};
printf(" 用户:______");
charadmi[20],pass[20];
scanf("%s",admi);
if(strcmp(admi,admin)==0)
{
printf(" 密码:______");
scanf("%s",pass);
if(strcmp(pass,passw)==0)
return1;
else
{
printf("密码错误 ");
return0;
}
}
else
{
printf("管理员错误 ");
return0;
}
}
intmain()
{
CONTACTS*head=(CONTACTS*)malloc(sizeof(CONTACTS));
head->next=head->prior=head;
inttimes=5;
printf(" ---------------------------------------------------------------- ");
printf(" |*******通讯录系统*******| ");
printf(" |*******注意:你有%d次机会登陆本系统*******| ",times);
printf(" ---------------------------------------------------------------- ");
while(1)
{
intsign=Loading(times);
if(sign==1||times==1)
break;
times--;
printf("还有%d次机会 ",times);
}
if(times>1)
{
while(1)
{
switch(Menu())
{
case1:Input_(head,0);break;
case2:Input_(head,1);break;
case3:Output_(head);getchar();break;
case4:Save_files(head);getchar();break;
case5:Open_files(head);getchar();break;
case0:exit(0);break;
}
printf("按任意键继续 ");
getchar();
}
}
else
{
printf("退出系统 ");
}
return0;
}


④ 急求c语言编程的个人通讯录管理系统~

课 程 设 计

课程设计名称: 数据结构课程设计
专 业 班 级 : 计科××××
学 生 姓 名 : ×××
学 号 : ××××××
指 导 教 师 :
课程设计时间:

计算机应用技术 专业课程设计任务书

学生姓名 ××× 专业班级 计科×× 学号 ××××
题 目 ××××××××××
课题性质 A 课题来源 D
指导教师 同组姓名 无
主要内容 学习掌握并熟练运用C语言进行程序设计;
针对具体应用问题,选择、设计和实现合适的抽象数据类型;
进行简单的需求分析,给出设计方案。
任务要求
综合运用和融化所学理论知识,提高分析和解决实际问题的能力,达到培养良好程序设计能力和习惯的目的,为开发满足问题要求的小型应用软件奠定基础,达到软件工程的综合性基础训练的目的。
完成需求分析报告,报告中对关键部分给出图表说明。要求格式规范,工作量饱满。
参考文献 《数据结构(C语言版)》严蔚敏 清华大学出版社
《C语言程序设计》(第三版)谭浩强 清华大学出版社

审查意见
指导教师签字:
教研室主任签字: 年 月 日

1 需求分析
手机通讯录系统,以联系人为节点建立伪队列(有头尾指针、且可从表中间进行操作),要实现一下基本功能。
增加联系人
删除联系人
修改联系人
清空通讯录
查找联系人
按分组显示联系人
显示全部联系人
退出系统
2概要设计
(1) 程序总体框架如图1所示:

图1 程序框架图

(2)序中各函数程简单说明见如表1函数说明所示:
返回值 函数名 参数表 函数说明 提供客户
int main void 主函数 是
void initAddressBook LinkQueue &Q 初始化通讯录 否
bool enAddressBook LinkQueue &Q 增加联系人 是
bool update LinkQueue &Q 修改联系人 是
bool delPerson LinkQueue &Q 删除联系人 是
bool findByName LinkQueue &Q 查找联系人 是
bool findByGroup LinkQueue &Q 按组显示 是
void disAll LinkQueue &Q 显示全部联系人 是
bool clearAddressBook LinkQueue &Q 清空通讯录 是

表1 函数说明
(2)对程序中的各个函数功能的描述
①主函数main:
系统开始、结束界面的显示、各个功能函数的调用、转换以及参数的传递、定义通讯头结点并传递给各个功能函数
②初始化通讯录函数initAddressBook:
初始化主函数传入的头结点,即初始化通讯录,此系统采用伪队列,有头、尾指针,可从中间进行删除操作
③增加联系人函数enAddressBook
增加联系人到通讯录的尾部,返回增加是否成功。
④修改联系人函数
按照用户提供的联系人姓名修改联系人所有信息,返回修改是否成功。
⑤删除联系人
按照用户指定的联系人姓名删除相应联系人信息,返回删除是否成功。
⑥查找联系人
按照用户提供的联系人姓名查找第一个合法姓名对应的信息,查找成功则显示信息,失败则提示无此联系人,返回是否查找到。
⑦按组显示函数
按照用户提供的分组名称,查找组中联系人,若存在则全部输出,若不存在则提示无此分组,返回是否超找到合法联系人。
⑧显示全部联系人函数
显示当前通讯录中所有联系人的信息,若为空通讯录,则显示无联系人。
⑨清空通讯录
删除所有联系人信息,返回是否成功!
⑩通讯录人数函数
判断通讯录当前联系人数量,返回之,此函数主要是为清空通讯录函数所调用,故不提供给用户。
计3 运行环境
1)软件环境
操作系统:Windows7
2)硬件环境
处理器:Intel Pentium 166MX 或更高
内存:32MB以上
硬盘空间:1GB以上
显卡:SVGA 显示适配
4 开发工具和编程语言
Microsoft visual C++
C语言
5 详细设
//主函数
int main()
{
LinkQueue Q;
initAddressBook(Q);

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");
printf("※1、增加联系人 2、删除联系人 ※\n");
printf("※3、修改联系人 4、清空通讯录 ※\n");
printf("※5、查找联系人 6、按组显示 ※\n");
printf("※7、显示全部联系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入编号(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("输入错误请重新输入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!\n");
else
printf("增加联系人失败!\n");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!\n");
else
printf("联系人删除失败!\n");
break;
case 3:
if(update(Q))
printf("修改联系人成功!\n");
else
printf("修改联系人失败!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!\n");
else
printf("通讯录清空失败!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※\n");
return 0;
}
//初始化通讯录

void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;

}
//清空通讯录
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通讯录当前人数
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//删除联系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("请输入要删除的联系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//删除节点
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("无此联系人!\n");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 号码:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 号码:%s \n",p->name,p->tel);
return true;
}
else
{
printf("无此分组!\n");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:\n");
scanf("%s",p->name);
printf("请输入联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入联系人分组:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改联系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人!\n");
else
{
printf(" 姓名 号码 分组\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}
6 调试分析
1.测试中的问题举例:
在测试删除联系人函数时发现无论通讯录中现存多少条记录只要删除一条之后,通讯录就会被清空,经过检查发现是删除函数中的条件控制设置有错,导致只要一删除一个联系人就会事头结点与尾结点指向同一个,导致再显示联系人时显示无联系人。经过调整已处理好。
2.算法改进设想举例:
程序中还有很多地方不能很好的模拟通讯录的功能,比如在增肌联系人时,不管原来新联系人姓名是否已存在,都会被加入通讯录,这样一来就有可能重复记录。此外在查找联系人时只要查找到一个合法记录就会中断查找操作,如此有可能导致记录的漏查。结合以上两点应优化增加查找联系人算法,在存入之间进行防重判断。
7 测试结果
1.测试数据举例:
姓名 手机号 分组
张三 12345678910 家人
李四 12345678911 朋友
王五 12345678912 朋友
赵六 12345678913 同学
表2 测试数据举例
2.按如下顺序进行测试:
1) 将测试数据逐条输入通讯录(测试增加联系人函数)
2) 显示全部联系人(测试显示联系人函数)
3) 选择一个联系人进行修改(测试修改联系人函数)
4) 显示全部联系人(验证修改联系人函数是否有效)
5) 选择一个联系人进行查找(测试查找联系人函数)
6) 选择一个多人分组进行按分组显示(测试按分组显示函数)
7) 选择清空联系人(测试清空联系人函数)
8) 显示全部联系人(验证清空联系人函数)
9) 选择退出(退出程序)
3、按照如上提供的测试步骤得出以下结果运行图:
主菜单如图2所示:

图2 运行示例图a
1)在菜单中选择“1”将测试数据逐条输入通讯录,如图3

图3 运行示例图b
2) 在菜单中选择“7”显示全部联系人,如图4

图4 运行示例图c
3) 在菜单中选择“3”选择一个联系人进行修改,如图5

图5 运行示例图d
4) 在菜单中选择“7”显示全部联系人,如图6

图6 运行示例图e
5) 在菜单中选择“5”选择一个联系人进行查找,如图7

图7 运行示例图f
6) 在菜单中选择“6”选择一个多人分组进行按分组显示,如图8

图8 运行示例图g
7) 在菜单中选择“4”清空联系人,如图9

图9 运行示例图h
8) 在菜单中选择“7”显示全部联系人,如图10

图10 运行示例图i
9) 在菜单中选择“8”,退出,如图11

图11 运行示例图j
参考文献
[1]严蔚敏,《数据结构(C语言版)》 清华大学出版社
[2]谭浩强.《C语言程序设计》(第三版) 清华大学出版社
[3]Peter Van Der Linden ,C专家编程,人民邮电出版社
[4]Kenneth A.Reek C和指针 ,人民邮电出版社
心得体会
通过这次数据结构实践作业,我更深刻的体会到了C语言的语句简洁性、紧凑性,与数据结构思想对于一个程序编码顺利进行的重要性。
语言是程序的骨肉,而数据结构和算法即使程序的灵魂,要想成功的编写程序必须选好合适的数据结构,比如这次课程设计中,最开始我准备用普通的线性表进行设计,后来发现那样很不方便,后来改为用“伪队列”之后就方便了许多。
另外,我觉得比较重要的一点是在编复杂程序时要有宏观思想,想从整体把握设计好各个板块的调用关系,最好先做出一个流程图,再按照这个总体设想进一步具体、细化!这样才不会在需要调用其它函数时手忙脚乱!
此外,进行如上所述的操作前提都是以扎实的语言基础做为前提的,在最开始的代码编辑阶段,我曾被指针很深的困扰,后来对此一节找了些资料进行“补课”,自己也进行的深入的理解,后来才逐渐顺利起来!

信息科学与工程 学院课程设计成绩评价表
课程名称:数据结构课程设计
设计题目:×××××
专业:计科 班级:××× 姓名:××× 学号:××××××
序号 评审项目 分 数 满分标准说明
1 内 容 思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。
2 创 新 内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解
3 完整性、实用性 整体构思合理,理论依据充分,设计完整,实用性强
4 数据准确、可靠 数据准确,公式推导正确
5 规 范 性 设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定
6 纪 律 性 能很好的遵守各项纪律,设计过程认真;
7 答 辩 准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准确。在规定的时间内作完报告。
总 分





指导教师 年 月 日

⑤ c语言学生通讯录管理系统

/* HELLO.C -- Hello, world */

#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )

{
int m;
creat();
while(1)
{
printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t查找,请按2");
printf("\n\t\t修改,请按3");
printf("\n\t\t删除,请按4");
printf("\n\t\t输出,请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}

/*输入模块creat( ): 创建通讯录的子函数。*/
void creat()
{
struct person one;
long s1;
/*printf("\n请输入通讯录文件名:");
scanf("%s",filename); */

if((fp=fopen(filename,"at+"))==NULL)
{
printf("\n不能建立通讯录!");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}

/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
printf("\n\n%20s\n","通 讯 录");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}

/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}

/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}

/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯录中没有此人的记录。");
fclose(fp);
}

/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n对不起,通讯录中没有此人的记录。");
fclose(fp);
}
}
}
}
<PIXTEL_MMI_EBOOK_2005>1###########################################################</PIXTEL_MMI_EBOOK_2005>

⑥ 用c语言设计出模拟手机通讯录管理系统,实现对手机中的通信录进行管理。

一个通信录管理程序有以下功能: . 插入新的通信记录; . 查找某人的通信记录; . 删除某人的通信记录; . 浏览通信录; . 结束程序运行。 设每条通信录包含以下内容: .姓名 .地址 .邮政编码 .电话号码 并设通信录全部以字符行形式存于文件中,每四个字符行构成一个通信录记录。 程序启动后,自动从指定的文件中读取通信录信息。程序运行结束后,又自动将内存中修改过的通信录 信息保护到文件中。为了查找,插入,删除等操作的方便,程序内部以双向链表形式组织通信录信息。设启 动程序的命令行可带通信录文件参数。如启动时未给出文件名参数,则程序首先要求用户键入通信录文件

⑦ C语言,编写一个简单的通讯录管理系统

实现一个通讯录管理系统;

通讯录管理系统可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址

**提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人**

1、linkman.h(头文件)

3、程序运行结果部分示范:

⑧ c语言 电话簿管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>

//主函数
int main()
{
LinkQueue Q;
initAddressBook(Q);

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");
printf("※1、增加联系人 2、删除联系人 ※\n");
printf("※3、修改联系人 4、清空通讯录 ※\n");
printf("※5、查找联系人 6、按组显示 ※\n");
printf("※7、显示全部联系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入编号(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("输入错误请重新输入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!\n");
else
printf("增加联系人失败!\n");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!\n");
else
printf("联系人删除失败!\n");
break;
case 3:
if(update(Q))
printf("修改联系人成功!\n");
else
printf("修改联系人失败!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!\n");
else
printf("通讯录清空失败!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※\n");
return 0;
}
//初始化通讯录

void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;

}
//清空通讯录
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通讯录当前人数
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//删除联系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("请输入要删除的联系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//删除节点
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("无此联系人!\n");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 号码:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 号码:%s \n",p->name,p->tel);
return true;
}
else
{
printf("无此分组!\n");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:\n");
scanf("%s",p->name);
printf("请输入联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入联系人分组:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改联系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人!\n");
else
{
printf(" 姓名 号码 分组\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}

⑨ 求用C语言建立通讯录管理系统

#include<iostream>
#include<string>
#include<cstdio>
#include<windows.h>
usingnamespacestd;
#defineMAX1000
structPerson
{
stringm_Name;
intm_Sex;
intm_Age;
stringm_Phone;
stringm_Addr;
};
structAddressbooks
{
structPersonpersonArray[MAX];
intm_Size;
};
voidaddPerson(Addressbooks*abs)
{
if(abs->m_Size==MAX)
{
cout<<"通讯录已满,无法添加!"<<endl;
return;
}
else
{
cout<<"请输入名字:"<<endl;
stringname;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"请输入性别:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
intsex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout<<"请输入年龄:"<<endl;
intage=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"请输入电话号码:"<<endl;
stringphone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"请输入家庭住址"<<endl;
stringaddress;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"添加成功"<<endl;
}
system("pause");
system("cls");
}
voidshowPerson(Addressbooks*abs)
{
if(abs->m_Size==0)
{
cout<<"当前记录为空"<<endl;
}
else
{
for(inti=0;i<abs->m_Size;i++)
{
cout<<"姓名:"<<abs->personArray[i].m_Name<<"";
cout<<"性别:"<<(abs->personArray[i].m_Sex==1?"男":"女")<<"";
cout<<"年龄:"<<abs->personArray[i].m_Age<<"";
cout<<"电话:"<<abs->personArray[i].m_Phone<<"";
cout<<"住址:"<<abs->personArray[i].m_Addr<<endl;
}
}
system("pause");
system("cls");
};
intisExist(Addressbooks*abs,stringname)
{
for(inti=0;i<abs->m_Size;i++)
{
if(abs->personArray[i].m_Name==name)
{
returni;
}
}
return-1;
}
voiddeletePerson(Addressbooks*abs)
{
cout<<"请输入您要删除的联系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=-1)
{
for(inti=ret;i<abs->m_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
}
abs->m_Size--;
cout<<"删除成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
}
voidfindPerson(Addressbooks*abs)
{
cout<<"请输入您要查找的联系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=1)
{
cout<<"姓名:"<<abs->personArray[ret].m_Name<<"";
cout<<"性别:"<<(abs->personArray[ret].m_Sex==1?"男":"女")<<"";
cout<<"年龄:"<<abs->personArray[ret].m_Age<<"";
cout<<"电话:"<<abs->personArray[ret].m_Phone<<"";
cout<<"住址:"<<abs->personArray[ret].m_Addr<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
voidmodifyPerson(Addressbooks*abs)
{
cout<<"请输入您要修改的联系人"<<endl;
stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!=-1)
{
cout<<"请输入名字:"<<endl;
stringname;
cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
cout<<"请输入性别:"<<endl;
cout<<"1=>男"<<endl;
cout<<"2=>女"<<endl;
intsex=0;
while(true)
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入"<<endl;
}
cout<<"请输入年龄:"<<endl;
intage=0;
cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
cout<<"请输入电话号码:"<<endl;
stringphone;
cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
cout<<"请输入家庭住址"<<endl;
stringaddress;
cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;
cout<<"修改成功"<<endl;
}
else
{
cout<<"查无此人"<<endl;
}
system("pause");
system("cls");
}
voidcleanPerson(Addressbooks*abs)
{
abs->m_Size=0;
cout<<"通讯录已清空"<<endl;
system("pause");
system("cls");
}
voidshowMenu()
{
inti,j;
cout<<"**********通讯录**********"<<endl;
cout<<"*******1.添加联系人*******"<<endl;
cout<<"*******2.显示联系人*******"<<endl;
cout<<"*******3.删除联系人*******"<<endl;
cout<<"*******4.查找联系人*******"<<endl;
cout<<"*******5.修改联系人*******"<<endl;
cout<<"*******6.清空通讯录*******"<<endl;
cout<<"*******0.退出通讯录*******"<<endl;
cout<<"**************************"<<endl;
cout<<"请输入您的选择"<<endl;
}
intmain()
{
Addressbooksabs;
abs.m_Size=0;
intselect=0;
if(MessageBox(NULL,"欢迎进入通讯录(取消会退出,确定可继续使用),(不想要这段话可以到211行删除)","通讯录",MB_OKCANCEL)==1)
{
cout<<"登陆成功"<<endl;
}
else
{
cout<<"你没按确定,请重进"<<endl;
return0;
}
while(true)
{
showMenu();
cin>>select;
switch(select)
{
case1:
addPerson(&abs);
break;
case2:
showPerson(&abs);
break;
case3:
deletePerson(&abs);
system("pause");
system("cls");
break;
case4:
findPerson(&abs);
break;
case5:
modifyPerson(&abs);
break;
case6:
cleanPerson(&abs);
break;
case0:
{
cout<<"欢迎您下一次使用"<<endl;
return0;
}
break;
default:
{
cout<<"输入有误,请重新输入"<<endl;
system("pause");
system("cls");
}
}
}
system("pause");
return0;
}