C语言实习报告

时间:2019-05-14 19:28:48下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言实习报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言实习报告》。

第一篇:C语言实习报告

C 语 言 课 程 实习报 告

所 在 院 系 :经济管理学院 班 级 学 号 :083081 学 序 号 : 20081003628 姓 名 :胡雅雯 程序 已存档 : 指 导 老 师 :__赵 曼____ 评 分 :____________

二零一零年一月十五日

题目:一担挑游戏

简单计算机模拟棋盘对奕,其中棋盘左上角坐标为(1,1),右下角坐标为(3,3),游戏规则如下:(1)计算机移动时,使用相应函数扫描棋盘矩阵,寻找未占单元,发现空单元后,置为”O”,未发现时,报告平局后退出。

(2)轮到对奕者时,使用相应函数要求对奕者回答想把“X”放在哪里。(3)谁先三点连成一线则报告谁胜出。

(4)计算机与对奕者每下一步棋都会使相应位置变为“O”与“X”,便于在屏幕上显示矩阵。

提示:棋盘位置用二维数组代表,初始位置每一位都置为““空,其分割线可用——或||来分割。

分析: 应有计算机和用户各自选择位置的函数,能通过键盘选择位置。

详细设计: 1 主函数

棋盘的初始化由主函数赋予初值,计算机和用户的每一步都由函数来确定,并由主函数调用。判断赢家时由主函数调用核对函数,并显示最终棋盘格局。

int main(void){ char done;

printf(“This is the game of Tic Tac Toe.”);

printf(“you will be playing against the computer.n”);

done=' ';

init_matrix();do { disp_matrix();

get_player_move();

done=check();/*see if winner*/

if(done!=' ')/*winner!*/

break;

get_computer_move();

done=check();/*see if winner*/ } while(done==' ');

if(done=='X')

printf(“You won!n”);

else printf(“I won!!n”);

disp_matrix();/*show final positions*/

getchar();

return 0;} 2 公共函数

(1)计算机

void get_computer_move(void)/*使计算机走一步*/ { int i,j;

for(i=1;i<4;i++){ for(j=1;j<4;j++)

if(matrix[i][j]==' ')

break;

if(matrix[i][j]==' ')break;} if(i*j==16){ printf(“drawn”);

exit(0);} else

matrix[i][j]='0';}(2)

玩家

