编程实习报告.docx

上传人:b****6 文档编号:8879245 上传时间:2023-02-02 格式:DOCX 页数:13 大小:160.77KB
下载 相关 举报
编程实习报告.docx_第1页
第1页 / 共13页
编程实习报告.docx_第2页
第2页 / 共13页
编程实习报告.docx_第3页
第3页 / 共13页
编程实习报告.docx_第4页
第4页 / 共13页
编程实习报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

编程实习报告.docx

《编程实习报告.docx》由会员分享,可在线阅读,更多相关《编程实习报告.docx(13页珍藏版)》请在冰豆网上搜索。

编程实习报告.docx

编程实习报告

 

姓名:

学院:

自动化

学号:

班级:

09062813

指导老师:

朱胜利/王春林

 

一、实习目的:

通过编写程序复习大一所学的C语言知识,学习在MicrosoftVisualC++环境下编辑、编译及运行C程序。

二、实习任务

在熟练掌握C语言基础下设计并实现一个学生信息系统,管理一个班的学生的基本信息。

每个学生的信息名片包含的主要信息有:

姓名、电话、手机、学号、四项信息。

要求该软件实现以下功能:

1.创建学生信息联表

2.添加学生信息

3.删除学生信息

4.查找学生信息

5.显示所有学生信息

6.保存链表数据到文件

7.修改学生信息

三、程序流程图(见附录)

四、原代码:

#include

#include

#include

#defineCH30/*最大字符数,可修改*/

typedefstructstudent

{

charname[CH];/*姓名*/

intage;/*年龄*/

chartel[CH];/*电话*/

intnum;/*学号*/

structstudent*next;

}s_Student;

s_Student*creat_node()

