程序设计实训

  • 格式:doc
  • 大小:429.50 KB
  • 文档页数:19

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训一图书管理系统

实训目的:

1.掌握结构化程序设计的基本思想;

2.熟练掌握结构以及指针的设计和应用;

3.熟练掌握文件的存取方法;

4.了解综合系统设计的基本原理;

5.提高C语言程序设计的综合应用能力。

实训任务:

开发一个简单的图书管理系统,具体功能要求如下:

1.图书管理:增加图书、修改图书、删除图书、统计图书;

2.借阅管理:查找图书、借阅图书、归还图书、借阅图书统计;

3.读者管理:申请读者卡、删除读者卡、修改读者卡;

4.馆员管理:添加管理员、修改管理员信息、删除管理员。

根据以上功能说明,设计馆员信息、读者信息、读者卡信息、图书信息的存储结构,数据存储在文件中,界面要求有合理的提示,每个功能可以设立菜单,根据提示可以完成相关的功能要求。

实训设计:

1.基本数据结构设计:

2.系统结构设计:

系统结构设计说明了整个系统的功能模块结构以及调用关系,本设计采用自顶向下的结构化方法,将每个模块自顶向下展开。

3. 模块设计:

(1)主控模块

在该模块中,提供系统的主菜单,通过主菜单用户选择图书管理、借阅管理、读者管理、馆员管理和退出系统。

(2)其它

实训二链表的基本操作

一程序设计目的

1.掌握结构化程序设计的基本思想;

2.熟练掌握结构以及指针的设计和应用;

3.了解综合系统设计的基本原理;

4.掌握C语言程序的综合应用。

二程序设计任务内容

假设学生信息含有:学号、姓名、成绩。用户可以对学生记录进行建立、插入、删除、更新、查找和输出等管理操作。

要求用单链表表示一个班的学生信息,基本操作如下,用菜单形式实现这些功能(菜单要能重复使用):

1、建立单链表输入N个学生的学号、姓名、成绩,并建立成一个单链表。当输入学号

为0时,结束。

2、查找单链表输入学号,查找该学号的学生的基本信息,若存在,输出该学号的基本

信息(学号、姓名、成绩),不存在,输出查无此人的信息。

3、插入单链表输入要插入学生的基本信息(学号、姓名、成绩),将其插入到单链表的

末尾。

4、删除单链表输入要删除学生的学号,若链表中存在对应记录,将该结点删除,若不

存在该学号,则不作删除操作。

5、更新单链表输入要更新的学生的学号,若链表不为空,并且若存在对应学号,则用

新的成绩代替原来成绩,若不存在该学号,则不作更新操作。

6、逆置单链表将一个单链表按相反的顺序重新排列。

7、输出单链表按单链表的顺序输出各学生的信息。

0、退出系统算法结束

实训三通信录管理

实验要求

1.核心数据结构用到的结构体要采用动态内存分配和链表结构。家庭住址也要求存储在动态分配的内存中,以节约内存。内存的起始地址存储在结构体的成员指针addr中。

2.使用文件进行存储和管理。程序启动时可从文件中读取通信信息,或从键盘输入通信信息;运行过程中如添加或删除记录时也可对文件进行存取;退出前可选择将通信信息保存到文件中。

3.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。

4.对系统进行功能模块分析、画出总流程图和各模块流程图。

5.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。

6.通过命令行相应选项能直接进入某个相应菜单选项的功能模块。

程序设计任务内容

该程序具有以下基本功能:

◆添加:增加一个或几个人的记录,并可选择继续输入或退出。

◆查询:可按姓名查找某人记录,也可查找某个组别的所有记录。若找到,则显示所有人的记录,否则提示未找到,无论查找成功否,应还可选择继续查找或退出。

◆删除:删除已输入的记录。输入姓名查找要删除的记录,若找到,提示是否确定删除,若选择是,则删除该人信息,若选择否,则取消;若没找到,提示无此人信息。

◆修改:修改某人的记录。输入姓名并查找,若找到,显示该人的所有信息,并可进行修改;否则提示无此人信息

◆排序:可分别按分组、编号或姓名进行排序。

添加功能:

◆登录模块:该模块在进入主界面之前先执行,用于对进入系统的用户进行身份验证,若用户输入正确的用户名及用户密码,则进入主界面,否则输入超过3次错误则退出程序。

◆系统帮助:显示开发者姓名、班级、开发完成日期、版本号和指导老师等信息。

详细设计说明

明确实验内容,进行需求分析后,开始着手设计系统用户数据结构和功能实现模块。

系统用户数据结构:

1、记录联系人通信信息的数据结构,包含编号、分组、姓名、固话、手机号、QQ号码、E-mail、家庭住址等信息

typedef struct k

{

long num; /* 编号 */

char group[16]; /* 分组 */

char name[16]; /* 姓名 */

char hphone[8]; /* 固话home_phone */

char mphone[12]; /* 手机号mobile_phone */

char qq[12]; /* QQ号码 */

char email[20]; /* e-mail地址 */

int len; /* 家庭住址或通信地址长度 */

address * addr; /* 家庭住址或通信地址 */

struct k *pre; /* 前向链表指针 */

struct k *next; /* 后向链表指针 */

}contact;

与常用数据结构的不同之处在于:

◆家庭住址在此结构体中采用的存储方式并非直接使用字符数组,取而代之的是字符型指针。并且同时多了一项附加内容,通信地址长度 int len。该长度可用函数strlen()求出,但是作为一结构体的成员应有其用意。考虑到联系人内容需及时修改和保存,涉及文件操作,其中fread(),fwrite()二进制读写函数参数均包含字符个数要求,len置于指针addr前用意可由此得出。

◆核心数据结构用到的结构体要求采用动态内存分配和链表结构,题中采用的是双向链表。我们知道进行链表删除操作必须知道该元素的前驱,单向链表需重新声明一指针,双向链表可省掉该操作直接通过 current->pre 实现。其便利之处具体体现在联系人的删除操作。