void get_player_move(void)/*玩家走一步*/ { int x,y;printf(“Enter X,Y coordinates for your move:”);scanf(“%d%*c%d”,&x,&y);//x--;y--;if(matrix[x][y]!=' '){ printf(“Invalid move, try again.n”);/*所选位置已被计算机占据,则重新选择*/ get_player_move();} else matrix[x][y]='X';/*被选中的位置置为“X“*/ }(3)disp_matrix(void)void disp_matrix(void){ int t;for(t=1;t<4;t++){ printf(“%c |%c |%c ”,matrix[t][1],matrix[t][2],matrix[t][3]);if(t!=3)printf(“n--|--|--n”);} printf(“n”);}(4)init_matrix(void)

void init_matrix(void)/* initialize the matrix.*/ { int i,j;

for(i=1;i<4;i++)

for(j=1;j<4;j++)

matrix[i][j]=' ';}

(5)核对函数

char check(void)/*是否出现赢家*/ { int i;for(i=1;i<4;i++)/*check rows*/

if(matrix[i][1]==matrix[i][2]&&matrix[i][1]==matrix[i][3])

return matrix[i][1];/*横行*/

for(i=1;i<4;i++)/*check columns*/

if(matrix[1][i]==matrix[1][i]&&matrix[1][i]==matrix[3][i])

return matrix[1][i];/*竖行*/

for(i=1;i<4;i++)/*check diagonals*/

if(matrix[1][1]==matrix[2][2]&&matrix[1][1]==matrix[3][3])

return matrix[1][1];/*斜行*/

for(i=1;i<4;i++)

if(matrix[1][3]==matrix[2][2]&&matrix[2][2]==matrix[3][1])

return matrix[1][3];/*斜行*/

return ' ';/*返回值*/

}

运行结果

主菜单函数

人机各走一步后

选择被占位置

计算机赢家

用户赢家

显示最终格局

总结:

通过该实例的学习,我初步掌握了开发一个小型实用系统的基本法,学会了调试较长程序和利用流程图表示算法,进一步掌握和提高了C语言进行程序设计的能力.附录

5、/*一担挑游戏 */ #include “stdio.h” #include “stdlib.h” char matrix[3][3];/*the tic tac toe matrix*/ char check(void);void init_matrix(void);void get_player_move(void);void get_computer_move(void);void disp_matrix(void);int main(void){ char done;printf(“This is the game of Tic Tac Toe.”);printf(“you will be playing against the computer.n”);done=' ';init_matrix();do { disp_matrix();get_player_move();done=check();/*see if winner*/ if(done!=' ')/*winner!*/ break;get_computer_move();done=check();/*see if winner*/ } while(done==' ');if(done=='X')printf(“You won!n”);else printf(“I won!!n”);disp_matrix();/*show final positions*/ getchar();return 0;} /* initialize the matrix.*/ void init_matrix(void){ int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)matrix[i][j]=' ';} /*get a player's move.*/ void get_player_move(void){ int x,y;printf(“Enter X,Y coordinates for your move:”);scanf(“%d%*c%d”,&x,&y);x--;y--;if(matrix[x][y]!=' '){ printf(“Invalid move, try again.n”);get_player_move();} else matrix[x][y]='X';} /*get a move from the computer*/ void get_computer_move(void){ int i,j;for(i=0;i<3;i++){ for(j=0;j<3;j++)if(matrix[i][j]==' ')break;if(matrix[i][j]==' ')break;} if(i*j==9){ printf(“drawn”);exit(0);} else matrix[i][j]='0';} /*display the matrix on the screen*/ void disp_matrix(void){ int t;for(t=0;t<3;t++){ printf(“%c |%c |%c ”,matrix[t][0],matrix[t][1],matrix[t][2]);if(t!=2)printf(“n--|--|--n”);} printf(“n”);} /*see if there is a winner.*/ char check(void){ int i;for(i=0;i<3;i++)/*check rows*/ if(matrix[i][0]==matrix[i][1]&&matrix[i][0]==matrix[i][2])return matrix[i][0];for(i=0;i<3;i++)/*check columns*/ if(matrix[0][i]==matrix[1][i]&&matrix[0][i]==matrix[2][i])return matrix[0][i];for(i=0;i<3;i++)/*check diagonals*/ if(matrix[0][0]==matrix[1][1]&&matrix[0][0]==matrix[2][2])return matrix[0][0];for(i=0;i<3;i++)if(matrix[0][2]==matrix[1][1]&&matrix[1][1]==matrix[2][0])return matrix[0][2];return ' ';}

课程设计心得

通过这次课程设计才真正实践编程明白编程是一件很细致的事情需要不断的深入的仔细研究,尤其是发现程序运行不了的时候,需要找错误是一件很麻烦的事,但是运行出来的时候的喜悦将这一切又全部忘记了,在此次实践当中正是老师和同学的不断帮助才使我不断提高。作为新时代的大学生,我们就是要在不断实践不断研究中不断地提高自己的能力,如今的社会日新月异,知识信息高速发展,而作为这个时代的标志,计算机更是一个飞速更新的东西,也可能c语言几年后就会被淘汰,所以这就要求我们不仅要掌握现有的知识,还要不断和时代的进步发展相结合,不仅要掌握现有的知识更重要的是学会迅速上手每个出现的新事物,从整体的视角把握新时代的脉搏.知识只是把书本和表象摄入底片的照相机,能力才是洞穿事物的本质和内核的透视仪,所以善于抓住一切机会积极实践,努力提高自己的能力,这才是最重要的。

第二篇:语言类实习报告

语言类实习报告3篇

语言类实习报告

篇1

设计报告

一,试验目的:

通过上机实习,娴熟把握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过实际操作,编写程序,发觉问题,最终解决问题,提升对c语言有用性的理解,在实践中巩固各学问点。

C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上机实习可以关心我们更好地理解这种结构式的中级语言以及其各种各样的数据类型和高效率的运算程序,为我们进一步学习C++打下坚实基础。

同时,在实习过程中,通过相互发觉问题,共同解决问题,不仅熬炼了我们的合作力量,而

且也让我们发觉了一些自己的个人误区以及其他人简单犯的错误,从而在今后的学习中更加谨慎,达到事半功倍的效果;通过询问老师,也让我们养成了不耻下问的好习惯,这将很有利于以后的学习。

闲乐-一个人闲。不如大家一块儿乐/retype/zoom/9861aabdfd0a79563c1e72ad?pn=2

//定义一个数组a[11],用以存放同学的成果

printf(“从键盘输入10个同学成果:

“);

for(i=0;i

一、听课,仔细学习,虚心求教

实习开头的两个星期,在指导老师的带领下,我们开头听课,做好听课记录,仔细学习前辈的教学阅历,我的体会是在教学前必需营造好的教学环境,教学过程中要把同学的学习爱好调动起来,使他们在欢乐中主动地学习,教学之后布置相应的练习进行巩固。我的指导老师是一位刚进入训练行业不久的女老师。虽然老师还很年轻,但在同学中的威望很高,可以在上课前就整理好班级的课堂秩序。在教学方面,老师依据课文的不同采纳不一样的教学方法,如对于文言文采纳传统式的教学,而说明文则采纳新式的'教学方法,通过多媒体教学手段的帮助,通过图片、音频、视频文件的展现,加深同学对课文的理解。而在教学任务完成,则布置相应的作业,如对于文言文课文的作业布置一般是完成练习,而对于说明文的作业一般是仿写一篇说明文,关于小说的学习,如《台阶》一文,布置了写一段“XXX,我想对你说”的小短文,200字左右,这样,就能加深同学对于《台阶》课文中表达的人文精神的理解。

二、备课,备教材、备同学、备教法

教学就是教与学,两者是相互联系,不行分割的,有教者就必定有学者。同学是被教的主体。因此,了解和分析同学状况,有针对地教对教学胜利与否至关重要。最初接触教学的时候,我还不懂得了解同学对教学的重要性,只是用心讨论书本,教材,想方设法令课堂生动,同学易接受。

备教材。要保证好的教学效果,不能单单营造活跃的课堂气氛,搞花架子,而应当从教学内容中找到同学的兴奋点。因此,课前预备肯定要充分。为了上好每一堂课,我都仔细讨论课文,找出重点,难点,有针对性地讲。为了令教同学动,不沉闷,我还为此查资料,参考教参以及网上优秀教案和视频,整理教案,预备相关教具,授课时就心中有数了。在教学过程中,语速、教学进程应依据教学内容的性质、重要性和大多数同学的适应程度敏捷把握,该快则快,应慢则慢。

备同学。我班上同学的语文水平层次不一,中等生、差生占较大多数,尖子生相对较少。因此,课文讲得太深,很难照看到整体,最初我备课时没有考虑到这点,因此,教学效果不很抱负。从今可以看出,了解及分析同学实际状况,做到因材施教,对授课效果有挺直影响。这就是训练学中提到的“备教法的同时要备同学”。在教学反思中,我深深地理解了这一理论。

备教法。教学中,备课是一个必不行少,非常重要的环节,备同学,又要备教法。备课不充分或者备得不好,会严峻影响课堂气氛和主动性,办公室里的一位老前辈对我说:“备课备不好,倒不如不上课,否则就是白费心机。”因此,每次上课之前,我都花费大量的时

间在备课之上,认仔细真钻研教材和教法,参考网络上的优秀视频和教案,有的课用讲读方法比较好,有的课同学自读,老师进行引导比较好,有的用多媒体教学手段比较直观形象等等,每节课都有比较相宜的方法。在备课时,我都仔细地讨论课文,或向老师虚心请教,从而选择教学方法。

备课的体会。一堂预备充分的课,会令同学和老师都获益不浅。备课充分,能调动同学的学习主动性,增加教学效果。但同时老师又要具有驾驭课堂的力量,由于同学的行为也会挺直影响课堂教学。在中**语为汉语的这种大环境之下,同学对语文既熟识又生疏,所以要教好语文,就要让同学宠爱语文,让他们对语文产生爱好。为此,我在网上“取经”,就是尽量多讲一些与课文相关的文化故事,让他们产生学习爱好,更主动学习语文。由于只有语文水平提高,才能提高同学们的语文写作力量。

三、授课,启发爱好,创新方法

课堂教学

在启发同学课堂爱好时,我采纳如下方法:以课文相应的情感进行教学,这包括老师在教学过程中所用法的语调、表情、动作等;这一学龄的同学对美感已经有肯定的追求,所以在教学中,可以用美丽感人的语言激发爱好,“辞不行不修,说不行不善”,闪烁着才智完辉的语言具有丰富的表现力;以生动形象的比方激发爱好。

课后辅导

班上同学对于语文这门课程的理解不一样,因此,导致他们对语文的重视程度也相应不同,这样的话,语文水平自然层次不一,出现好差分化现象,严峻影响全班语文素养的提高。为此,我制定了详细的方案和目标。对语文不抱负的同学进行有方案的辅导。我把这批同学分为两类。第一类是学习主动性不高的同学,对这些同学,我实行集体辅导,给他们安排固定任务,不让他们有偷懒的机会,让他们发挥应有水平;其次类有学习主动性,但力量不强的同学。我对这部分同学进行适当引导,耐烦教育,肯定要留意言辞,避开损害同学,渐渐提高他们的语文水平。

作业批改

批改作业,我订正每个错误,在批语中强调订正的重要性,并依据各个同学的状况勉励之,开导之。对那些在我要求订正之后依旧不订正的同学,我在课后找同学谈话,做好他的思想工作。改作文,我花的精力更多,由于我发觉可以通过作文了解同学的性格、生活、爱好等各方面状况,对于每一篇作文都写上相应的评语,鼓舞他们写得更好。仔细批改每一篇作文,对语言表达的通顺与否、有无错字进行指导。对于好句子,段落,或者作文,在相应的位置写上评语鼓舞,将优秀的作文当成.在全班朗读。而对于错误的地方,则批上错误缘由。这样的做法,可以提高同学写作业的主动性,从而提高语文水平。

授课的体会

上课肯定要设法令同学投入,不让其分心,这就很讲究方法了。上课内容丰富,现实。教态自然,讲课生动,难易适中照看全部,就自然能够吸引住同学。所以,老师每天都要有充分的精神,让同学感受到一种自然气氛。这样,授课就事半功倍。回看自己的授课,我感到有点愧疚,由于有时我并不能很好地做到这点。当同学在课堂上无心向学,违反纪律时,我的心情就受到影响,并且把这带到教学中,让原本正常的讲课受到冲击,发挥不到应有的水平,以致影响教学效果。我以后必需努力克服,讨论方法,实行有利方法解决当中困难。

实习的内容除了专业课的教学实习,还有班主任工作的实习。在这段时间,通过对指

导老师刘老师以及办公室其他班主任的学习,以及在初二(1)班的实践,我有以下几点心得。

1、深化同学之中,消退同学与老师之间的隔阂感,让他们打快乐扉。在休息时间,我会主动找同学进行沟通,在沟通的过程中去发觉他们的心理问题。比如,甘德福同学总是在上课的时候讲闲谈,不遵守课堂秩序。我课下找他谈天,发觉他讲闲谈的缘由是自制力不足,且学习主动性不足。针对这样的问题,我同他分析上学与不上学的利与弊,并告知他同学时代的老师也是自制力不足,与他共享我克服这一问题的方法。经过半个多小时的谈话之后,甘德福的表现向着好的方向转变,上课也不再走神,也会仔细听讲。

2、定期的开展形式多样的主题班会,达到训练的目的。针对同学之间应当互帮互助,我开展了《举手之劳》的主题班会,以印度甘地坐火车把剩下的鞋扔下火车的故事导入班会,再进行深化且贴近生活的分析,告知同学为什么要互帮互助,怎么互帮互助,关心他们培育乐于助人的良好品行。通过这次班会,班上同学之间的关系更加融洽。

3、奖惩适当。为了鼓舞进步的同学,要给以嘉奖,而对于犯错的同学,则要适当惩处。这也就是说,奖惩也是班主任所应具备的力量。首先肯定要敬重同学的独立人格,爱护好同学的自信念、自尊心。其次,惩处的目的不是为惩处而惩处同学,而是为训练同学而惩处同学,换句话说,惩处是手段,训练才是目的;再者,要给犯错的同学接受教训,改正错误的机会。

4、通过周记,了解同学状况,实现师生心与心沟通。由于我的专业课实习是语文教学,而语文的指导老师给同学布置了周记的任务。因此,我可以同学每周的周记了解他们的心理状况,大部分同学会在周记中写自己现实生活中的欢乐与苦恼,如与伴侣相处不开心,同家人发生了小冲突,期中考试没有考好等,有的问题我挺直在周记上赐予答复。有的问题我则会通过其他的途径赐予答复。通过周记这个小平台,同学一些小的心理问题也就能够得到很好的解决,我和同学之间能够实现心与心的沟通。

以上就是我在实习期间学习到的学问与阅历。由于阅历颇浅,很多地方存在不足,盼望在将来的日子里,能在各位老师,前辈的指导下,不断学习,努力进取,取得更好成果。

第三篇:C语言实习报告123

C语言课程设计报告

第1章 目的任务

1.1实训目的(1)巩固C语言所学基本课程;

(2)提高C语言编程的综合应用能力;

(3)学会C语言程序的编译、调试方法。

1.2实训任务

(1)掌握C语言中的基本数据输入、输出;

(2)熟练掌握C语言中的三种基本结构的使用;

(3)熟练使用C语言中的数组;

(4)熟练使用C语言中的函数;

(几)熟练使用C语言中的指针;

(6)熟练使用C语言中的结构体。

第2章 主程序子程序

2.1主函数main

main()函数是C程序的主函数,也是入口函数,所有C程序的执行都从main开始至main结束。主函数使用了do… while语句和switch语句,在主函数中定义一个变量k,通过输入k的值,实现输入、输出、修改、排序、查询函数的调用以及程序的退出。

2.2 creat

通过scanf函数接受通讯录信息,创建通讯录并将其存入文件中。

2.3output

通过指针打开文件,实现对通讯录的访问。

2.4 search

通过scanf函数,输入所要查询的信息,找到相对应的指针连接到相应文件,实现查找功能。

2.5append

通过指针打开相应文件,运用scanf函数进行对信息内容的添加。

2.6 modify

打开文件,通过fscanf函数对其中内容进行修改,并利用循环体进行保存。

2.7 delete

先运用结构体,并输入所要修改的信息,通过指针找到对应信息并进行修改。

第3章 错误

1、电话的输出为乱码,原因:数据类型写为“%d”与定义类型不一致,将其改为“%s”。

2、在输入函数中出现警告:变量“j”在函数中定义但并未在output函数中使用,将“j”删除。

3、在output函数中出现语法错误,将输入法切换为英文输入状态输入“:”。

4、在modify中需要逻辑“0”或“非0”,使用字符数组namekey[8],利用strcpy函数实现字符类数据的的顺序调换。

5、在delete中缺少“}”,添加上“}”。

