计算机科学与应用系课程设计实用的小型通讯录文档格式.docx
- 文档编号:18666683
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:34
- 大小:1,016.78KB
计算机科学与应用系课程设计实用的小型通讯录文档格式.docx
《计算机科学与应用系课程设计实用的小型通讯录文档格式.docx》由会员分享,可在线阅读,更多相关《计算机科学与应用系课程设计实用的小型通讯录文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
(2)要求在执行一个具体的功能之后,能够让程序自动显示出主菜单。
(3)可以将录入的数据保存在.txt文件中。
2.2系统设计框图
系统设计框图如图2-1所示:
图2-1系统设计框图
3.程序运行
(1)、控制台应用程序界面如下所示:
(2)、输入Y,按下回车键:
(3)、输入1,按下回车键,填写小张个人信息:
(4)、输入Y,按下回车键,以此类推,填写小王,小李,小赵个人信息:
(5)、输入N,按下回车键;
输入2,按下回车键,输入小赵,按下回车键:
(6)、按下回车键,输入3,按下回车键:
(7)、输入2,按下回车键;
输入c,按下回车键;
输入5班,按下回车键;
输入Y,按下回车键:
(8)、输入回车键,输入4,按下回车键,依次填写小刘,小杨个人信息:
(9)、输入N,按下回车键;
输入6,按下回车键:
(10)、输入5,按下回车键:
(11)、输入4,按下回车键;
输入Y,按下两次回车键:
(12)、输入6,按下回车键:
(13)、按下回车键;
输入7,按下回车键;
4.附录
附录1源代码
#include<
stdio.h>
stdlib.h>
string.h>
#defineLENsizeof(structlinker)
//结构体
typedefstructlinker
{
charnum[21];
//学号
charname[20];
//姓名
charbanji[21];
//班级
chartel[12];
//电话
charaddr[11];
//地址
structlinker*next;
}link;
voidwelcome()//欢迎界面
printf("
\n"
);
***********************\n"
**\n"
*欢迎使用:
同学录*\n"
请按提示操作:
是否进入(Y/N):
"
}
voidmenu()//菜单界面
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n"
*[1]新建:
*\n"
*[2]查询:
*[3]修改:
*[4]添加:
*[5]删除:
*[6]排序:
*[7]退出:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n"
请输入数字(1-7):
}
link*creat()//创建一个链表
link*head;
link*p1,*p2;
charidentify,absorb;
p1=p2=(link*)malloc(LEN);
head=p1;
学号:
gets(p1->
num);
姓名:
name);
班级:
banji);
电话:
tel);
地址:
addr);
内容已保存,是否继续?
(Y/N):
scanf("
%c"
&
identify);
absorb);
while(identify!
='
y'
&
identify!
Y'
n'
N'
)
{
printf("
请输入(Y/N):
scanf("
}
while(identify=='
||identify=='
p2->
next=p1;
p2=p1;
p1=(link*)malloc(LEN);
gets(p1->
while(identify!
{
printf("
scanf("
}
}
p2->
p2=p1;
next=NULL;
return(head);
link*print(link*head)//输出全部记录
link*p1,*p2,*p3;
p3=head;
p1=head;
p2=head;
intn=0;
while(p2!
=NULL)//将链表中记录按学号顺序排列
p1=p2;
while(p1!
=NULL)
if(strcmp(p2->
name,p1->
name)>
0)
{
strcpy(num,p2->
strcpy(p2->
num,p1->
strcpy(p1->
num,num);
strcpy(name,p2->
name,name);
strcpy(banji,p2->
banji,p1->
banji,banji);
strcpy(tel,p2->
tel,p1->
tel,tel);
strcpy(addr,p2->
addr,p1->
addr,addr);
}
p1=p1->
next;
}
p2=p2->
序号\t学号\t\t姓名\t\t\t班级\t\t\t电话\t\t地址\n"
//p3=head;
do//输出链表中信息
n++;
%d\t%-10s\t%-15s\t\t%-15s\t\t%-15s\t%-15s\n"
n,p3->
num,p3->
name,p3->
banji,p3->
tel,p3->
p3=p3->
}while(p3!
=NULL);
link*insert(link*head)//添加
link*pp1=NULL,*pp2=NULL;
do
{
pp1=head;
pp2=(link*)malloc(LEN);
gets(pp2->
while(pp1->
next!
pp1=pp1->
pp1->
next=pp2;
pp2->
}while(identify!
link*change(link*head)//改变记录中的信息
link*p1,*p3;
p1=p3=head;
print(p3);
intchoose,i,n=0;
char_choose,absorb,identify;
charinput[21];
请输入需修改内容所在行序列号:
%d"
choose);
while(p1!
=NULL)//计算链表中记录数目
p1=p1->
while(choose<
0||choose>
n)
查无此内容,请确认后重新输入:
for(i=1;
i<
choose;
i++)//将指针指向指定位置
a.学号b.姓名c.班级d.电话e.地址\n"
请输入修改内容类型:
_choose);
请输入修改内容:
gets(input);
确认要替换吗?
if(identify=='
{switch(_choose)
{case'
a'
:
strcpy(p1->
num,input);
内容已修改,按任意键返回。
break;
case'
b'
name,input);
printf("
break;
c'
banji,input);
d'
tel,input);
e'
addr,input);
getchar();
voidsearch(link*head)//查找记录,支持模糊查找
charfullname[9];
请输入姓名:
gets(fullname);
link*p1;
char_name[9]="
;
strncpy(_name,p1->
name,strlen(fullname));
//按输入姓名字符数截取每个姓名,和输入姓名比较
if(strcmp(fullname,_name)==0)
n++;
//计算链表中记录的序号
%-5d\t%-10s\t%-15s\t\t%-15s\t\t%-15s\t%-15s\n"
n,p1->
else
共找到%d条信息,按任意键返回。
n);
link*delet(link*head)//删除一条记录
print(head);
link*p1,*p2,*pp;
charabsorb,identify;
inti,choose,n=0;
p1=p2=pp=head;
请选择要删除的内容所在行的序号:
=NULL)//计算链表中的记录数目
确认要删除吗?
(Y/N)"
if(choose==1)
head=p1;
free(pp);
//释放删除结点所占内存
else
for(i=1;
i++)
{
p2=p1;
p1=p1->
p2->
next=p1->
free(p1);
////释放删除结点所占内存
已成功删除,按任意键返回。
getchar();
voidsaves(link*p)//将原文件中内容清空,将链表中的内容存入文件
FILE*fp;
if((fp=fopen("
tongxuelu.txt"
"
w"
))==NULL)
无法打开文件~~~\n"
exit(0);
while(p!
=NULL)
fwrite(p,LEN,1,fp);
p=p->
fclose(fp);
link*SortNum(link*head)//排序
{
link*front,*node,*temp,*p,*end=NULL,message;
if(head==NULL)
没有信息!
returnNULL;
for(node=head;
node->
=NULL;
node=node->
next)
for(front=head,temp=head->
temp!
=end;
temp=temp->
next,front=front->
if(front->
num>
temp->
num)
message=*front;
*front=*temp;
*temp=message;
p=front->
front->
next=temp->
temp->
next=p;
end=front;
returnhead;
voidmain()
charidentify;
link*head,*p,*p1,*p2,*p3;
intchoose;
charabsorb;
inti;
head=NULL;
welcome();
do//确定输入是否为y或Y或n或N
if(identify=='
Thankyouruse\n"
if(identify=='
exit(0);
else
while
(1)
menu();
switch(choose)//新建
case1:
head=creat();
//创建链表,并将链表中的信息输入到文件中
saves(head);
break;
case2:
i=0;
//查找
if((fp=fopen("
a+"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机科学 应用 课程设计 实用 小型 通讯录