c语言实训报告24763.doc

上传人:scccc 文档编号:13655508 上传时间:2022-01-21 格式:DOC 页数:21 大小:29.66KB
返回 下载 相关 举报
c语言实训报告24763.doc_第1页
第1页 / 共21页
c语言实训报告24763.doc_第2页
第2页 / 共21页
c语言实训报告24763.doc_第3页
第3页 / 共21页
c语言实训报告24763.doc_第4页
第4页 / 共21页
c语言实训报告24763.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《c语言实训报告24763.doc》由会员分享,可在线阅读,更多相关《c语言实训报告24763.doc(21页珍藏版)》请在三一文库上搜索。

1、 C语言程序设计实训报告 课题名称:学生成绩管理系统 业: 软件技术 专 班 级: 软件 A091 学 号:2009145006 姓 名: 刘好青 指导教师: 王云晓 2010-7-2 - 0 - 目 录 一 课程设计目的 2 二 课程设计题目 3 三 课程设计报告内容 3 四 总结7 五 心得与感想8 六 附录:(源程序) 10 - 1 - 一、课程设计的目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。 (2)掌握C的基本概念和基础知识。 (3)通过训练能够读懂较为复杂的C语言源程序并具备基本C语言程序设计的能力。 (4)熟练掌握各种常用类的定义,继承,文

2、件的应用,为更好的理解面向对象打下更好的基础。 (5)通过实训,培养自己编写、调试、分析大型应用程序的能力。 (6)掌握面向对象的基本原理,提高学生综合程序设计的能力。 (7)培养自己独立解决问题,查找资料的能力。同学之间相互帮助,相互交流,相互合作的团队精神。 (8) 培养自己良好的学习兴趣,独立的编程风格。 (9) 通过实训检查自己学习上的不足,达到熟练掌握C语言的基本知识和技能。 (10)C语言程序设计是计算机专业重要的课程,C语言功能丰富、表达能力强,使用灵活方便、可以编写实用的应用软件。 (11)灵活使用语言进行程序编写,巩固有关语句,变量定义、输入、输出、结构体,指针、文件操作等概

3、念和方法。 (12)提高调试程序的技能,提高软件编写的能力。学会编制结构清晰、风格良好、数据结构适当的语言程序,从而具备解决综合性实际问题的 能力。 2 二、课程设计的题目:学生成绩管理系统三、课程设计报告内容 学生成绩数据包括:学号,姓名,语文,数学,英语,总分 使用结构体数组存放学生成绩 typedef struct stud /*学生成绩数据结构*/ char id10; Char name20; Int yuwen; Int shuxue; Int yingyu Int totalscore; stud; stud stN; /* 学生成绩数组*/ #define N 60 实现功能:

4、 输入数据 删除数据 查询数据 修改数据 显示数据 数据可保存在文件中 数据可从文件中读出 有命令菜单提示 编写的程序要求完整实现功能,用户介面友好,程序运行可靠。 5. 设计的步骤 (1)需求分析:了解基本原理,确定软件的基本功能,查找相关资料; (2)总体设计:确定软件的总体结构、模块关系和总体流程; (3)详细设计:确定模块内部的流程和实现算法。 (4)上机编码和调试; (5)实际数据运行测试。 3 6各个功能模块和函数命名 main() 主控函数 输入某班某学期成绩 add_class_term_score () 指定班级和学期,确定成绩class_term () 文件名 个学生的成绩

5、输入inputscore () N 将所有记录添加写入文件尾addtoText () 部 inputfromtext () 从成绩文件读入所有数据 writetotex t() 将所有记录写入文件返回记查找并显示一个记录queryrecord () , 录位置 deleterecord () 删除指定的一条记录 menu_select() 菜单函数删除指定的一个同学的成delete_a_record() 绩记录 查找指定学号同学的记录,query_a_record( ) 并显示 修改指定学号的学生成绩 revise_a_Record () 4 7各个功能模块介绍: (1).输入成绩 指定班级名

6、称和学期 输入若干条记录 添加存入指定成绩文件尾部 (2).删除某同学的成绩信息 指定班级名称和学期 输入学生的学号 打开该班该学期的成绩文件读入所有数据 查找指定学号的成绩记录,找到则删除该记录 把所有数据写回原数据成绩文件 (3). 查询某学生成绩 指定班级名称和学期 输入学生的学号 打开该班该学期的成绩文件读入所有数据 查找指定学号的成绩记录并显示该记录 (4). 修改某学生成绩 指定班级名称和学期 输入学生的学号 打开该班该学期的成绩文件读入所有数据 查找指定学号的成绩记录,找到显示该记录 输入该生正确的成绩 把所有数据写回原数据成绩文件 (5). 退出系统 5 8处理流程 学生成绩系