第4章 实训总结

4.1思维方式方法

根据程序系统功能要求可以将程序分解为以下功能模块:

创建通讯录;

输入学生通讯信息;

在通讯录中查找;

添加通讯录信息;

修改通讯录信息;

删除通讯录信息;

4.2实训感想体会

上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。

历时9天的《C语言程序设计》已经结束了,在这几天编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。

首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这几天编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看每一个地方,会仔细地检查程序的每一个字母、标点。

其次,在编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺。

再次,通过几天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便。

第四,在实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查。第五,通过实习改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。

第六,通过实习我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。第七,实训过程中,充分发挥团队协作精神,共同进步,帮助我顺利完成实训课程。

总之,通过实习使我自身的知识体系得到巩固、提高以及使团队工作的能力得到锻炼。

第四篇:c语言实习报告

目 录

一、前言„„„„„„„„„„„„„„„„„„„„„„„„„2

二、引言„„„„„„„„„„„„„„„„„„„„„„„„„2 2.1系统开发工具„„„„„„„„„„„„„„„„„„„„ 2 2.2实习目的„„„„„„„„„„„„„„„„„„„ 3 2.3实习基本内容与要求„„„„„„„„„„„„„„„„„3 2.4实习时间安排„„„„„„„„„„„„„„„„„„„„ 3 2.5实习地点„„„„„„„„„„„„„„„„„„„„„„ 3 2.6实习内容„„„„„„„„„„„„„„„„„„„„„„„„„„„ 3

