linux设计实验报告-模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆交通大学信息学院Linux操作系统设计实验报告成绩:
班级:通信二班
学号: 631206040220
姓名:周丙相
实验所属课程: Linux操作系统
实验室(中心):信息学院机房
指导教师:闫果
实验时间:
目录
一、课程设计题目 (3)
二、课程设计项目名称 (3)
三、课程设计目的及意义 (3)
四、课程设计题目功能分析 (3)
(一)设计题目功能描述 (3)
(二)数据结构设计 (4)
(三)数据存取 (5)
(四)数据录入方法设计 (5)
五、算法分析与流程 (6)
(一)函数定义 (6)
(二)函数流程图 (6)
(三)部分函数实现代码 (10)
六、项目实现过程 (12)
(一)在Linux操作系统下的源文件编写 (12)
(二)在Linux操作系统下完成源文件的编译 (14)
(1)使用make命令完成源程序的编译 (14)
(三)在Linux操作系统下运行程序 (15)
七、项目测试结果 (15)
(一)查看桌面的生成文件 (15)
八、总结 (16)
(一)项目小结 (16)
(二)项目改进 (17)
(三)体会 (17)
一、课程设计题目
在Linux操作系统下实现C语言版本的学生信息管理系统。
要求:
1.实现管理系统的基本功能:数据录入,数据存取,数据浏览,数据查询等
2.所有和输入输出相关的函数全部写在gui.c文件中
3.所有管理功能函数写在smsfunc.c文件中
4.主函数写在main.c文件中
5.编写makefile对源文件进行编译和安装
二、课程设计项目名称
简易学生信息管理系统
三、课程设计目的及意义
1、熟悉和掌握Linux操作系统的常用命令
2、学习在Linux操作系统上完成简单的C语言编程
3、学习Makefile文件的功能和作用,并掌握Makefile文件的编写规则
4、学习将多个C语言源文件通过Makefile文件建立联系,并使用Make命令完成对源文件的编译。
5、通过这次课程设计,比较Linux操作系统与Windows操作系统的异同点
四、课程设计题目功能分析
(一)设计题目功能描述
1、输入学生的基本数据(包括学号、姓名、性别和5门课的成绩)
2、输出全部学生信息(按指定课程成绩降序排列,按平均成绩降序排列)
3、修改指定学生的信息
4、删除指定学生的信息
5、在指定的学生前或后再插入一个学生的信息
6、统计指定课程不及格的人数
7、将信息文件存入磁盘中
8、从磁盘中读入存储的信息
(二)数据结构设计
通过对系统所要实现的功能进行详细的分析后,本次设计采用线性的数据结构。具体来说,本次设计所采用的数据结构就是线性表,其存储结构为链式存储结构。即用一组任意的存储单元存储线性表当中的数据元素,这组存储单元在内存中的物理状态并不是连续的。这些在逻辑上相连的元素在物理结构上并不是互相连续的。
这种链式存储结构称为链表。其特点是:存放数据的节点包括两个域,即数据域和指针域。数据域用于存放当前节点的数据信息,二指针域则用于存放后继节点在存储器中的地址信息。数据元素的节点结构如下:
本次设计使用的链表结构为单向链表,其节点的基本数据结构及内容如下所示:
1、建立结构体节点信息如下:
strut ST 建立名为ST的结构体其中包含有学的
{ char xh[20];基本信息学号(xh)、姓名(name)、性
char name[20]; 别(sex)、五科成绩和平均分(grade),
char sex[3]; 以及保存下一节点地址的指针*next。
float grade[6];
struct ST *next;
};
struct *SI; *SI为指向结构体ST的的指针变量。
2、单向链表的建立
这里采用动态建立链表的方法,即每次在满足条件的前提下,向内存动态申请大小为一个节点数据类型大小的内存空间,并输入当前节点的相关信息。将新节点通过指针域与已建立的链表相连。由此建立包含N个节点信息的单向链表。
3、有关数据结构的基本操作
(1)单链表的插入
(2)单链表的删除
(3)单链表的查找
(4)单链表的排序
(三)数据存取
数据存取采用的是线性链表的存取结构,其特点是:使用一组任意的存储单元存储线性表中的数据元素,这些存储单元之间在逻辑结构上虽然是相互关联的,但是其在物理结构上并不是连续的。数据元素之间的逻辑关系是由节点中的指针域指示的,这种存储结构是非顺序映像或者叫做链式映像。在使用中,我们只需关心数据元素的逻辑次序而不必关心它的真正存储地址。
我们在单链表第一个元素所在的节点之前设置一个节点—头结点。头结点的指针域存储第一个元素所在节点的存储位置;而数据域并没有存储任何信息。
基于以上建立单向链表的思想,我们在对节点元素进行存取的过程中只需找到该链表的头结点,即可完成对数据元素的存取操作。
(四)数据录入方法设计
链表是一种动态存储结构,所需的存储空间只有在执行malloc之后,才能申请到一个
可用节点空间;free的作用是系统回收一个节点,回收后的空间可以备作再次生成节点时使用。动态建立链表共有两种基本方法:方向建立链表、正向建立链表。这里采用反向建立链表的数据录入方法。
数据录入的方法是:从线性表的最后一个元素开始,从后向前依次插入到当前链表的第一个节点之前。在满足循环条件的前提下,依次输入当前节点的相关信息,并通过节点的指针域将当前节点插入已建立的链表当中。
五、算法分析与流程
(一)函数定义
void display(int Max);信息展示函数定义
void menu();菜单函数定义
int display_module(int Max);输出全部学生信息(按指定课程成绩降序排列,按平均成绩降序排列)
int read_imformation();在指定的学生前或后再插入一个学生的信息
int add_module(int Max); 输入学生的基本数据(包括学号、姓名、性别和5门课的成绩)int find_num_module(int Max);从磁盘中读入存储的信息
int find_name_module(int Max);
int modify_module(int Max);修改指定学生的信息
int sort_module(int Max);统计指定课程不及格的人数
int save_module(int Max);将信息文件存入磁盘中
int del_module(int Max);删除指定学生的信息
(二)函数流程图