7、统主界面模块流程图 开始 清屏 显示菜单 输入选项 查找记录 修改记录删除记录增加记录 结束 6 四总结 学生成绩管理系统的编写,看似杂乱无头绪,实际上却并不如此。它的每一个功能都能分成模块,有句话说的好,大事化小,小事化了。C语言编程也正式如此,把一个大的程序分为若干相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,这样不仅降低了难度还使得思路清晰,很容易编写出要做的程序,从而为设计一些较大的软件打下了良好的基础。 分析问题: 学生成绩管理的整体功能都包括输入数据、删除数据、查询数据、修改数据、显示数据 五大板块。 设计的数据对象包括整形:各科成绩和总成绩 字符型:姓名、学号。 程序

8、的编译与运行: (1) 查找错误是一件让人闹心的事,但是要注重技巧,注意平时经验的积累。才能在最快的时间找出错误 (2) 用心去查找,也许你会发现错误并不是很难找 (3) 程序编译成功不要满足现状,要积极测试程序的可用性,对功能不理想,存在缺点的地方,积极的改进,完善。 7 五心得与感想 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能! 首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,强化了知识! 其次,这次作中所碰到的题目,在实训中已经接触过,所我们都比较深知这些题目的

9、要求和算法,因次在编写小程序时比较快,而且算法也是比较简化,运算准确。鉴次我明白很多编程题要经过多次编写修改与调试,才会得到最简略的算法。 再次,平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用! 虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更

10、加深化丰富! 这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最 8 后的时间里才上交的作业。每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业! 这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简

11、单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。 在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。 在实训过程中,使我良好的锻炼了自己,首先是兴趣方面,通过编写通讯录管理系统使我更加喜欢编程,使我从以前的迷茫状态中解脱出来,使我了解了编程的真正意义。我想这对我以后的人生有着很大的帮助。其次通过编写通讯录管理系统使我对写程序有了一定的思路,不像以前无从下手,使我理解了算法的意

12、义,使我懂得了模块化思想的好处。 通过一个星期的编写代码,使我对书本上的知识有了更深的理解,甚至有很多不懂的问题在这过程中自然而然的理解了。对期末考试更有了信心。在黄爽老师的悉心指导下,我对C语言有了更深刻的理解,对程序的算法,数据的定义,程序的改错等方面的能力有了很大提高,自身的注意力,耐心,和对编程的兴趣有了很大增长,使我获益匪浅。 9 六C语言源程序 #include string.h #include stdlib.h #include stdio.h #include ctype.h #define N 60 typedef struct stud char id10; char n

13、ame20; int yuwen; int shuxue; int yingyu; int totalscore; stud; stud stN; int menu_select(); void add_class_term_score(); void class_term(char filename20); int inputscore(stud st,char filename); void addtotext(stud *st,int i,char filename20); int inputfromtext(stud *st,char filename20); void writeto

14、text(stud *st,int i,char filename20); 10 void delect_a_record(); int queryrecord(stud st,int n,char num10); void deleterecord(stud st,int n,int i); void query_a_record(); void revise_a_record(); void creatfile(); main() for(;) switch (menu_select() case 1:creatfile();break; case 2:add_class_term_sco

15、re();break; case 3:delect_a_record();break; case 4:query_a_record();break; case 5:revise_a_record();break; case 0:printf(Have a good luck!Bye-Bye!n ); system(pause); exit(0); int menu_select() 11 char c; do system(cls); printf(*学生成绩管理系统*n); printf( | 1.创建文件 | n); printf( | 2.输入数据 | n); printf( | 3.删

16、除数据 | n); printf( | 4.查询数据 | n); printf( | 5.修改数据 | n); printf( | 0.退出 | n); printf(*n); printf(GIVE YOUR CHOICE(0-5):); c=getchar(); while (c5); return(c-0); void add_class_term_score() int number; stud stN; char filename20; class_term (filename); 12 ?牰湩晴尨输入若干学生成绩n); number=inputscore(st,filename);