三、学生成绩管理系统分析„„„„„„„„„„„„„„„„„3.1系统概况„„„„„„„„„„„„„„„„„„„„„„4 3.2需求分析„„„„„„„„„„„„„„„„„„„„„„4 3.3总体功能要求„„„„„„„„„„„„„„„„„„„„5 3.3.1总体功能模块„„„„„„„„„„„„„„„„„„ 5 3.3.2各函数的功能和实现„„„„„„„„„„„„„„„„ 6 3.3.3各部分流程图„„„„„„„„„„„„„„„„„„„„„„„ 6 3.3.4性能要求„„„„„„„„„„„„„„„„„„„„„„„„„ 8

四、详细设计„„„„„„„„„„„„„„„„„„„„„„„8 4.1关键部分的代码、说明及运行结果图„„„„„„„„„„„„„„„8

1、全局定义部分„„„„„„„„„„„„„„„„„„„„„8

2、主程序部分„„„„„„„„„„„„„„„„„„„„„„8

3、输入信息部分„„„„„„„„„„„„„„„„„„„„„10

4、输出信息部分„„„„„„„„„„„„„„„„„„„„„12

5、排序部分„„„„„„„„„„„„„„„„„„13

6、插入信息部分„„„„„„„„„„„„„„„„„„14

7、删除部分„„„„„„„„„„„„„„„„„„15 4.2总程序„„„„„„„„„„„„„„„„„„„„„„„„16

五、实习心得体会„„„„„„„„„„„„„„„„„„„„„24

六、附录:参考文献„„„„„„„„„„„„„„„„„„„„25

一、前言

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例如,检索迅速,查找方便,可靠性高,存储量大,保密性好,寿命长,成本低等。这些优点能极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发学生成绩管理系统很有必要。

学生成绩管理系统是为了适应现代化学校的管理,加快推进数字化校园的建设、充分利用校园网,利用网络、多媒体等计算机应用技术和手段,提高办公效率、改善质量的高效管理学校系统。

学生成绩管理系统是系科综合管理系统的重要组成部分,为学校学生层面的管理提供了一个有用的数字化学生成绩管理系统的工具,在学校学生管理中起着举足轻重的作用。

为了培养自己正确的程序设计思想,使平时学习的理论联系实际,培养自己严肃认真,实事求是的科学态度和勇于探索的创新精神,培养自己综合运用所学知识与实践经验,分析和解决相应领域的工程技术问题或进行软件项目开发的能力。学院依照课程教学大纲和课程设计大纲提出了本次课程设计的题目及要求。