{

s_Student*nodePtr=(s_Student*)malloc(sizeof(s_Student));

if(nodePtr!

=NULL)

{

printf("姓名:

");

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

printf("年龄:

");

scanf("%d",&nodePtr->age);

printf("电话:

");

scanf("%s",nodePtr->tel);

printf("学号:

");

scanf("%d",&nodePtr->num);

}

else

printf("内存溢出!

\n");

returnnodePtr;

}

s_Student*creat_list(s_Student*head)//创建链表函数

{

inti;

s_Student*p1,*p2;

intnum_node;

printf("输入学生人数及资料\n");

printf("人数:

");

scanf("%d",&num_node);

if(num_node<=0)

returnhead;

printf("第1个学生\n");

p1=p2=creat_node();//这里创建了一个节点

if(p1==NULL)

returnhead;

head=p1;

for(i=1;i

{

if(num_node==1)

{

head->next=NULL;

break;

}

else

{

printf("第%d个学生\n",i+1);

p1=creat_node();

if(p1==NULL)

break;

p2->next=p1;

p2=p1;

}

}

p2->next=NULL;

returnhead;

}

voidprint(s_Student*head)//显示链表信息

{

printf("输出学生信息:

\n");

while(head!

=NULL)

{

printf("姓名:

%s,年龄:

%d,电话:

%s,学号:

%d\n",head->name,head->age,head->tel,head->num);

head=head->next;

}

}

s_Student*find(s_Student*head)//查询学生信息

{

charname[CH];

printf("输入学生姓名:

");

scanf("%s",name);

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

=0&&head->next!

=NULL)

head=head->next;

if(strcmp(name,head->name)==0)

{

printf("姓名:

%s,年龄:

%d,电话:

%s,学号:

%d\n",head->name,head->age,head->tel,head->num);

returnhead;

}

else

{

printf("学生%s不存在链表中\n",name);

returnNULL;

}

}

s_Student*del(s_Student*head)//删除学生信息

{

s_Student*p1,*p2;

p1=head;

charname[CH];

printf("请输入要删除的学生的姓名:

");

scanf("%s",name);

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

=0)&&(p1->next!

=NULL))//字符串比较函数

{

p2=p1;

p1=p1->next;

}

if(strcmp(p1->name,name)==0)

{

if(p1==head)//是头节点

head=p1->next;

else

p2->next=p1->next;

free(p1);

printf("删除成功\n");

}

else

printf("学生%s不存在链表中\n",name);

returnhead;

}

s_Student*insert(s_Student*head)//增加学生信息

{

s_Student*p=creat_node();

if(p==NULL)

{

printf("添加学生失败\n");

returnhead;

}

p->next=head;

head=p;

returnhead;

}

voidmodify(s_Student*head)//修改学生信息

{

structstudent*p1;

intn;

charname[CH];

p1=find(head);

if(p1!

=NULL)

{

printf("1.修改姓名\n");

printf("2.修改年龄\n");

printf("3.修改电话\n");

printf("4.修改学号\n");

printf("请选择菜单编号:

");

scanf("%d",&n);

switch(n)

{

case1:

printf("输入新姓名:

");

scanf("%s",p1->name);break;

case2:

printf("输入新年龄:

");

scanf("%d",&p1->age);break;

case3:

printf("输入新电话:

");

scanf("%s",p1->tel);break;

case4:

printf("输入新学号:

");

scanf("%d",&p1->num);break;

default:

printf("请在1-4之间重新选择\n");

}

}

return;

}

voidsave(s_Student*head)//保存链表数据到文件

{

s_Student*p;

FILE*fp=fopen("wanlin.txt","w");

if(fp==NULL)//fopen函数使变量w与文件mm.txt相连

{

perror("打开文件失败");

return;

}

printf("\n正在保存......\n");

p=head;

while(p!

=NULL)

{

printf("姓名:

%s,年龄:

%d,电话:

%s,学号:

%d\n",p->name,p->age,p->tel,p->num);

if(1!

=fwrite(p,sizeof(s_Student),1,fp))

{

perror("写文件失败");

fclose(fp);

return;

}

p=p->next;

}

fclose(fp);//关闭文件

printf("保存成功!

\n");

}

s_Student*load(s_Student*head)//把链表从文件中读入到新的链表中

{

s_Student*p1,*p2;

FILE*fp=fopen("wanlin.txt","rb");//mm.txt为文件名,rb为只读使用方式

if(fp==NULL)

{

perror("打开失败");

returnNULL;

}

printf("\n------文件读取!

------\n");

p1=(s_Student*)malloc(sizeof(s_Student));

if(p1==NULL)

{

printf("内存溢出!

\n");

returnNULL;

}

head=p1;

while(feof(fp)==0)//feof函数判断文件是否读到末尾!

=0isEOF

{

if(1!

=fread(p1,sizeof(s_Student),1,fp))//fread为读入函数

break;

printf("姓名:

%s,年龄:

%d,电话:

%s,学号:

%d\n",p1->name,p1->age,p1->tel,p1->num);

p1->next=(s_Student*)malloc(sizeof(s_Student));

if(!

p1->next)

{

printf("溢出内存!

\n");

returnhead;

}

p2=p1;

p1=p1->next;

}

p2->next=NULL;

fclose(fp);

printf("----成功读取文件!

----\n");

returnhead;

}

voiddestory(s_Student*head)

{

s_Student*p;

while(head!

=NULL)

{

p=head;

head=p->next;

free(p);

}

}

intmain()

{

intch;

s_Student*head=NULL;

while

(1)

{

printf("\n*********学生信息系统*********\n");

printf("\n系统功能菜单\n");

printf("----------------------------\n");

printf("1.创建学生信息链表\n");

printf("2.显示学生信息\n");

printf("3.删除学生信息\n");

printf("4.增加学生信息\n");

printf("5.保存学生信息\n");

printf("6.查询学生信息\n");

printf("7.修改学生信息\n");

printf("8.加载学生信息\n");

printf("9.退出学生信息系统\n");

printf("\n建议每次退出系统前保存\n第一次使用该系统勿选加载\n");

printf("----------------------------\n");

printf("请选择菜单编号:

");

scanf("%d",&ch);

switch(ch)

{

case1:

head=creat_list(head);break;

case2:

print(head);break;

case3:

head=del(head);break;

case4:

head=insert(head);break;

case5:

save(head);break;

case6:

find(head);break;

case7:

modify(head);break;

case8:

head=load(head);break;

case9:

printf("退出系统\n");destory(head);return0;

default:

printf("请在1-9之间重新选择\n");

}

}

destory(head);

return0;

}

五、程序运行图

主界面

部分运行结果:

 

 

 

六、心得体会:

程序设计是一门实践性很强的课程,对C程序设计者初学者而言,除了学习、熟记C语言的一些语法规则外,更重要的是多读程序,懂动手编程序。

先模仿,在模仿的基础上改进,在改进的基础上提高。

做到善于思考,边学边练,举一反三,学会“小题大做”,一题多解。

学过的知识会应用才能体现出它的价值。

C语言作为广为流行的计算机程序设计语言,对于跟程序有关的专业学生是必须掌握的。

这次实习让我重温了编写一个简单程序的步骤,认识到自己在程序编写还是那么的缺少经验。

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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