九,电话簿管理系统 存储的数据包括:姓名、班级、电话号码和E-mail地址等。程序要求具有如下功能:

作者&投稿:夔灵 (若有异议请与网页底部的电邮联系)
设计一个电话簿管理程序 存储的数据包括:人名、工作单位、电话号码和E-mail地址,要求用结构体存储。~

你好! 这是一个学生通讯录系统,只是字段名字不太一样,修改后可以使用

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

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※
");
printf("※1、增加联系人 2、删除联系人 ※
");
printf("※3、修改联系人 4、清空通讯录 ※
");
printf("※5、查找联系人 6、按组显示 ※
");
printf("※7、显示全部联系人 8、退出 ※
");
printf("※※※※※※※※※※※※※※※※※※※※※※※
");
printf("请输入编号(1-8):
");
scanf("%d",&flag);
if(flag8)
{
printf("输入错误请重新输入!
");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!
");
else
printf("增加联系人失败!
");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!
");
else
printf("联系人删除失败!
");
break;
case 3:
if(update(Q))
printf("修改联系人成功!
");
else
printf("修改联系人失败!
");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!
");
else
printf("通讯录清空失败!
");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※
");
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("请输入要删除的联系人的姓名:
");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!
");
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("无此联系人!
");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!
");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:
");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s
",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s
",p->name,p->tel,p->group);
return true;
}
else
{
printf("查无此人!
");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!
");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:
");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 号码:%s
",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 号码:%s
",p->name,p->tel);
return true;
}
else
{
printf("无此分组!
");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:
");
scanf("%s",p->name);
printf("请输入联系人号码:
");
scanf("%s",&p->tel);
printf("请输入联系人分组:
");
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("手机中无联系人!
");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:
");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名:
");
scanf("%s",p->name);
printf("请输入新联系人号码:
");
scanf("%s",&p->tel);
printf("请输入新联系人分组:
");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名:
");
scanf("%s",p->name);
printf("请输入新联系人号码:
");
scanf("%s",&p->tel);
printf("请输入新联系人分组:
");
scanf("%s",p->group);
return true;
}
else
{
printf("查无此人!
");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人!
");
else
{
printf(" 姓名 号码 分组
");
while(p!=NULL){
printf("%15s %15s %15s
",p->name,p->tel,p->group);
p=p->next;
}
}
}

#我曾经份实验报告想要前三功能都需改提示信息行
#include <stdio.h>
#define NUM 50
typedef struct _stu //定义结构体类型
{
char no[11]; //号
char name[10]; //姓名
char birthday[11]; //期
char sex[3]; //性别
char nation[10]; //民族
char department[20]; //院系
char major[20]; //专业
char province[20]; //省份
int score; //卷面绩
int add; //加
int total; //总=卷面绩+加
}STU;

int menu();
int enter(STU s[]);
void print(STU s[], int n);
void search(STU s[], int n);
int insert(STU s[], int n);
int del(STU s[], int n);
void save(STU s[], int n);
int load(STU s[]);
void sort(STU s[], int n);
void modify(STU st[], int n);

void printone(STU s);
void back();
void reinput();
void enterone(STU *s);
void copystu(const STU *a, STU *b);

int main(){
STU stu[NUM];
int num=0;
while(1){
switch(menu()){
case 1: num += enter(stu); break;
case 2: search(stu,num); break;
case 3: num += insert(stu,num); break;
case 4: num -= del(stu, num); break;
case 5: save(stu, num); break;
case 6: num=load(stu); break;
case 7: sort(stu, num); break;
case 8: modify(stu, num); break;
case 9: print(stu, num); break;
case 10: return 0;
default: printf(" >>> Unknown Command!!!\n");
}
}
return 0;
}

int menu(){
int in = -1;
printf("\n\n*****************************************************************\n\n"
" 档案库\n\n"
"菜单:\n\n"
" 1.输入记录 2.查找记录 3.插入记录 4.删除记录\n\n"
" 5.保存数据 6.加载数据 7.排序记录 8.修改记录\n\n"
" 9.打印数据 10.退程序\n\n"
"*****************************************************************\n"
"Please input command: ");
scanf("%2d",&in);
while(getchar()!='\n');
return in;
}

int enter(STU s[]){
int n, f, ok=0, i;
printf("输入要添加记录数目: ");
do{
f=scanf("%2d", &n);
if(f==0 || n>=NUM){
if(n>=NUM) printf("能存储%d条记录",NUM);
reinput();
}else ok=1;
}while(!ok);
for(i=0; i<n; i++){
printf("始输入第%d位信息\n\n",i+1);
enterone(s+i);
printf("第%d位信息输入完毕\n\n");
}
printf("全部输入完毕\n\n");
return n;
}

void print(STU s[], int n){
int i;
printf("\n所档案\n");
for(i=0; i<n; i++){
printf("\n序号 %d :\n",i+1);
printone(s[i]);
printf(">>> 按Enter键显示\n");
getchar();
}
printf("已打印所条目\n");
back();
}
void search(STU s[],int n){
char name[10];
int i,j=0;
printf("输入要查找姓名(目前仅提供姓名检索)\n ");
while(scanf("%9s",name)==0) reinput();
while(getchar()!='\n');
for(i=0;i<n;i++){
if(!strcmp(s[i].name, name)){
printone(s[i]);
j++;
}
}
if(!j) printf("未找相关记录\n");
back();
}
int insert(STU s[], int n){
STU in,temp;
int i,j;
char no[11];
if(n>=NUM){
printf("容量足插入新记录\n");
back();
return 0;
}
enterone(&in);
printf("输入完毕\n现输入某记录号新记录插指定记录前:\n");
while(scanf("%10s", no)==0) reinput();
for(i=0;i<n;i++){
if(!strcmp(s[i].no, no)){
for(j=n-1;j>=i;j--){
copystu(s+j,s+j+1);
}
copystu(&in,s+i);
printf("新记录已插入指定位置\n");
back();
return 1;
}
}
printf("没找与指定号匹配记录已自新记录添加末尾\n");
copystu(&in,s+n);
back();
return 1;
}
int del(STU s[], int n){
char no[11];
int i,j;
printf("输入要删除记录号:\n");
while(scanf("%10s",&no)==0) reinput();
for(i=0;i<n;i++){
if(!strcmp(s[i].no, no)){
for(j=i;j<n;j++){
copystu(s+j+1,s+j);
}
printf("记录已删除\n");
back();
return 1;
}
}
printf("没找指定记录\n");
back();
return 0;
}
void save(STU s[], int n){
char nm[50];
FILE* f;
int i;
printf("输入文件路径名称: \n");
while(scanf("%49s",nm)==0) reinput();
if((f=fopen(nm,"a"))==NULL){
if((f=fopen(nm,"w"))==NULL){
printf("文件打或创建失败");
back();
return;
}
}
fprintf(f,"%d\n",n);
for(i=0; i<n; i++){
fprintf(f,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n",
s[i].no, s[i].name, s[i].birthday, s[i].sex, s[i].nation,
s[i].department,s[i].major,s[i].province,s[i].score,s[i].add,s[i].total);
}
fclose(f);
printf("文件已保存: %s\n",nm);
}
int load(STU s[]){
char nm[50];
FILE* f;
int i, n=0;
printf("输入文件路径名称: \n");
while(scanf("%49s",nm)==0) reinput();
if((f=fopen(nm,"r"))==NULL){
printf("文件打失败");
back();
return 0;
}
fscanf(f,"%d",&n);
if(n>NUM) n=NUM;
for(i=0; i<n; i++){
fscanf(f,"%s %s %s %s %s %s %s %s %d %d %d",
&s[i].no, &s[i].name, &s[i].birthday, &s[i].sex, &s[i].nation,
&s[i].department,&s[i].major,&s[i].province,&s[i].score,&s[i].add,&s[i].total);
}
fclose(f);
printf("记录加载完毕\n");
back();
return n;
}
void sort(STU s[], int n){
STU temp;
int i, j;
for(i=0; i<n-1; i++)
for(j=0;j<n-1-i;j++)
if(s[j].total<s[j+1].total){
copystu(s+j+1,&temp);
copystu(s+j,s+j+1);
copystu(&temp,s+j);
}
printf("已按总高低进行排序\n");
back();
}
void modify(STU st[], int n){
STU *s=NULL;
char no[11];
int i,j, c;
char item[10][10]={"号","姓名","期","性别","民族","院系",
"专业","省份","卷面绩","加"};
printf("输入要修改记录号:\n");
while(scanf("%10s",&no)==0) reinput();
while(getchar()!='\n');
for(i=0;i<n;i++){
if(!strcmp(st[i].no, no)){
s=st+i;
for(j=0;j<10;j++){
printf("修改 %s ?(确定输入’y‘)\n",item[j]);
if((c=getchar())=='y' || c=='Y')
switch(j){
case 0:
while(scanf("%10s",s->no)==0) reinput(); break;
case 1:
while(scanf("%9s",s->name)==0) reinput(); break;
case 2:
while(scanf("%10s",s->birthday)==0) reinput(); break;
case 3:
while(scanf("%2s",s->sex)==0) reinput(); break;
case 4:
while(scanf("%9s",s->nation)==0) reinput(); break;
case 5:
while(scanf("%19s",s->department)==0) reinput(); break;
case 6:
while(scanf("%19s",s->major)==0) reinput(); break;
case 7:
while(scanf("%19s",s->province)==0) reinput(); break;
case 8:
while(scanf("%d",&(s->score))==0 || s->score<0) reinput(); break;
case 9:
while(scanf("%d",&(s->add))==0 ) reinput(); break;
}
while(getchar()!='\n');
}
s->total=s->score+s->add;
printf("修改完\n");
back();
return;
}
}
printf("没找指定记录\n");
back();
}

void printone(STU s){
printf(" 号: %s\n"
" 姓名: %s\n"
" 期: %s\n"
" 性别: %s\n"
" 民族: %s\n"
" 院系: %s\n"
" 专业: %s\n"
" 省份: %s\n"
" 卷面绩: %d\n"
" 加: %d\n"
" 总: %d\n",
s.no, s.name,s.birthday,s.sex,s.nation,
s.department,s.major,s.province,s.score,s.add,s.total);
}
void back(){
printf("\n按Enter键返主菜单\n");
getchar();
}
void reinput(){
printf("输入合重新输入:\n ");
while(getchar()!='\n');
}
void enterone(STU *s){
printf("号:\n ");
while(scanf("%10s",s->no)==0) reinput();
while(getchar()!='\n');
printf("姓名:\n ");
while(scanf("%9s",s->name)==0) reinput();
while(getchar()!='\n');
printf("期(.月.):\n ");
while(scanf("%10s",s->birthday)==0) reinput();
while(getchar()!='\n');
printf("性别:\n ");
while(scanf("%2s",s->sex)==0) reinput();
while(getchar()!='\n');
printf("民族:\n ");
while(scanf("%9s",s->nation)==0) reinput();
while(getchar()!='\n');
printf("院系:\n ");
while(scanf("%19s",s->department)==0) reinput();
while(getchar()!='\n');
printf("专业:\n ");
while(scanf("%19s",s->major)==0) reinput();
while(getchar()!='\n');
printf("省份:\n ");
while(scanf("%19s",s->province)==0) reinput();
while(getchar()!='\n');
printf("卷面绩:\n ");
while(scanf("%d",&(s->score))==0 || s->score<0) reinput();
while(getchar()!='\n');
printf("加:\n ");
while(scanf("%d",&(s->add))==0 ) reinput();
while(getchar()!='\n');
s->total=s->score+s->add;
}
void copystu(const STU *a, STU *b){
strcpy(b->no, a->no);
strcpy(b->name, a->name);
strcpy(b->birthday, a->birthday);
strcpy(b->sex, a->sex);
strcpy(b->nation, a->nation);
strcpy(b->department, a->department);
strcpy(b->major, a->major);
strcpy(b->province, a->province);
b->score=a->score;
b->add=a->add;
b->total=a->total;
}


峄城区18914432437: 用c语言或c++做一个通讯录管理系统 -
姚该合尔: #include<iostream.h>#include<iomanip.h>#include<string.h> class pbook {int cellphone,phone; char name[20],first,sex[10],workplace[30]; char date[15]; public: void addin(); char* gname(){return name;} char getf(){ return first;} void print() { cout<<...

峄城区18914432437: c语言课程设计报告模板 -
姚该合尔: 原发布者:901101cdC语言课程设计论文学生姓名:陈丹学生学号:20091020101所在班级:信息与计算科学一班任课教师:马老师通讯录管理系统【设计目的】设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能....

峄城区18914432437: 电话信息存储包括什么内容 -
姚该合尔: 1、短信2、电话簿3、通话记录4、各种上网密码账号

峄城区18914432437: 帮小弟做个C课程设计!先谢了!
姚该合尔: 有的地方你在稍微改动一下就好了是在VC++6.0环境下运行的啊 #include"stdio.h" #include"stdlib.h" #include"string.h" intshoudsave=0;// structstudent { charnum[3];//序号 charname[20];//姓名 charsex[4];//性别 chartel[13];//电话 charno...

峄城区18914432437: c++课程设计(电话簿管理)
姚该合尔: 1.建立一个文本文件,行的序号,行号,姓名,电话,地址,类型 在文本文件的一行用逗号隔开. 2. 建立一个页面,新建添加、查询、删除、显示等功能的用户控件. 3.程序我就不多说了.

峄城区18914432437: 题目1: 学生通讯录管理系统 设计内容: -
姚该合尔: 题目1: 学生通讯录管理系统 设计内容:建立某班学生的通讯录,要求用链表存储. 具体功能包括:很好写,可以给你写一下框架

峄城区18914432437: 高分求助高手~~!利用win tc 191编程,c语言的,通讯录管理系统 -
姚该合尔: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h> struct contacks { char name[10]; char workplace[20]; char tele[20]; char email[20]; }con[50]; int k=0; void enter(); void display(); void look(); void change(); void del(); void save();...

峄城区18914432437: 求c语言电话簿管理系统,VisualC++6.0,重要的是电话记录要以文件形式保存,最好写好注释.
姚该合尔: 可能是文档内容较多和有大量的图片、图表对象,可以把图表剪切,然后粘贴为图片,把所有图片压缩一下,然后另存为新的文档.选中图片word左上区域有压缩图片,可选为自动压缩.

峄城区18914432437: 设计通讯录管理系统 可以添加,删除,修改信息和查询的功能.并保存在文件中,能按表格方式输出. -
姚该合尔: #include"stdio.h" #include"stdlib.h" #include"string.h" struct student { int no; /*学号*/ char name[20]; /*姓名*/ char acdamic[20]; /*院系*/ char major[20]; /*专业*/ char province[20]; /*籍贯*/ char address[40]; /*家庭地址*/ long phone;...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网