要求掌握C程序的基本结构和C语言基本的数据结构,熟悉C程序的编辑、编译、调试和运行过程,了解程序设计的一般方法、结构化程序设计的思想,熟悉算法的描述工具—N—S流程图的使用及常用算法,能够熟练地阅读用C语言编写的程序,能够运用结构化程序设计编写C程序。

二、引言

2.1系统开发工具简介

WIN-TC是一个TC2 WINDOWS平台开发工具。该软件使用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 实习地点:c1 2楼机房 2.6实习内容

对学生信息(包括姓名、学号、语文、数学、英语、平均分、总分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、退出、保存.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改、排序和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。

三、学生成绩管理系统分析

3.1系统概况

本次实习是通过建立一个学生学籍管理系统来更好的认识和掌握C语言中链表这一重要的知识内容.本系统实现的功能如下:

1.创建学生学籍信息,每个学生学籍信息包括:学号、姓名、语文、数学、英语、平均分、总分;

2.插入信息:按照学号由小到大的循序插入信息;

3.查找信息:通过选择按照学号或者姓名来查找到该学生的信息; 4.删除信息:通过选择按照学号或者按照姓名删除某个学生学籍信息; 5.输出信息:通过选择按学号(由小到大)或者总分(由小到大)或者平均分(由小到大)来输出信息;

6.保存信息:对学生学籍系统中的信息以记事本的学生进行保存。

本系统的亮点是在运用模块来组建该学生学籍管理系统,也就是说各个功能以模块的实现,通过主函数来调用模块,实现管理功能,这样程序结构清晰,容易检查到错误所在模块,减少了调试的压力。其次,是运用结构体来组织数据,数据结构规范,通过指针的操作很容易实现简单的查找、删除、输出等操作。最后,容错性较好,比如输入成绩输入时按照我们百分制输入,必须输入1-100之间的数字,如果输入的不是1-100中的数据,在系统将显示信息错误信息,要求重新输入。

软件配备:TurboC2.0,Windows 2000/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、输入初始的学生信息:输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数void input(STUDENT *data, int *len)来实现此操作。

2、成绩输出模块:输出学生的信息以及成绩void output(STUDENT *data, int len):通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来输出成绩的平均分数、最高和最低分数。

3、成绩查询模块:可用void find(STUDENT *data, int len)来实现。找到就输出此学生全部信息。

4、删除模块:用函数void delete_item(STUDENT *data, int *len)来实现

5、排序模块:用函数void sort(STUDENT *data, int len)来实现

6、统计功能能:用函数void stat(STUDENT *data, int len)来实现

7、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

3.3.3各部分流程图 1.学生信息输入流程图 2.学生信息输出流程图

3.删除的流程图

4.插入信息的流程图 5.对信息的排序流程图

3.3.4性能要求

1、功能分别用函数实现;

2、信息让用户通过键盘输入;

3、通过计算获得;

4、简单的操作界面;

5、可能考虑程序的容错

四、详细设计

4.1关键部分的代码、说明及运行结果图

1、全局定义部分

#include #include #include #include #define NULL 0 /*令NULL为0,表示空地址*/ #define LEN sizeof(struct student)/*令LEN代表struct student类型数据的长度,sizeof是“求字节数运算符”*/ struct student /*定义结构体*/ { long num;/*定义学生学号*/ char name[20];/*定义姓名*/ char sex[10];/*定义性别*/ int chinese;/*语文分数,假设为整数*/ int math;/*数学分数*/ int english;/*英语分数*/ int sum;/*三门总分*/ struct student *next;};int n;/*n为全局变量,定义为节点个数*/ /*创建链表,带回一个指向链表头的指针*/ struct student *creat(vonum){ struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);/*开辟一个新单元*/ printf(“nInput student's number:(press 0 to exit)”);

2、主程序部分

main()/*主函数*/

{struct student *head,*stu;long del_num;int N;a: printf(“The student information management system n”);printf(“n(LIST)n”);printf(“ 1.Create a new namelistn”);printf(“ 2.Print the namelistn”);printf(“ 3.Delete a record from the namelistn”);printf(“ 4.insert a recordn”);printf(“ 5.sort the programmen”);printf(“ 0.exit the programmen”);printf(“please enter the number:”);scanf(“%d”,&N);switch(N){case 0:exit(0);goto end;case 1: printf(“input records:n”);head=creat();print(head);break;case 2: print(head);break;case 3: printf(“ninput the delete number :”);scanf(“%1d”,&del_num);while(del_num!=0){head=del(head,del_num);print(head);printf(“ninput the deleted number:”);scanf(“%1d”,&del_num);}break;case 4: printf(“ninput the insert record:”);stu=(struct student *)malloc(LEN);printf(“nplease input number :”);scanf(“%ld”,&stu->num);printf(“please input name”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);9 printf(“please input english score:”);scanf(“%d”,&stu->english);while(stu->num!=0){head=insert(head,stu);print(head);printf(“ninput theinsert record:”);stu=(struct student*)malloc(LEN);printf(“nplease input number:”);scanf(“%ld”,&stu->num);printf(“please input name:”);scanf(“%s”,&stu->name);printf(“please choose sex(f or m):”);scanf(“%s”,&stu->sex);printf(“please input chinese score:”);scanf(“%d”,&stu->chinese);printf(“please input maths score:”);scanf(“%d”,&stu->maths);printf(“please input english score:”);scanf(“%d”,&stu->english);break;case 5: head=sort(head);print(head);break;

}goto a;end:;} }

3、输入信息部分 /*输入数据*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*验证成绩是否在0——100之间*/ {printf(“Please enter a number between 0 to 100!n”);10 goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*绩是否在0——100之间*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之间*/ 11

验证成验证成绩 goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);} 输入界面如下:

4、输出信息部分

