您好, 访客   登录/注册

C语言指针在项目课程中的应用

来源:用户上传      作者:

  摘要:在C语言程序设计教学过程中,发现学生对C程序中指针的学习和掌握比较困难,学习以后运用困难等问题,提出了在项目课程中应用文件指针和数组指针对文件和数组元素的访问,解决学生学习之后应用困难和不会使用的困难,同时让学生感知指针给程序执行带来的高效性。让学生切实获得学习C语言程序设计课程的成就感,从而激发学生的学习兴趣,提高学习效率。
  关键词:数组指针;文件指针;教学效果;项目设计
  中图分类号:TP399
  文献标识码:A
  文章编号:1009-3044(2019)36-0078-02
  C语言程序设计作为计算机科学与技术、软件工程等专业的专业基础课程,该课程知识细节太多,表达形式多样。内容看似简单但要掌握本质内容很难,同时学生学习之后好像无用武之地,达不到学生心中预期的目的。有的学生在学习过程就逐步失去了兴趣。为了激发学生的学习热情,只好在教学过程中找一些趣味性的习题或项目课程供学生思考和编写,通过编写程序学生才知道分支结构、循环结构反复使用可以解决很复杂的问题,同时分支结构和循环结构的嵌套会带来过多的逻辑性错误,有的学生碰到的问题太多而自己又没有能力解决时也容易放弃学习。这个时候任课老师起到关键性的作用,一定要帮助学生渡过难关,激励他们战胜困难,还鼓励他们不要局限于书本和参考答案,要有自己独特的思维方式。哪怕自己开始写的程序层次结构不太精炼也坚信自己想法的正确性。只要通过十个左右的项目课程独立完成,学生一定能够在程序设计或软件开发中有较深的造诣。所以在教学过程中教师一定要抓住这个关键时期。当然这无形中给教师增加了额外的工作负担,我认为这是值得的,我们的初衷就是为了学生成才,学生成才给我们带来成就感和幸福感。那么怎么才能设计好基本符合学生要求的项目课程呢?项目课程过难打击学生的积极性,过于简单又不能激发学生的编程动力,只有在掌握学生的实际情况之后,从学生的实际出发去进行项目设计。设计项目课程应用遵循这三个原则:需求性原则[4];认知性原则[6];兴趣性或实用性原则。文献㈣中提出了新设计的项目课程体系既对原有课程体系不造成重大的颠覆,又能适应新工科建设所提出的培养面向未来工程人才的要求;文献[2-3]提出了项目课程丰富了课堂教学的理论和实践基础,提升学生的专业能力和职业素养。本文旨在以学生成绩管理系统项目课程为例,让学生利用指针来进行项目课程的设计,从而通过项目课程的设计掌握C语言程序设计指针的目的。
  1成绩管理系统需求分析
  以铜仁学院学生成绩管理系统为例,分析成绩管理系统中所需要的功能模块:数据录入、数据输出、数据插入、数据删除、数据修改、数据查找、数据统计、文件读、文件写九个模块。文件读/写模块需要用C语言的文件指针来实现,这是在没有学习数据库之前用C语言解决实际问题的唯一途径,这是学生掌握文件指针最有效的办法,通过对文件的使用免去之前程序设计平凡数据输入的问题,让学生知道使用文件给程序设计带来很多方便,从而更加明确学习C语言文件的重要性。数据操作的七个模块要平凡的对数组或者链表进行读写,若是链表存储的话就直接使用指针访问数据,这对学生利用指针编写和掌握指针大有益处。若是用数组存储数据,当然可能通过数组十下标的方式进行访问数据,这样编译器就要平凡的计算数组每一個元素的地址,使程序的执行效率不高。设计该项目的目的就是要求学生用指针去访问数组中元素,这样编译器就不会平凡的去计算数组元素的地址,从而提高程序的执行效率。
  2教学案例平台总体设计
  2.1系统总体框架
  经过对系统的需求分析,拟可以增加一个用户登录模块,基本保证用户数据的安全性。各模块的系统结构示意图如图l所示。
  2.2系统功能设计
  用户登录主要是由用户自己设置一个登录账号,保证数据的基本安全。数据录入模块就是用数组指针访问数据元素,通过文件指针读取文件而保存数据。数据输出模块是利用文件指针打开文件,再利用数组指针访问数组元素。其他数据的插入、删除、修改、查找,统计模块都是同样用指针去读写文件和访问数组元素。文件的读/写模块保证对数据的保存和打开。通过对文件指针的使用就保证了数据可保存在文件中,不会像以往编程那样,每一次运行都要重新录入数据,而且程序的运行效率特别低。使用指针保证程序执行高效率,满足用户的使用要求。
  3成绩管理系统功能的实现
  3.1各功能模块的实现
  3.1.1数据类型的定义
  struct CJB//定义CJB是一种新的数据类型
  (
  char xh[14];//定义学号
  char xm[18];//定义姓名
  char xb[6];//定义性别
  float gsh,xsh,cyy,yy,zf,pjf.//定义高数、线数、C语言、英语、总分、平均分
  //课程是根据实际情况而定,这里只举例
  };
  struct CJGLXT//抽象数据类型的定义
  {
  //数据
  intLength;//记录管理系统中数据的个数
  int realsize;//记录数组的长度
  CJB *data;//该指针用来存放系统中数据的起地址,也就是存放数组的起地址
  //功能函数
  void init0;
  //预处理,主要是给变量赋初值和分配初始空间
  void datainsert(); //插人数据
  void datadelete(); //删除数据
  void dataprint0; //输出数据
  void datamodify(); //修改数据   void dataseek(); //查找数据
  void datasort(); //数据排序
  //辅助函数
  void user();
  //用户登录
  void datasave(); //保存数据
  void dataopen0; //打开数据
  void createfile0; //创建文件
  );
  3.1.2功能模块的实现
  由于实现各功能模块的代码很多,由篇幅有限,这里只列举学生实现的数据删除模块的代码。
  void CJGLXT::datadelete()
  {
  dataprint();
  inti,j;
  printf'(”请输入要删除数据的序号:”);
  scanf'(”okd”,&i);
  if(i>=0&&i
  (for(j =i;j
  Length-;
  printf'(”数据删除成功,请保存数据:/n);
  datasave();
  }
  else printf'(”你输入的序号不正确,不能做删除操作,谢谢你的使用\n”);
  }
  3.2软件的测试
  由于测试的功能模块较多这里只对输出模块进行测试,学生已经对每一个功能模块进行测试,输出模块的测试结果如图
  2所示。
  4结束语
  通过对成绩管理系统的设计与实现,对C语言课程中的数组、函数、指针、结构体、文件等几乎所有的内容都包含在其中,特别是学生对指针的使用有了较为深刻的理解,学生的编程能力得到了很大的提升,懂得利用C语言解决实际问题的方法和途径、明白学习C语言程序设计也可以解决实际问题。通过对成绩管理系统的实现,学生可以用类似的方法进行其他应用程序的开发与学习,从而培养学生的学习兴趣,让学生在学习中找到快乐和成就感,这是教育的需求,也是对人才培养的需求。对C语言项目课程来讲,这个项目是属于综合性比较强的,真对于每个章节,教师可以根据学生的实际设计较为合理的项目课程。不要让学生的学习枯燥乏味。
  参考文献:
  [1]徐利梅,谢晓梅,陈彦,等.新工科专业课程体系重构:从新生项目课程到高峰体验项目课程[J].高等工程教育研究,2019(4):33-39.
  [2]任晓静.高职项目课程教学内容设计研究[J].中国校外教育,2019(18):160.
  [3]赵海涛,李森萍,吕志刚,等.基于教学过程对接生产过程的施工技术项目课程教学创新与实践[J].高等建筑教育,2019,28(4):90-98.
  [4]赵建中,邓全明.培养创业型人才需彰显人文需求原则[J].淮北职业技术学院学报,2010,9(1):94-95.
  [5]李人晴.浅谈项目课程的教学效果评价体系的构建[J].高教学刊,2019(1):63-65.
  [6]魏婧婧.信息设计中的认知原则[J].大众文艺,2016(22):54.
  [7]课浩强.C语言程序设计[M].3版.北京:清华大学出版社, 2012:20-150.
  [8]严蔚敏,吴伟民.数据结构[M].北京:清華大学出版社,2012:12-180.
  【通联编辑:王力】
  收稿日期:2019-09-28
  作者简介:王军(1967-),男(土家族),贵州德江人,副教授,大学本科,研究方向为算法设计与分析、数据挖掘等。
转载注明来源:https://www.xzbu.com/8/view-15123229.htm