c语言实习报告Word下载.docx
《c语言实习报告Word下载.docx》由会员分享,可在线阅读,更多相关《c语言实习报告Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
学院依照课程教学大纲和课程设计大纲提出了本次课程设计的题目及要求。
要求掌握C程序的基本结构和C语言基本的数据结构,熟悉C程序的编辑、编译、调试和运行过程,了解程序设计的一般方法、结构化程序设计的思想,熟悉算法的描述工具—N—S流程图的使用及常用算法,能够熟练地阅读用C语言编写的程序,能够运用结构化程序设计编写C程序。
二、引言
2.1系统开发工具简介
WIN-TC是一个TC2WINDOWS平台开发工具。
该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。
而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。
并提供一组相关辅助工具令你在编程过程中更加游刃有余,如虎添翼。
本软件用于编写C语言程序。
2.2实习目的
进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。
使学生在掌握C语言的基本语法的基础上,能够更好的理解和运用其解决实际问题。
在实践实习操作中让学生对结构化程序设计有更进一步深刻的认识与了解,提高学生的实践操作能力。
2.3、实习基本内容与要求:
用链表实现简单的学籍管理
1、总体功能要求
(1)链表的建立:
每个节点包括:
学号、姓名、性别、语文、数学、英语、总分;
(2)节点的插入:
按学号的顺序插入;
(3)删除链表中的节点:
按学号或者姓名;
(4)链表的输出:
按学号排序、按总分排序。
2、性能的要求:
(1)各个功能分别用函数实现;
(2)节点信息让用户通过键盘输入;
(3)总分通过计算获得;
(4)有简单的操作界面;
(5)尽可能考虑程序的容错性、可操作性。
3、写实习报告以及心得体会
2.4实习时间安排
2011年7月12日在服务器上下载应用程序、实习报告模板,练习书本第11章的例题
2011年7月13日在自己的机器上程序设计
2011年7月14日程序设计
2011年7月15日撰写实习报告及心得体会
2011年7月16日交实习报告
2.5实习地点:
c12楼机房
2.6实习内容
对学生信息(包括姓名、学号、语文、数学、英语、平均分、总分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、退出、保存.将学生的成绩信息进行记录,信息内容包含:
(1)学生的学号
(2)学生的姓名(3)学生的成绩。
假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改、排序和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三、学生成绩管理系统分析
3.1系统概况
本次实习是通过建立一个学生学籍管理系统来更好的认识和掌握C语言中链表这一重要的知识内容.本系统实现的功能如下:
1.创建学生学籍信息,每个学生学籍信息包括:
学号、姓名、语文、数学、英语、平均分、总分;
2.插入信息:
按照学号由小到大的循序插入信息;
3.查找信息:
通过选择按照学号或者姓名来查找到该学生的信息;
4.删除信息:
通过选择按照学号或者按照姓名删除某个学生学籍信息;
5.输出信息:
通过选择按学号(由小到大)或者总分(由小到大)或者平均分(由小到大)来输出信息;
6.保存信息:
对学生学籍系统中的信息以记事本的学生进行保存。
本系统的亮点是在运用模块来组建该学生学籍管理系统,也就是说各个功能以模块的实现,通过主函数来调用模块,实现管理功能,这样程序结构清晰,容易检查到错误所在模块,减少了调试的压力。
其次,是运用结构体来组织数据,数据结构规范,通过指针的操作很容易实现简单的查找、删除、输出等操作。
最后,容错性较好,比如输入成绩输入时按照我们百分制输入,必须输入1-100之间的数字,如果输入的不是1-100中的数据,在系统将显示信息错误信息,要求重新输入。
软件配备:
TurboC2.0,Windows2000/20003/xp等;
硬件配备:
内存:
512MB及以上;
外存:
60GB及以上;
CPU:
奔4及以上;
3.2需求分析
1、用C语言实现系统;
2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.
3、学生信息包括:
其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:
(1)、每一条记录包括一个学生的学号、姓名、3门课成绩
(2)、成绩信息录入功能:
(成绩信息用文件保存,可以一次完成若干条记录的输入。
)
(3)、成绩信息显示浏览功能:
完成全部学生记录的显示。
(4)、查询功能:
完成按姓名查找学生记录,并显示。
(5)、成绩信息的删除:
按学号进行删除某学生的成绩.
(6)、排序功能:
按学生平均成绩进行排序。
(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
3.3总体功能要求
3.3.1总体功能模块
学生成绩管理信息系统的主界面,包括六个内容:
信息输入,信息输出,信息删除,信息的排序,信息的查找和信息的保存。
信息输入包括创建信息和信息添加:
其中创建的学生信息包括学生的学号,姓名,性别以及语文,数学,英语三门课程的成绩。
信息添加的内容也是创建的所有学籍信息。
信息删除是按照学生的学号进行删除。
信息的排序也可以分为三种方法进行:
一是按照学号进行排序,二是根据学生语文、数学、英语三门课程的总分进行排序,三是根据学生语文、数学、英语三门课程的平均分进行排序。
信息的查找时按照学生的学号进行查找。
信息的保存是通过程序与文件的链接进行的,可以直接将学生成绩以记事本的形式保存到指定文件夹中。
总体功能模块图
3.3.2各函数的功能和实现
1、输入初始的学生信息:
输入信息包括学生的姓名、学号以及学生的成绩等相关信息;
可用函数voidinput(STUDENT*data,int*len)来实现此操作。
2、成绩输出模块:
输出学生的信息以及成绩voidoutput(STUDENT*data,intlen):
通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage()
、maverage()
、eaverage()
和comaverage()
来输出成绩的平均分数、最高和最低分数。
3、成绩查询模块:
可用voidfind(STUDENT*data,intlen)
来实现。
找到就输出此学生全部信息。
4、删除模块:
用函数voiddelete_item(STUDENT*data,int*len)来实现
5、排序模块:
用函数voidsort(STUDENT*data,intlen)来实现
6、统计功能能:
用函数voidstat(STUDENT*data,intlen)来实现
7、退出系统:
可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
3.3.3各部分流程图
1.学生信息输入流程图2.学生信息输出流程图
3.删除的流程图
4.插入信息的流程图
5.对信息的排序流程图
3.3.4性能要求
1、功能分别用函数实现;
2、信息让用户通过键盘输入;
3、通过计算获得;
4、简单的操作界面;
5、可能考虑程序的容错
四、详细设计
4.1关键部分的代码、说明及运行结果图
1、全局定义部分
#include<
stdio.h>
#include<
string.h>
ctype.h>
malloc.h>
#defineNULL0/*令NULL为0,表示空地址*/
#defineLENsizeof(structstudent)/*令LEN代表structstudent类型数据的长度,sizeof是“求字节数运算符”*/
structstudent/*定义结构体*/
{
longnum;
/*定义学生学号*/
charname[20];
/*定义姓名*/
charsex[10];
/*定义性别*/
intchinese;
/*语文分数,假设为整数*/
intmath;
/*数学分数*/
intenglish;
/*英语分数*/
intsum;
/*三门总分*/
structstudent*next;
};
intn;
/*n为全局变量,定义为节点个数*/
/*创建链表,带回一个指向链表头的指针*/
structstudent*creat(vonum)
{structstudent*head;
structstudent*p1,*p2;
n=0;
p1=p2=(structstudent*)malloc(LEN);
/*开辟一个新单元*/
printf("
\nInputstudent'
snumber:
(press0toexit)"
);
2、主程序部分
main()/*主函数*/
{structstudent*head,*stu;
longdel_num;
intN;
a:
Thestudentinformationmanagementsystem\n"
\n(LIST)\n"
1.Createanewnamelist\n"
2.Printthenamelist\n"
3.Deletearecordfromthenamelist\n"
4.insertarecord\n"
5.sorttheprogramme\n"
0.exittheprogramme\n"
pleaseenterthenumber:
"
scanf("
%d"
&
N);
switch(N)
{case0:
exit(0);
gotoend;
case1:
inputrecords:
\n"
head=creat();
print(head);
break;
case2:
case3:
\ninputthedeletenumber:
%1d"
del_num);
while(del_num!
=0)
{head=del(head,del_num);
\ninputthedeletednumber:
}break;
case4:
\ninputtheinsertrecord:
stu=(structstudent*)malloc(LEN);
\npleaseinputnumber:
%ld"
stu->
num);
pleaseinputname"
scanf("
%s"
name);
pleasechoosesex(form):
sex);
pleaseinputchinesescore:
chinese);
pleaseinputmathsscore:
maths);
pleaseinputenglishscore:
english);
while(stu->
num!
{head=insert(head,stu);
\ninputtheinsertrecord:
stu=(structstudent*)malloc(LEN);
\npleaseinputnumber:
printf("
pleaseinputname:
case5:
head=sort(head);
}gotoa;
end:
;
}
3、输入信息部分
/*输入数据*/
scanf("
p1->
if(p1->
Inputstudent'
sname:
"
b:
ssex(form):
c:
Inputchinesescore:
if(p1->
chinese>
100||p1->
chinese<
0)/*验证成绩是否在0——100之间*/
{printf("
Pleaseenteranumberbetween0to100!
gotoc;
}
d:
Inputmathscore:
math);
math>
math<
0)
gotod;
e:
Inputenglishscore:
english>
english<
gotoe;
head=NULL;
while(p1->
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p2=p1;
p1=(structstudent*)malloc(LEN);
snumber(press0toexit):
InputChinesescore:
Pleaseenteranumberbetween0to100\n"
/*验证成绩是否在0——100之间*/
p2->
next=NULL;
return(head);
输入界面如下:
4、输出信息部分
/*输出链表*/
voidprint(structstudent*head)
structstudent*p;
\n=============Studentinformation=============\n"
\nthe%drecrodsare:
n);
|NO.|Name|Sex|Chi|math|Eng|sum|\n"
|----------|--------|-----|----|----|----|------|\n"
p=head;
if(p!
=NULL)
do
p->
sum=p->
chinese+p->
math+p->
english;
/*求总分赋给totalscorescore*/
/*输出各项值*/
|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|\n"
p->
num,p->
name,p->
sex,p->
chinese,p->
math,
english,p->
sum);
p=p->
next;
/*将p原来指向的节点中next的值赋给p,使p指向第下一个节点*/
sum=NULL;
/*将总分totalscorescore赋空地址*/
}while(p!
=NULL);
elseprintf("
\nNorecords\n"
===============END====================\n"
);
5、排序部分
structstudent*sort(structstudent*head)/*排序函数*/
{inti=0;
structstudent*p,*q,*t,*h1;
h1=head->
head->
while(h1!
{t=h1;
h1=h1->
q=head;
while(t->
total>
p->
total&
&
p!
{q=p;
p=p->
if(p==q)
{t->
next=p;
head=t;
else
q->
next=t;