/*输出链表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求总分赋给totalscorescore*/ /*输出各项值*/ 12 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*将p原来指向的节点中next的值赋给p,使p指向第下一个节点*/ p->sum=NULL;/*将总分totalscorescore赋空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);}

5、排序部分

struct student *sort(struct student *head)/*{int i=0;struct student *p,*q,*t,*h1;h1=head->next;head->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;p=head;q=head;while(t->total>p->total&&p!=NULL){q=p;p=p->next;} if(p==q){t->next=p;head=t;} else {t->next=p;q->next=t;} } p=head;while(p!=NULL){i++;p->order=i;p=p->next;} printf(“sort sucess!n”);return(head);}

如按总分排序,界面如下:

排序函数*/

按学号排序,界面如下:

6、插入信息部分

/*插入结点函数*/ struct student *insert(struct student *head,struct student *stud){struct student *p0,*p1,*p2;p1=head;p0=stud;if(head==NULL){head=p0;p0->next=NULL;} else {while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;} if(p0->num<=p1->num){if(head==p1)head=0;else p2->next=p0;14 p0->next=p1;} else {p1->next=p0;p0->next=NULL;} } n=n+1;p1->order=n;return(head);}

7、删除部分 /*删除节点*/ struct student *del(struct student *head,long num)/*参数为起始地址head和学号number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的节点,并且后面还有节点*/ { p2=p1;p1=p1->next;/**p1后移一个节点*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是头节点,把第二个节点地址赋予head*/ else p2->next=p1->next;/*否则将下一节点地址赋给前一节点地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到该节点*/ return(head);} 界面如下:删除后

4.2、总程序

#include #include #include #include #define NULL 0 /*令NULL为0,表示空地址*/ #define LEN sizeof(struct student)/*令LEN代表struct student类型数据的长度,sizeof是“求字节数运算符”*/ struct student /*定义结构体*/ { long num;/*定义学生学号*/ char name[20];/*定义姓名*/ char sex[10];/*定义性别*/ int chinese;/*语文分数,假设为整数*/ int math;/*数学分数*/ int english;/*英语分数*/ int sum;/*三门总分*/ struct student *next;};

int n;/*n为全局变量,定义为节点个数*/ /*创建链表,带回一个指向链表头的指针*/ struct student *creat(vonum){ struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);/*开辟一个新单元*/ 16 printf(“nInput student's number:(press 0 to exit)”);/*输入数据*/ scanf(“%ld”,&p1->num);if(p1->num!=0){ a: printf(“Input student's name: ”);scanf(“%s”,&p1->name);b: printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);c: printf(“Input chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0)/*验证成绩是否在0——100之间*/ {printf(“Please enter a number between 0 to 100!n”);goto c;} d: printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100!n”);goto d;} e: printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100!n”);goto e;} } head=NULL;while(p1->num!=0){ n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&p1->num);if(p1->num!=0){printf(“Input student's name: ”);17 scanf(“%s”,&p1->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,&p1->sex);printf(“Input Chinese score: ”);scanf(“%d”,&p1->chinese);if(p1->chinese>100||p1->chinese<0){printf(“Please enter a number between 0 to 100n”);/*验证成绩是否在0——100之间*/ goto c;} printf(“Input math score: ”);scanf(“%d”,&p1->math);if(p1->math>100||p1->math<0){printf(“Please enter a number between 0 to 100n”);/*是否在0——100之间*/ goto d;} printf(“Input english score: ”);scanf(“%d”,&p1->english);if(p1->english>100||p1->english<0){printf(“Please enter a number between 0 to 100n”);goto e;} } } p2->next=NULL;return(head);}

/*输出链表*/ void print(struct student *head){ struct student *p;printf(“n=============Student information=============n”);printf(“nthe %d recrods are:n”,n);printf(“| NO.| Name | Sex |Chi |math|Eng | sum|n”);printf(“|----------|--------|-----|----|----|----|------|n”);p=head;if(p!=NULL)do { p->sum=p->chinese+p->math+p->english;/*求总分赋给totalscorescore*/ /*输出各项值*/ 18

验证成绩 printf(“|%10ld|%8s|%5s|%4d|%4d|%4d|%6d|n”, p->num, p->name,p->sex,p->chinese,p->math, p->english,p->sum);p=p->next;/*将p原来指向的节点中next的值赋给p,使p指向第下一个节点*/ p->sum=NULL;/*将总分totalscorescore赋空地址*/ }while(p!=NULL);else printf(“nNo recordsn”);printf(“===============END====================n”);}

/*删除节点*/ struct student *del(struct student *head,long num)/*参数为起始地址head和学号number*/ { struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);} p1=head;while(num!=p1->num&&p1->next!= NULL)/**p1指向的不是所要找的节点,并且后面还有节点*/ { p2=p1;p1=p1->next;/**p1后移一个节点*/ } if(num==p1->num){ if(p1==head)head=p1->next;/*若p1指向的是头节点,把第二个节点地址赋予head*/ else p2->next=p1->next;/*否则将下一节点地址赋给前一节点地址*/ printf(“delete:%ldn”,num);n=n-1;} else printf(“%ld not been found!n”,num);/*找不到该节点*/ return(head);}

/*插入节点*/ struct student *insert(struct student *head,struct student *stud)/*stud是一个指针变量,从实参传来待插入节点的地址给stud*/ { struct student *p0,*p1,*p2;p1=head;/*使p1指向第一个节点*/ p0=stud;/*p0指向要插入的节点*/ if(head==NULL)/*原来的链表是空表*/ {head=p0;p0->next=NULL;/*使p0指向的节点作为头节点*/ 19 } else { while((p0->num>p1->num)&&(p1->next!=NULL)){ p2=p1;/*使p2指向刚才p1指向的节点*/ p1=p1->next;/*p1后移一个节点*/ } if(p0->num

num){ if(head==p1)head=p0;/* else p2->next=p0;/* p0->next=p1;} else {p1->next=p0;p0->next=NULL;} /* } n=n+1;/*节点数加1*/ return(head);}

/*exchange the element of chain*/ void swap(struct student* q1,struct student* q2){long temp_num;char temp_name;char temp_sex[10];int temp_chinese;int temp_math;int temp_english;int temp_sum;char s1[20];

temp_num=q1->num;q1->num=q2->num;q2->num=temp_num;

strcpy(s1,q1->name);strcpy(q1->name,q2->name);strcpy(q2->name,s1);

temp_sex[10]=q1->sex[10];q1->sex[10]=q2->sex[10];q2->sex[10]=temp_sex[10];

插到原来第一个节点之前*/ 插到p2指向的节点之后*/ 插到最后的节点之后*/ temp_chinese=q1->chinese;q1->chinese=q2->chinese;q2->chinese=temp_chinese;

temp_english=q1->english;q1->english=q2->english;q2->english=temp_english;

temp_math=q1->math;q1->math=q2->math;q2->math=temp_math;

temp_sum=q1->sum;q1->sum=q2->sum;q2->sum=temp_sum;}

/*sort by num*/ struct student * sort_num(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->num>p2->num)p1=p2;p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);}

