2023年6月28日发(作者:)
\ 实践与经验 \ 浅谈C语言程序设计在图书查询系统中的 正确打印记录应用 卢彭龙 . 林开契 (1.温州市公交广告有限公司,温州325000;2.温州市体检中心,温州325000) 摘要:利用C语言进行程序设计,理解和运用结构化程序设计的思想和方法.初步掌握开发一个 小型实用系统和学会调试一个较长程序的基本方法.利用流程图或N—s图算法解决图书 正确打印记录的设计与实现。 关键词:C语言:流程图:N—S图 1 程序设计的目的与基本要求 通过建立关系数据模型.构造一个符合数据库规 范化理论的小型数据库 自由选择开发工具.开发一个 能应用与进行信息管理工作的数据库管理软件.在开 发中涉及到关系数据库管理系统的绝大部分应用设计 技术。系统功能如下: 结点 接着向新结点输入数据.最后使this一>flext为 NULL.也就是使这个结点不再指向其他结点. 再看当 又增加新结点时的情况.在进入new rec0rd函数时.先 用malloc函数开辟新结点 由于head值不为“空”.故 执行if语句的else部分.使this指向第一个结点(用 this=head使两个指针都指向第一个结点) 接着执行 while循环,由于this一>next不是NUI_ L.执行循环体 this一>next.它的作用是把this所指向的下一个结点的 地址赋给this 就是使this后移一个结点.this由原来指 向第一个结点改为指向第二个结点了 、此时.this一>next 值已是NULL了.不再执行循环体 图书馆图书查询记录打印 ①浏览新书及全部书籍信息; ②分类引导检索新书及全部书籍信息; ③按书名、作者、ISBN号、出版年、主题词、书名内 关键字等查询书籍信息: ④输入借阅书籍的相关信息: ⑤按借书册数的多少建立借书排行榜; ⑥应用条形图、饼形图、柱状图、折线图等图表统 计.输出各种书籍收藏结构: 8 ⑦显示图书室的规章制度,有关系统等信息。 5 l 2 3 4 按 书 2 设计思路 整个程序划分为九个不同功能的模块.其模块图 如图1所示: 打 删 新 印 除 记 清 记 录 包 录 修 改 号 查 记 找 录 打 印 按 按 按 出 价 册 版 9 格 数 日 返 态 查 期 回 找 找 查 打 打 找 印 印 打 6 7 第一个模块是neW record函数.在第一次调用时, head的值为NULL.此时应将新结点链接在head之后, 令head=new,就是将新结点的地址赋给head.使haed指 闭1 印 向新结点 接着执行this=new.使this指向当前插入的 收稿日期:2011—03—08 修稿日期:2011—05-10 作者简介:卢彭龙(1977一),男,浙江温州人,助理工程师,本科,研究方向为广告印刷喷绘与计算机辅助设计 @ 现代计算机2011.06 竺竺三 // 第二个模块是list函数.是打出清单.首先是this 指向第一个结点,然后通过prinff语句把this指向的结 点的信息输出 然后用this=this一>next使this指向下一 个结点,再输出信息,直到this为空,就结束输出。 第三个模块是del函数.是删除记录.先输入要删 除记录的书号.然后让this指向第一个结点.判断这个 结点的书号是否与输入的书号相同.若相同输出该结 点的信息.接着提示是否要删除该记录.若执行则将记 录删除 第四个模块是change record函数,改变记录,先输 人要改变记录的书号.然后让this指向第一个结点.判 断这个结点的书号是否与输入的书号相同.若相同输 出该结点的信息.接着提示是否要修改该记录:若不同 或者用户选择不修改该记录.则让this指向下一个结 点.继续查找.找到再打印记录。 第五个模块是booknumber函数.先输入要查找记 录的书号.然后让this指向第一个结点.判断这个结点 的书号是否与输人的书号相同.若相同输出信息:若不 同,则让this指向下一个结点,继续判断.直到this为 空。 第六个模块是price函数.先输入要查找记录的价 格.然后让this指向第一个结点.判断这个结点的价格 是否与输入的价格相同,若相同输出信息:若不同.则 让this指向下一个结点.继续判断.直到this为空。 第七个模块是number函数.先输人要查找记录的 书的册数.然后让this指向第一个结点.判断这个结点 的书的册数是否与输入的册数相同.若相同输出该结 点的信息:若不同.则让this指向下一个结点.继续判 断.直到this为空 第八个模块是printdate函数.先输入要查找记录 的书的出版日期.然后让this指向第一个结点.判断这 个结点的出版El期是否与输入的书的出版El期相同. 若相同输出该信息:若不同.则让this指向下一个结 点,继续判断.直到this为空 第九个模块是exit()函数终止程序。当用户想退 出该系统时按9就可以退出该系统了 3 流程图 笔者做的课程设计经历了选题、调研、熟悉开发环 境,查找类似的相关系统的资料、系统概要设计、数据 库结构设计、功能模块开发、系统调试。该系统包含了 八个自定义函数.它们之间相互独立。每一个都是功能 单一、结构清晰、容易理解的小程序。执行该程序时从 它的main()函数的第一个花括号开始,依次执行后面 的语句.直到最后的花括号为止。如图2所示的流程图 反映了我们的基本的思路过程 图2 4 系统功能分析 4.1定义变量 本程序里面变量包括整型(int)、长整型(1ong)、字 符型(char)、单浮点型(float)、双浮点型(double)以及无 值型(void)和指针。无值型表示函数没有返回值。例 如: int month; 整型.月份*/int day; 整型.天数 / int year; 整型.年¥/ void search_booknum(); 按书号查找 void search— price();,术按价格查找 /void search_number(); 按册数 查找 / void search_day();,水按出版13期查找 /FILE fp; 定义文件指针 / fp=fopen(”book.Yea PI I1wb+”);,丰新建文件 / new= 现代计算机2011.06 @ head:,木移动指针 / 4.2函数方式 (1)经典方式 其形式为:函数类型函数名(): (2)ANSI规定方式: 其形式为:函数类型函数名(数据类型形式参 数。数据类型形式参数….): 需要指出的是一个程序必须有一个主函数.其他 用户定义的子函数可以是任意多个。这些函数的位置 也没有什么限制,可以在main()函数前,也可以在其 后。 不过每个函数都是独立的代码块.函数代码归该 函数所有.除了对函数的调用以外.其他任何函数中的 任何语句都不能访问它 例如使用跳转语句goto就不 能从一个函数跳进其他函数内部 除非使用全程变量. 否则一个函数内部定义的程序代码和数据.不会与另 一个函数内的程序代码和数据相互影响。所有函数的 作用域都处于同一嵌套程度.即不能在一个函数内再 说明或定义另一个函数 一个函数对其他子函数的调用是全程的.即是函 数在不同的文件中.也不必附加任何说明语句而被另 一函数调用。也就是说一个函数对于整个程序都是可 见的。 4.3函数的变量作用域 变量是可以在各个层次的子程序中加以说明.也 就是说.在任何函数中.变量说明有且只允许在一个函 数体的开头处说明.而且允许变量的说明(包括初始化) 跟在一个复合语句的左花括号的后面.直到配对的右花 括号为止 它的作用域仅在这对花括号内.当程序执行 到出花括号时,它将不复存在。当然内层中的变量即使 与外层中的变量名字相同.它们之间也是没有联系的。 (1)main()主函数: 主函数功能比较简单.调用九个函数,包括: menu(): 调用菜单函数 / neW record(): 调用新记录函数 / list():break;/*调用清单函数 , del record();break;/*调用删除记录函数 / changerecord();break;,木调用修改记录函数¥/ —search booknum();break: 调用按书号查找函数 / search price();break; 调用按价格查找函数 / @ 现代计算机2011.06 search—number();break;/ 调用册数查找函数 / search_dayf);break; 调用出版日期查找函数 / (2)头文件.预定义函数以及全局变量和函数原型: 必须在主函数的前面先写必须的头文件.预定义 函数以及全局变量和函数原型.包括#include”stdlib.h”/ 其他函数 ,样include”stdio.h”/ 输入输出函数 / #include”string.h” 字符串函数*/#include”graphics.h” / 图形函数:l:/共四个函数 4.4 menu()主菜单显示 void menu() {gotoxy(30,2);printf(”BOOK SYSTERM”); gotoxy(30,4);prinff(”1.creat a record”); gotoxy(30,6);prinff(”2.print list”); gotoxy(30,8);prinff(”3.delete a record”); gotoxy(30,lO);printf(”4.change a record”); gotoxy(30,12);printf(”5.search on booknumber”); gotoxy(30,14);printf(”6.search on price”); gotoxy(30,16);prinff(”7.search on number”); gotoxy(30,18);prinff(”8.search on printdate”); gotoxy(30,20);printf(”9.exit systerm”); gotoxy(28,25);printf(”please choose:”);} 该菜单是显示的程序运行的最终结果.不同的选 择会得到不同的结果 4.5 clearviewport()清屏 该函数的功能和clrscr()的功能相似。该函数是清 屏函数.功能是为了消除掉前一次在屏幕上的显示 由 于每次的操作都会在屏幕上留下输入信息或显示结 果。所以在做其他操作时需要将前一次的信息消除掉, 以免信息重叠 5 调试过程及现象、调试过程中出现的问题 及解决方法 编辑完C源程序并保存后.可应用单步运行程序 进行执行调试.这样能够让我们更清楚地了解程序的 执行过程 没有人会在写程序的时候不出错误 如果只是语 法错误.那么TC执行程序时就会指出.但TC对逻辑 错误就无能为力了 逻辑错误不同于语法错误.程序可 能是一系列语法正确的指令.但结果却是错误的 在长 而复杂的程序中.逻辑错误可能会非常隐蔽和模糊。某 三 与错误的原因联系起来 // 序在运行时出现的故障现象多种多样。而且通常很难 输入的数据中包含错误或者输入数据的格式不符 合要求当然也会影响到程序的运行结果.特别是在数 据量比较大.而又采用键盘直接输入数据时更容易产 些典型的情况包括:程序对一个没有预见到的变量的 值错误地进行了处理.或计算的顺序错了。选择了错误 的工作区或主索引.在使用了一系列的不同的表之后 没有恢复先前的环境等 程序中的错误大致可以分为 三类:①程序编译时检查出的语法错误;编译错误通常 是编译者违反了C语言的语法规则.例如保留输入错 生这类错误 我们建议在数据量比较大时采用文件方 式存放数据.程序通过文件读写来输入输出数据.这样 误、大括号不匹配、语句少分号等:②连接时出现的错 误:连接错误一般由未定义或未指明要连接的函数,或 者函数调用不匹配等因素引起:③程序运行过程中的 错误 通常所说的运行错误有两种.一种是逻辑错误, 可以通过编辑数据文件来修改其中的错误.并且在重 复计算或者调试程序时也就不用反复输入数据了。这 种方法非常适宜于科学和工程计算类应用程序中的数 即程序的实际运行结果核对程序结果的期望不符:另 一据处理 另一种方法是避免使用C语言的scanf()函数 输入数据.而代之以自行编写的、具有比较完善的数据 校验功能的输入模块 种是程序设计上的错误.但它躲过了编译程序和连 接程序的检查.通常表现为突然死机、自行热启动或者 输出信息混乱 相对于编译和连接错误来说.运行错误的查找和 上述这种方法通常用于数据处理、事务管理等比 较复杂的应用程序的开发中.以便记录正确打印.通常 将数据输入和用户界面等模块结合起来统一进行设 判断更为困难 编译和连接错误分别由编译程序和连 接程序检查.尽管有时它们报告的出错信息和错误的 实际原因之间有一些差距.但总还可以作为查错时的 一计.这需要较高的编程技巧。 参考文献 种参考。而运行错误就不同了.很少或根本没有提示 信息.只能靠经验来判断错误的性质和位置。下面简单 的是笔者运行错误的调试方法 一[11严蔚敏,吴伟民.数据结构.北京:清华大学出版社,2002 『21谭浩强,张基温,唐永炎.C语言程序教程.北京:高等教育 出版社.20o3 种逻辑错误是由于在设计程序的算法时考虑欠 周到引起的.例如对边界和特殊情况未作妥善处理 另 一『31谭浩强.C语言程序设计.北京:清华大学出版社,1991 『41张基温,谭浩强.C语言习题集与上机指导.北京:高等教 育出版社.1993 『51徐士良.计算机软件技术基础.北京:清华大学出版社,2005 种常见的逻辑错误是由于程序输入时的打字错误造 成的,例如将判断条件中的“)=”误输入为“)”,将相等 判断“=:”误输入为赋值号“=”等 含有这类错误的程 Simple Discussion on the Application of C Language PrOgramming in Right Print Record of Library Query System LU Peng—long .LIN Kai—qi (1.Wenzhou Public Transict Advertisement Co.Ltd,Wenzhou 325000;2.The Check-Up Center ofWenzhou,Wenzhou 325000) Abstract:Using C language programming design,understanding and application idea and method of structured programming,carries out the development of a small practical system,and studies the debugging technique of the basic method for relatively long programming.Based on the method of either flow chart or N—S chaa,designs and realizes the library query system. Keywords:C Language;Flow Chaa;N-S Chart 现代计算机2011.06 @
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687897170a54901.html
评论列表(0条)