C语言实习_c语言实习程序

2020-02-29 实习报告 下载本文

C语言实习由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实习程序”。

C语言程序设计课程设计

姓名:黄方成班级:天目计算机0

4一、课程设计题目:

《公司职工管理系统》

二、程序主要功能:

实现基本的学生的数据管理,如:创建新数据文件、添加数据记录、查找数据记录、删除数据记录、显示所有的数据记录,以及数据的排序等等。(分别使用了shuru()、insert()、found()、delete()、inputs()、list()、putin()、print()、resave()等函数)。其中数据的输入、插入、查找、数据的删除,输入又可通过不同的方式按姓名查找等进行操作。

三、函数实现说明:

主要函数:

1、shuru()

该函数主要用来创建新数据文件,当第一次使用该程序或者原创建的文件的内容无效,需建立一个新的文件的时候,可通过该函数来实现。

该函数实现过程中首先定义了两个变量i,初始化为0,用来存储学生的数量,它们均随着输入记录的增加而增大(每输入一条增加1),用变量i来抽象表示其中的任何一条记录,对该程序来讲即为通讯录中包含的学生人数。之后需使用户输入数据,这就需要设计时先在屏幕上显示有关输入数据性质提示信息(如学生号、姓名、电话、入学分数等等)。输入完一条记录进行保存。从而使数据在文件中得到保存,另外在输入姓名为空时,函数认为添加已经结束,自动关闭函数的输入记录功能,跳出该功能。

2、insert()

该函数可对文件的数据进行插入。在进行添加的时候需要首先打开原来的数据文件,在该函数中调用了load()函数将数据文件打开。再调用shuru()函数文件之后同shuru()中一样的形式输入数据,输入完之后进行保存,对插入的 1

数据进行保存前要先确定插入的地点,insert()函数在设计时将插入点放在了文件末尾,即将添加的数据加到文件的最后。Insert()函数与创建新数据文件的shuru()函数除保存及被功能上的使用时间不同外,其他功能基本相同。

3、found()

该函数调用了find()这个函数来实现不同方式的查找。具体使用什么方式查找需由用户自己选择,于是使用switch语句先设计一个选择过程。当选择按名字查找方式,就启用find()函数查找,过程为先要求用户输入所要查找的数据文件的名字(例如是毕业学校的文件保存名字),然后再将这个名字与以存数据名字逐个进行比较,当找到数据的时候就调用printin()函数将该数据的所有信息打印出来,否则显示“没有找到这个姓名!”以示没有找到。

4、delete()

该函数用来删除不需要的数据记录。实现过程为:首先输入需要删除的记录的名字,将该数据逐一与以存文件中的学号进行比较,在比较过程中定义了若干个指针变量*node,*before,*pt,并初始化为*before=NULL,接着就是对该记录的删除操作,将此记录及其后的每一条记录逐一用它们之后的那一条记录替换,即实现了对数据的删除。并且还调用了函数load(),用来对文件数据的删除。若没有找到需要删除的数据,before的值任为1,则屏幕显示“没有该学生的记录!”。在删除记录后需对操作结果进行保存,最后根据用户的选择来决定是否继续删除,为空时是离开。

5、print()

使用该函数可以显示所有的操作员自己输入的所有的学生数据记录。它只用到了简单的printf(“”)语句,但是它用了含有++i的变量来输出下一个记录,每打开一个记录就自己增加1。当需先打开数据文件时,读取其中的数据记录,然后将这些记录按一定的形式打印在屏幕上,为是打印的效果整齐、美观,则要对其输出的方式、格式进行设计,采用了t的对齐方式。

6、putin()

该函数可对数据文件中数据具体的存放顺序进行操作,主要是用来实现排序功能。设计的此程序对数据的存放顺序只按照姓名的长度进行排列。该功能用循环实现,并且包含了许多的字符函数,包括在头文件#include中。从数

据文件的开头起,将第一条记录的姓名与之后的每一条记录的姓名的字符长度进行比较,若前者大于后者,则交换它们的位置,这一循环完毕后,再类似对第二条、第三条„„直到倒数第二条为止进行比较,即实现了第二次循环。两次循环比较完之后便将数据文件中的数据按照姓名长度的顺序,从短到长排列起来。最后保存操作结果。

7、main()

一个程序主函数不能少。当以上的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。对以上函数的连接,此程序采用了switch语句,格式清晰、容易接受。至此班级通讯录管理的基本功能便基本实现。

8、在其他方面对界面的美观进行了改动,采用了许多符号的编排,和大量的对齐方式。

三、调试分析:

程序调试是指对程序的查错和排错。

为了便于查错、阅读,在设计该程序的时候我采用了结构化程序方法编辑,添加了尽可能多的注释,这为我后来的调试过程带来了很多方便。

为了方便,我先大量的阅读了许多优秀程序员的成功例子,觉得在使用变量时采用大量的指针形式是使功能能大量的进行,并且使程序运行的很快。

所以就写了一份草稿,进行对低级错误的修改,在修改过程中,发现很多都是因为在写完一个语句时,忘了加上分号(;),在用到scanf时,忘了写上取地址(&)符号。过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。

等低级错误。

经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译„„如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:

1、定义变量时;

变量不容易联系起来,经常会写错变量名,但是在错误信息的提示下一般还是很容易找到。但是在写各个函数时,发现一个变量名,只要不是全局变量就可以无数次定义,只要分开在不同的函数中就可以了。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。因此,我都才用node做为一个结构体的指针变量。采用llink为头指针,从而减少这样的变量名过多出现的错误,结果引起的那些错误解决了。

在编写程序时要安静,才不会出现低级错误。

2、语法错误;

语法错误在通过书本参考下能够修改,并且在上机的错误提示中得到修改,但是由于书本是C语言。不是C++的,所以在使用时要注意在主函数和一些定义变量跟声明函数时有些不同,这不是语法的错误,而是作为一个程序员必须要注意到的,要体会两种语言的区别,由于平时看书不仔细、没有经过仔细的思考造成的。如没有注意具体数据使用是有一定的范围限定;

在本次调试过程中我还碰到了一些以前上机过程中从未碰到过的错误。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。因此我使用的是一个一个函数的检查,并通过调试修改。

在调试时,碰到了许多平时没有的错误,如:开辟内存时,忘了加*号,使得检查的时候认为是指针的错误,还有是在类型转换时,发现在类型转换为时要加上teperdef,并且在调试时在学习时的有个强制转换比teperdef更有用,如(strect llist*)llink与teperdef llist struct nodeteperdefnode *llink,以上两句是一样的。

四、心得体会:

编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,发现其实里面还是充满乐趣的,一旦真的专研下去什么事情都可以放下,来认真研究。当这个自己编写的程序在计算机上实现自己想要的功能时,很有成就感,发现了许多原来的错误,使自己的水平上升了一个大台阶。

这个程序的成功对以后要学习的数据结构就更有信心了。

二○○五年六月六日

《C语言实习.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言实习
点击下载文档
相关专题 c语言实习程序 语言 c语言实习程序 语言
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文