/*sort by totalscore form high to low*/ struct student * sort_sum(struct student* head){struct student *p0,*p1,*p2;p0=head;do{ p1=p0;p2=p1;do{ if(p1->sum

sum)p1=p2;21 p2=p2->next;}while(p2!=NULL);if(p1!=p0)swap(p0,p1);p0=p0->next;}while(p0!=NULL);return(head);}

/*主程序*/ main(){struct student *head,*stu;char aa;long del_num;M: printf(“n************welcome System************nn”);

to

the

School

Management printf(“***************************************************************n”);printf(“n************

made by GIS1011 chenliuqing 1020209124 ************n”);printf(“* 1.Input students' records 2.Print students' records *n* 3.Delete records 4.Insert records *n* 5.Sort by number 6.Sort by totalscore *n* 7.System Information 8.Exit *n ”);

printf(“********************END****************************************n”);printf(“********* ***************n”);aa=getch();aa=tolower(aa);switch(aa){ case'1': printf(“nInput students' records”);head=creat();/*返回头指针*/ print(head);/*输出全部节点*/ break;/*调用输出链表函数*/ case'2':print(head);/*输出全部节点*/ break;/*调用删除节点函数*/ case'3': printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);while(del_num!=0){head=del(head,del_num);/*返回头指针*/ print(head);/*输出全部节点*/

please

choose

the

number

before

command 22 printf(“nInput the deleted number(press 0 to exit): ”);scanf(“%ld”,&del_num);} break;/*调用插入节点函数*/ case'4': printf(“nInput the inserted record”);stu=(struct student*)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);if(stu->num!=0){ printf(“Input student's name:”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m):”);scanf(“%s”,stu->sex);printf(“Input chinese score: ”);scanf(“%d”,&stu->chinese);printf(“Input math score: ”);scanf(“%d”,&stu->math);printf(“Input english score: ”);scanf(“%d”,&stu->english);} while(stu->num!=0){ head=insert(head,stu);print(head);/*输出全部节点*/ printf(“Input the inserted record”);stu=(struct student *)malloc(LEN);printf(“nInput student's number(press 0 to exit): ”);scanf(“%ld”,&stu->num);printf(“Input student's name: ”);scanf(“%s”,stu->name);printf(“Input student's sex(f or m): ”);scanf(“%s”,stu->sex);printf(“Input Chinese score:”);scanf(“%d”,&stu->chinese);printf(“Input math score:”);scanf(“%d”,&stu->math);printf(“Input english score:”);scanf(“%d”,&stu->english);} break;/*调用按学号(从小到大)排序函数*/ case '5': head=sort_num(head);print(head);/*输出全部节点*/ 23 break;/*调用按总分(从高到低)排序函数*/ case '6': head=sort_sum(head);print(head);/*输出全部节点*/ break;case'7':printf(“n~~~~~~~~~~~~System Information~~~~~~~~~~~~n”);printf(“School Management SystemnMade Time:2010-7-24nVersion number:1.0nn”);printf(“~~~~~~~~~~~~~~~~~~ /*显示系统信息*/ break;case'8':exit();/*退出程序*/ /*调用创建链表函数*/

} goto M;/*返回、显示主菜单*/ }

END

By

xugaohongnFinish

~~~~~~~~~~~~~~~~~~nnn”);

五、实习心得体会

由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。通过本次C语言程序设计的实习,我学得了很多知识,虽然在之前老师没有详细讲链表的内容,但是我通过自己看书,同学一起讨论,会用链表处理简单的实际问题了,并对链表的建立、结点的插入、删除节点以及链表的输出等一系列链表知识有了较为深刻的认识。而且自己的实际操作能力也有了提高。

回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整两个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能 24 真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体„„通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。但我们总结出了一点点的经验如下:

1、要对系统的功能和要求做出详细的分析,并合理分解任务。

2、把分解出来的子任务,做给一个相对独立的模块。

3、在设计一个模块之前,要简单构想一下总界面的显视情况。

4、针对构想出来的界面进行程序的编写。

六、附录:

参考文献

教材和主要参考书目:(1)教材:《C程序设计》,谭浩强编著,清华大学出版社(2)主要参考书目: ①《C程序设计教程》,谭浩强编著,清华大学出版社; ②《C语言程序设计——习题与实验指导》,谭浩强编著,清华大学出版社。

第五篇:c语言实习报告

西安科技大学

《C/C++语言程序设计》

课程设计报告

题 目

院、系(部)

专业及班级 姓 名 日 期

1设计目的

设计一个职工信息管理系统,使之能提供以下功能: 1)录入职工信息并保存 2)显示所有职工信息 3)查询职工信息 4)修改职工信息并保存 5)删除职工信息 需求说明: 职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,并且要求职工号不重复;

录入的职工信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作; 职工信息的显式要求有一定的规范格式;

对职工信息应能够分别按工资及按学历两种方式进行,要求能返回所有符合条件的职工的信息; 对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;

所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况。总体设计

1.该系统可以按功能进行模块划分,其模块图如下:

