通讯录程序设计.docx

上传人:b****1 文档编号:533687 上传时间:2022-10-10 格式:DOCX 页数:31 大小:81.74KB
下载 相关 举报
通讯录程序设计.docx_第1页
第1页 / 共31页
通讯录程序设计.docx_第2页
第2页 / 共31页
通讯录程序设计.docx_第3页
第3页 / 共31页
通讯录程序设计.docx_第4页
第4页 / 共31页
通讯录程序设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

通讯录程序设计.docx

《通讯录程序设计.docx》由会员分享,可在线阅读,更多相关《通讯录程序设计.docx(31页珍藏版)》请在冰豆网上搜索。

通讯录程序设计.docx

通讯录程序设计

 

学生通讯录系统

 

学校:

中北大学

姓名:

张泽新

学号:

1314010132

班级:

A02

学院:

软件学院

指导教师:

尹四清

题目:

学生通讯录

实训目的:

掌握 C 语言的基本语法规则,以及深入理解函数

的调用,指针,结构体和链表的相关知识点。

好项目的具体分析。

实训内容:

完成对学生通讯录程序调试以及运行

实训内容:

设计一个实用的小型通讯录程序,具有添加,

查询和删除功能。

由姓名,电话号码 1,电话

号码 2,QQ 号组成,姓名可以由字符和数字混

合编码。

电话号码可由字符和数字组成。

实现

功能:

实训要求:

(1)系统应显示这样的菜单,请选择系统功能项:

a 信息录入功能

b 信息浏览功能

