C语言程序设计报告Word格式文档下载.docx
- 文档编号:16905827
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:14
- 大小:55.91KB
C语言程序设计报告Word格式文档下载.docx
《C语言程序设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
//电话号码
charadress[40];
//地址
charE_mail[30];
//邮箱
intQQ[12];
//增设的QQ一栏
structstudent*next;
//用于存放下一级指针
}first;
first为第一个节点,继而在其后动态的开创若干节点。
以下是用于链表处理的各个函数:
structstudent*creat(structstudent*p)//输入函数
voidprintall(structstudent*head)//显示所有记录
structstudent*delet(structstudent*head)//删除函数
structstudent*insert(structstudent*head)//插入函数
structstudent*searchbynum(structstudent*head)//按学号查找
structstudent*searchbyname(structstudent*head)//按姓名查找
structstudent*search(structstudent*head)//查找函数
menu_select()//选择函数
以下是各个函数的详细说明:
Creat()函数用于创建链表,其中以n记录节点的个数,并在创建时实现自加,以便于后面函数的处理,其循环输入的实现,依靠库函数malloc()和后面的while循环。
Printall函数用于显示当前的的所有记录,依靠头指针找到链表首地址,有while循环实现所有记录的输出。
Delet()函数用于删除某个记录,删除可以按姓名或学号这两种方式进行的,但本程序中没有这个功能即只可以按学号进行删除(因为学号唯一)。
Insert()函数用于插入,同样以头指针找到链表的首地址,并将要插入的学号依次与各个节点中得num比较,然后按顺序将一个节点插入。
Search()函数用于查找,查找函数提供了两种方式,即按姓名查找和按学号查找。
在search()函数中可以按提示调用searchbyname()和searchbynum()。
Menu_select()函数用于提供函数选项,旨在简化主函数。
流程图
2
1
主函数
Menu_select()
Printall()
Search()
Delet()
Insert()
Searchbyname()
Searchbynum()
Creat()
4
3
此即为该程序的主流程图。
源程序
以下是详细的源程序及部分注释:
#include<
stdio.h>
string.h>
malloc.h>
conio.h>
stdlib.h>
#defineNULL0
#defineLENsizeof(structstudent)
#defineSHU"
%d\n%s\n%5d\n%ld\n%s\n%s\n%s"
intn;
structstudent*creat(structstudent*p)//创建链表的函数,即输入函数
structstudent*head;
structstudent*p1,*p2;
n=0;
//先给n赋值0
p1=p2=(structstudent*)malloc(LEN);
//强制类型转换
printf("
\t\t\t****************请输入用户信息****************\n"
);
\t\t\t输入学号:
\n"
scanf("
%ld"
&
p1->
num);
\t\t\t输入姓名:
%s"
name);
\t\t\t输入年龄:
%d"
age);
\t\t\t输入电话:
telephone);
\t\t\t输入地址\n"
adress);
\t\t\t输入E-mail:
E_mail);
\t\t\t输入QQ\n"
QQ);
//40
head=NULL;
while(p1->
num!
=0)
{
n=n+1;
//实现n的自加,记录节点的个数
if(n==1)
head=p1;
else
p2->
next=p1;
p2=p1;
p1=(structstudent*)malloc(LEN);
printf("
scanf("
p1->
}
p2->
next=NULL;
return0;
}
structstudent*p;
\n全部的记录如下\n:
"
p=head;
do
printf(SHU,p->
num,p->
name,p->
age,p->
telephone,p->
adress,p->
E_mail,p->
p=p->
next;
}while(p!
=NULL);
}//80
structstudent*delet(structstudent*head)//删除函数
请输入要删除的号码:
if(head==NULL)
{
列表为空!
n"
returnhead;
p1=head;
while(num!
=p1->
num&
&
next!
=NULL)
p1->
if(num==p1->
num)
if(p1==head)//要删除的节点为首节点
head=p1->
next=p1->
delet:
%d\n"
num);
n=n-1;
//节点减一
else
%d未找到该节点!
structstudent*insert(structstudent*head)//插入函数
structstudent*stud;
structstudent*p0,*p1,*p2;
p0=stud;
//p0指向的是要插入的节点
if(head==0)
head=p0;
p0->
//120
while((p0->
num>
num)&
(p1->
=NULL))
{
p2=p1;
p1=p1->
}
if(p0->
num<
if(head==p1)
head=p0;
//插入到原来第一个节点之前
else
p2->
next=p0;
p0->
//插入到p2所指的节点之后
n=n+1;
returnhead;
structstudent*searchbynum(structstudent*head)//按学号查找
longnumb;
numb);
//147
if(numb!
=p->
structstudent*searchbyname(structstudent*head)//按姓名查找
chara[100];
请输入要查找的姓名:
a);
if(strcmp(a,p->
name)!
structstudent*search(structstudent*head)
charchoic;
\t\t\t1-按电话号码查找2-按姓名查找"
\t\t\t请选择:
choic=getch();
switch(choic)
case'
1'
:
searchbynum(&
first);
break;
2'
searchbyname(&
intmenu_select()
chars[80];
inta;
//定义整形变量
system("
cls"
\t\t***********欢迎进入通讯管理界面********\n\n"
\t\t\t0.输入记录\n"
\t\t\t1.显示记录\n"
\t\t\t2.查找\n"
\t\t\t3.插入记录\n"
\t\t\t4.删除记录\n"
\t\t\t5.Quit\n"
\t\t***********************************************\n\n"
do{
printf("
Enteryouchoice(0~5):
s);
a=atoi(s);
while(a<
0||a>
5);
returna;
main()
\t\t************************************************\n"
\t\t********welcometoTONGXUNLU*******************\n"
\t\t###########codeby陈国警###################\n"
\t\t*************************************************\n"
按任意键进入主菜单\n"
getch();
intselectnum;
//选择函数,提示选择各种链表处理函数。
while
(1)
selectnum=menu_select();
switch(selectnum)
case0:
{
creat(&
break;
}
case1:
printall(&
break;
case2:
search(&
case3:
insert(&
case4:
delet(&
case5:
printf("
BYEBYE!
system("
pause"
//系统暂停
getchar();
exit(0);
getchar();
以下是部分运行结果:
初始化的界面
选择界面:
创建链表中的输入界面:
查找中的提示界面:
限于篇幅,运行结果就只列举这么多。
上机总结
这是自从学习C语言以来我编写过的最大的一个程序,编写的时候遇到了前所未有的困难。
因为这个程序所涉及到的知识,全部是要靠自学掌握的。
期间我问过很多人,都说这个没有可能做出来,我也一度想放弃,而且在假期也没有时间没有条件来编写这个程序。
后来还是勉强做了,这也是这个程序中有很多不足之处的原因。
比如这个程序未能做到将文件保存到磁盘中,这是最明显的一个缺点。
然后其中还有一些可以简化的地方,也有一些可以让界面更加友好的地方(如上面提到的删除可以按姓名和学号两种不同的方式)。
总之可以改进的地方很多。
但这个程序可以说是自己一点一点设计而来,还是能让人感到一点成就感的。
另外一点就是以后虽然不再学习C语言,但自己在下面也应该勤于练习,不能把这门技能给丢了,我们应该为我们的以后着想。
感谢下载!
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告