系统模块图

其中:

信息输入模块完成职工信息的输入功能,输入信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等;

信息浏览模块完成已录入职工信息的显示;

信息查询模块完成职工信息的查询,查询时对应有按工资查询和按学历查询两种方式; 信息修改模块完成职工信息的修改功能; 信息删除模块完成职工信息的删除功能;

菜单选择模块完成用户命令的接收,此模块也是职工信息管理系统的入口,用户所要进行的各种

操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;

2.数据结构

本系统中主要的数据结构就是职工的信息,包含职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个职工的不同属性来进行处理

3.程序流程

系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:

程序流程图 详细设计

对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下: ① 信息输入模块:

打开职工信息文件; while(继续输入){ 读入职工信息;

将读入信息添加到职工信息文件中;

提示是否继续输入; } 关闭职工信息文件;

② 信息浏览模块:

打开职工信息文件; while(不到文件结束){ 从文件中顺序读出一个职工的信息;

按指定格式输出该职工的信息; } 关闭职工信息文件;

③ 信息查询模块:

while(仍继续查询){ if(按工资查询){ 读入查询的职工工资条件;

打开职工信息文件;

while(不到文件结束){ 顺序读出一个职工的信息;

if(该职工信息的工资符合条件)输出该职工的信息; } 关闭职工信息文件;

提示共有几条符合条件的记录; } else if(按学历查询){ 读入学历查询的条件;

打开职工信息文件;

while(不到文件结束){

顺序读出一个职工的信息;

if(该职工信息的学历符合条件)输出该职工的信息;

} 关闭职工信息文件; 提示符合条件的记录数; }

else 提示输入不合适;

提示是否继续查询; }

④ 信息修改模块:

while(继续修改){

从给出信息文件中所有的记录情况; 提示并读入待修改的记录的职工的职工号; 打开职工信息文件;

查找并读出该职工的信息到一个中间变量中; 提示并读入要针对该职工的哪个属性进行修改; 根据用户的选择提示并读入所要修改属性的新值; 在该职工的中间变量中修改刚刚读入的属性值; 提示是否确定要进行修改;

如果用户确定则将中间变量重新写回到原职工信息文件中; 关闭职工信息文件; } ⑤ 信息删除模块:

while(继续删除){ 显示所有职工的信息;

提示并读入待删除的职工的职工号;

打开职工信息文件;

查找是否有符合条件的职工记录; if(有符合条件的记录){ 提示是否确认该删除操作; if(用户确认此操作){ 创建一个新的临时文件;

打开原信息文件;

while(原信息文件中记录未读完){ 读出原信息文件中的下一条记录;

if(此条记录不是待删除记录)写入临时文件中去; }

关闭原信息文件; 关闭临时文件; 读方式打开临时文件;

写方式重建与原信息文件同名的新信息文件; 将临时文件中的内容写入到新信息文件中去; 关闭新信息文件; 关闭临时文件; 删除临时文件; } } else 提示没有符合条件的记录存在; } ⑥ 菜单选择模块:

给出信息提示; 清屏;

绘制菜单(包含输入、显示、查询、修改、删除、退出); 提示菜单选择并读入到变量;

根据读入变量的值调用不同的模块函数;

数据结构:

性别: enum Sex{ male, female };学历 :enum Education{ high, junior, college, master, doctor};日期 :struct Date { int year;int month;int day;};职工信息:struct Info {

char num[5];/* 职工号 */ char name[8];/* 姓名 */ enum Sex sex;/* 性别 */ struct Date birthday;/* 出生年月*/ enum Education education;/* 学历 */ char duty[8];/* 职务 */ double wage;/* 工资 */ char addr[12];/* 地址 */

char phone[8];/* 电话 */ };

下载C语言实习报告word格式文档
下载C语言实习报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言实习报告

    新疆昌吉学院 《C语言程序设计》 教学实习报告 部门:信息技术分院专业:计算机应用技术 班级:2010高职应用姓名: 指导教师: 《C语言程序设计》教学实习报告 2010高职应用班 一、......

    C语言上机实习报告

    一、实验目的 1.能够描述VC++6.0开发平台的使用过程,学会运行一个C程序的基本步骤,包括编辑、编译、链接和运行。 2.能够使用算术表达式和赋值表达式书写正确的语句。 3.能够使用......

    语言类实习报告合集[5篇]

    语言类实习报告合集9篇在现实生活中,越来越多人会去使用报告,不同种类的报告具有不同的用途。相信很多朋友都对写报告感到非常苦恼吧,以下是小编为大家整理的语言类实习报告9篇......

    c语言上机实习报告

    苏州科技大学上机实习报告 程序设计语言(C语言) 实验一: Visual C++实验环境 一、实验任务 实验一 二、实验目的 1. 了解C程序结构,熟悉VC++ 6.0开发环境。 2. 熟悉在VC++ 6.......

    语言类实习报告汇总[5篇]

    语言类实习报告汇总十篇在经济飞速发展的今天,报告与我们的生活紧密相连,报告具有语言陈述性的特点。相信许多人会觉得报告很难写吧,下面是小编帮大家整理的语言类实习报告10篇......

    语言实习报告[5篇范例]

    精选语言实习报告四篇随着社会一步步向前发展,越来越多的事务都会使用到报告,我们在写报告的时候要注意逻辑的合理性。在写之前,可以先参考范文,下面是小编整理的语言实习报告4......

    语言类实习报告[五篇]

    语言类实习报告汇编10篇随着社会不断地进步,报告的用途越来越大,其在写作上具有一定的窍门。在写之前,可以先参考范文,以下是小编为大家整理的语言类实习报告10篇,希望能够帮助到......

    C语言课程实习报告

    新疆农业职业技术学院 《 VB程序与设计 教学实习报告 部门:信息技术学院 专业: 计算机应用 班级:10高职应用班 姓名: 李蒙 指导教师: 徐玉莲》 《VB程序与设计》教学实习报告 10......