17、 addtotext(st,number,filename); void class_term(char filename20) char class10,term2; printf( input classname and term :); scanf(%s,class); scanf(%s,term); strcat(class,_); strcpy(filename,class); int inputscore(stud st,char filename) int i=0; char sign=Y; while(sign!=n&sign!=N) printf(students id:);

18、 scanf(%s,sti.id); printf(students name:); scanf(%s,sti.name); printf(students yuwen:); scanf(%s,sti.yuwen); 13 printf(students shuxue:); scanf(%s,sti.shuxue); printf(students yingyu:); scanf(%s,sti.yingyu); gets(filename); sti.totalscore=sti.yuwen+sti.shuxue+sti.yingyu; printf( input any more recor

19、ds?(Y/N); scanf(%c,&sign); i+; return (i); void addtotext(stud *st,int n,char filename20) int i=0; FILE *fp; printf(write records to text file.n); if (fp=fopen(filename,ab)=NULL) printf(cannt open the filen); system(pause); return; while (in) 14 fwrite(&sti,sizeof(stud),1,fp); i+; fclose(fp); printf

20、(successed!n); int inputfromtext(stud *st,char filename20) int i=0,num; FILE *fp; if(fp=fopen(filename,b)=NULL) printf(cannt open the filen); system(pause); return(0); while(!feof(fp) fscanf(fp,%s%s%d%d%d%d,sti.id,sti.name, &sti.yuwen,&sti.shuxue,&sti.yingyu,&sti.totalscore); i+; fclose(fp); printf(

21、successed!n); 15 system(pause); return(i); void writetotext(stud *st,int n,char filename20) int i=0; FILE *fp; if(fp=fopen(filename,b)=NULL) printf(cannt open the filen); system(pause); return; fprintf(fp,%dn,n); while(in) fwrite(&sti,sizeof(stud),1,fp); i+; fclose(fp); printf(successed!n); void del

22、ect_a_record() char filename20,stuid10,ch; 16 stud stN; FILE *fp; int n,i; class_term(filename); ?瀠楲瑮?输入删除的学生的学号n); scanf(%s,stuid); n=inputfromtext(st,filename); i=queryrecord(st,n,stuid); ?椠?椨?牰湩晴尨确认删除吗?YN); ch=getchar(); if(ch=Y|y) deleterecord(st,n,i); writetotext(st,n-1,filename); int queryreco

23、rd(stud st,int n,char num10) int i=0; while(strcmp(sti.id,num)!=0&in) i+; if (i=n) printf(ot find!n); return(-1); printf(his(her) name is %sn,sti.name); printf(his(her) score is : yuwen= shuxue= 17 yingyu= totalscore=%dn, sti.yuwen,sti.shuxue,sti.yingyu,sti.totalscore); return(i); void deleterecord(

24、stud stud,int n,int i) int j; if(in-1) ?灻楲瑮?位置错误n);return; for(j=i;jn-1;j+) strcpy(studj.id,studj+1.id); strcpy(studj.name,studj+1.name); studj.yuwen=studj+1.yuwen; studj.shuxue=studj+1.shuxue; studj.yingyu=studj+1.yingyu; studj.totalscore=studj+1.totalscore; printf(delete successed!n); return; void

25、 query_a_record() char filename20,stuid10; stud stN; FILE *fp; 18 int n,i; class_term(filename); ?牰湩晴尨输入查找学生的学号n); scanf(%s,stuid); n=inputfromtext(st,filename); queryrecord(st,n,stuid); void revise_a_record() char filename20,stuid10; stud stN; FILE *fp; int i,n; class_term(filename); ?瀠楲瑮?输入需要修改的学生

26、学号n); scanf(%s,stuid); n=inputfromtext(st,filename); i=queryrecord(st,n,stuid); ?椠?牰湩晴尨输入正确的成绩n); printf(students id:); scanf(%s,sti.id); printf(students name:); scanf(%s,sti.name); printf(students yuwen:); scanf(%s,sti.yuwen); 19 printf(students shuxue:); scanf(%s,sti.shuxue); printf(students yingyu:); scanf(%s,sti.yingyu); gets(filename); sti.totalscore=sti.yuwen+sti.shuxue+sti.yingyu; writetotext(st,n,filename); void creatfile() FILE *fp; if( (fp=fopen( aibai.txt, wb)=NULL) ?牰湩晴?文件创建失败n ); return; fclose( fp ); 20

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1