c 信息查询功能((按姓名查询)

d 信息修改功能

e 系统退出功能

(2)执行一个具体的功能之后,程序将重新显

示菜单。

(3)将通讯录基本信息保存到文件中。

*总体设计模块和程序规划结构图

如图 1.0,其中包含各个函数的调用

 

程序详细结构图以及涉及到的核心代码:

 

录入信息结构图 1.1

开始

 

YN

是否继续输入学生

信息

 

调用输入函数

调用菜单函数

 

结束

 

void input_record1()//输入函数总,包含了创建学生还有指针移

{

//void print_menu_main();//输入菜单

char continue_input = 'N';//判断是否继续输入

stu *pLastStu = NULL;//最后学生的指针

stu *pNewStu = (stu *)malloc(sizeof(stu));//创建学生节点返回

其地址,这是链表

pNewStu->next = NULL;//节点的指针指向空

create_stu_by_input(pNewStu);//创建一个学生

if(head == NULL)

{

head = pNewStu;

} else{

pLastStu = get_last_student(head);//移动指针

pLastStu->next = pNewStu;// 连接节点

}

printf("继续输入学生成绩?

(Y 继续, N 返回菜单)");

getchar();

continue_input = getchar();

if (continue_input == 'n' || continue_input == 'N'){

print_menu_main();

}

else{

input_record1();

}

}

输出函数结构图以及核心代码

 

输出表头结构

 

依次打印表中的元素

 

输出表尾结构

 

返回菜单函数

 

结束

 

void show_record1(){//输出函数总:

包含了三部分表格头,表格

尾巴,含有学生信息

void print_menu_main();//

stu *p = head;

print_table_head();

while(p !

= NULL) {

print_table_row(p);

p = p->next;

}

print_table_buttom();

printf("按任意键返回菜单...\n");

getch();

print_menu_main();

}

 

保存文件结构图以及核心代码

开始

 

确定文件名以及文件是

用来写的

 

 

y

While 循环,是否头

指针为空?

n

 

结束循环关闭流

把学生信息写进文件

 

结束

 

void save_to_file1(){//保存文件总

void print_menu_main();//所调用的函数的声明

void save_to_file();

FILE *fp;

char file[100];

stu *p= head;

 

printf("请输入文件名:

");

scanf("%s", file);

save_to_file();

fp=fopen(file, "w");

while(p !

= NULL){

fprintf(fp, "%d %s %s %s %s %s\n",

p->xuhao, p->num, p->name, p->sex, p->QQ,

p->phone);

p = p->next;

}

fclose(fp);

printf("保存成功!

\n 按任意键返回菜单..\n");

getchar();

 

getchar();

print_menu_main();

}

加载信息结构图以及核心代码

开始

 

把链表释放掉,使链

表为空

 

输入文件名字,格式

设置为读取

 

是否遇到输入文件结

束的标志?

 

yn

 

结束循环

从文件中读取信息然后

连接成单链表

 

结束

 

void load_from_file1(){//重新加载函数总

void print_menu_main();

void clear_record(stu *p);//所调用的函数声明

FILE *fp;

char file[100];

clear_record(head); /*释放整个链表*/

stu *p= head, *q;

printf("请输入文件名:

");

scanf("%s", file);

fp=fopen(file, "r");

stu *pLastStu = NULL;

while(!

feof(fp)){//如果未遇到输入文件的结束标志

stu *pNewStu = (stu *)malloc(sizeof(stu));

pNewStu->next = NULL;

 

fscanf(fp, "%d %s %s %s %s %s",

&(pNewStu->xuhao),pNewStu->num,

pNewStu->name, pNewStu->sex,

pNewStu->QQ, pNewStu->phone);

 

if(head == NULL){//指针移动

head = pNewStu;

}

else{

pLastStu = get_last_student(head);

pLastStu->next = pNewStu;//将链表连接起来

}

}

//释放加载后的空间

q = head;

while(q->next->next !

= NULL){

q = q->next;

}

free(q->next);

q->next = NULL;

fclose(fp);

printf("装载成功!

\n 按任意键返回菜单..\n");

getchar();

getchar();

print_menu_main();

}

 

按名字查询信息核心代码以及结构图

开始

 

请输入要查询的名字初始

化名字

 

Yn

是否与输入的名字

相等

 

得到学生信息的指针移动指针

 

输出要查询的学生是

信息

 

结束

 

void inquire_name1()

{

void print_menu_main();

stu *p = head;

char name[20];

printf("\n 请输入你要查询的名字:

");

scanf("%s",&name);

while(strcmp(p->name,name)!

=0)

{

p=p->next;

}

if(p==NULL)

{

printf("\n 你所输入的学生暂时不存在");

printf("按任意键返回菜单...\n");

getch();

print_menu_main();

}

system("cls");

printf("\n 该学生的有关信息\n");

printf("+----------+----------+----------+----------+-----------+---------

---+\n");

printf("|序号|学号|姓名|性别

|QQ|电话|\n");

printf("+----------+----------+----------+----------+-----------+---------

---+\n");

printf("|%10d|%10s|%10s|%10s|%10s|%11s|\n",

p->xuhao,p->num,p->name,p->sex,p->QQ,p->phone);

printf("+----------+----------+----------+----------+-----------+---------

---+\n");

printf("按任意键返回菜单...\n");

getch();

print_menu_main();

}

 

信息修改核心代码以及流程图

 

开始

 

输入要修改学生的名字

 

y

是否找到要修改的

学生

n

 

得到指针,修改信息

移动指针

 

结束

 

void revise_message()

{

printf("输入要修改的学生的姓名:

\n");

scanf("%s",name);

while(strcmp(p->name,name)!

=0)

{

p=p->next;//寻找要修改的学生

}

if(p==NULL)

{

printf("\n 你所输入的学生暂时不存在");

printf("按任意键返回菜单...\n");

getch();

print_menu_main();

}else{

 

printf("\n您要修改那一项?

\n");

printf("\n1 序号\n");

printf("\n2 学号\n");

printf("\n3 姓名\n");

printf("\n4 性别\n");

printf("\n5QQ\n");

printf("\n6 电话\n");

scanf("%d",&choice);

switch(choice)

{

case 1:

printf("\n请输入修改后的序号\n");

scanf("%s",&p->xuhao);

break;

case 2:

printf("\n请输入修改后的学号\n");

scanf("%s",p->num);

break;

case 3:

printf("\n请输入修改后的姓名\n");

scanf("%s",p->name);

break;

case 4:

printf("\n请输入修改后的性别\n");

scanf("%s",p->sex);

break;

case 5:

printf("\n请输入修改后的 QQ\n");

scanf("%s",p->QQ);

break;

case 6:

printf("\n请输入修改后的电话\n");

scanf("%s",p->phone);

break;

}

}

system("cls");

printf("修改信息成功\n");

printf("按任意键返回菜单...\n");

getch();

print_menu_main();

}

 

程序运行截图

 

1 输入学生的成绩截图

 

2 显示学生的信息截图

 

3 保存文件截图

 

4 读取

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1