已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆交通大学信息学院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对源文件进行编译和安装2、 课程设计项目名称简易学生信息管理系统3、 课程设计目的及意义1、熟悉和掌握linux操作系统的常用命令2、学习在linux操作系统上完成简单的c语言编程3、学习makefile文件的功能和作用,并掌握makefile文件的编写规则4、学习将多个c语言源文件通过makefile文件建立联系,并使用make命令完成对源文件的编译。5、通过这次课程设计,比较linux操作系统与windows操作系统的异同点4、 课程设计题目功能分析(1) 设计题目功能描述 1、输入学生的基本数据(包括学号、姓名、性别和5门课的成绩) 2、输出全部学生信息(按指定课程成绩降序排列,按平均成绩降序排列) 3、修改指定学生的信息 4、删除指定学生的信息 5、在指定的学生前或后再插入一个学生的信息 6、统计指定课程不及格的人数 7、将信息文件存入磁盘中 8、从磁盘中读入存储的信息(2) 数据结构设计 通过对系统所要实现的功能进行详细的分析后,本次设计采用线性的数据结构。具体来说,本次设计所采用的数据结构就是线性表,其存储结构为链式存储结构。即用一组任意的存储单元存储线性表当中的数据元素,这组存储单元在内存中的物理状态并不是连续的。这些在逻辑上相连的元素在物理结构上并不是互相连续的。 这种链式存储结构称为链表。其特点是:存放数据的节点包括两个域,即数据域和指针域。数据域用于存放当前节点的数据信息,二指针域则用于存放后继节点在存储器中的地址信息。数据元素的节点结构如下:本次设计使用的链表结构为单向链表,其节点的基本数据结构及内容如下所示: 1、建立结构体节点信息如下:strut st 建立名为st的结构体其中包含有学的 char xh20; 基本信息学号(xh)、姓名(name)、性 char name20; 别(sex)、五科成绩和平均分(grade), char sex3; 以及保存下一节点地址的指针*next。 float grade6; struct st *next;struct *si; *si为指向结构体st的的指针变量。 2、单向链表的建立 这里采用动态建立链表的方法,即每次在满足条件的前提下,向内存动态申请大小为一个节点数据类型大小的内存空间,并输入当前节点的相关信息。将新节点通过指针域与已建立的链表相连。由此建立包含n个节点信息的单向链表。 3、有关数据结构的基本操作 (1)单链表的插入 (2)单链表的删除 (3)单链表的查找 (4)单链表的排序(三)数据存取数据存取采用的是线性链表的存取结构,其特点是:使用一组任意的存储单元存储线性表中的数据元素,这些存储单元之间在逻辑结构上虽然是相互关联的,但是其在物理结构上并不是连续的。数据元素之间的逻辑关系是由节点中的指针域指示的,这种存储结构是非顺序映像或者叫做链式映像。在使用中,我们只需关心数据元素的逻辑次序而不必关心它的真正存储地址。我们在单链表第一个元素所在的节点之前设置一个节点头结点。头结点的指针域存储第一个元素所在节点的存储位置;而数据域并没有存储任何信息。基于以上建立单向链表的思想,我们在对节点元素进行存取的过程中只需找到该链表的头结点,即可完成对数据元素的存取操作。(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);删除指定学生的信息(二)函数流程图(三)部分函数实现代码1、 主函数void main() int sel;si=(struct st *)malloc(sizeof(struct st);si-next=null;selloadinfo();while (1) menu();scanf(%d,&sel);switch (sel)case 0: exit(0);case 1: input();break; case 2: output();break; case 3: changeinfo();break; case 4: deleteinfo();break;case 5: countgrade();break;case 6: insertinfo();break;case 7: saveinfo();break;2、 信息显示函数void outlist() struct st *q;q=si-next;printf( 学生成绩基本信息n);printf(-n);printf( 学号 姓名 性别 语文 数学 英语 物理 政治 平均分 n); printf(-n);while(q!=null) printf(%4st,q-xh);printf(%4st,q-name);printf(%4st,q-sex);printf(%6.1ft,q-grade0);printf(%6.1ft,q-grade1);printf(%6.1ft,q-grade2);printf(%6.1ft,q-grade3);printf(%6.1ft,q-grade4);printf(%6.1fn,q-grade5); q=q-next;printf(-n);printf( 制表: mr-choun); 六、项目实现过程(1) 在linux操作系统下的源文件编写(1) 利用vi命令编写文件main.c,gui.c,smsfunc.c,makefile,global.h;具体实现过程如下:图16 编写文件main.c图17 编写文件gui.c图18 编写文件smsfunc.c图19 编写global.h文件图20 编写文件makefile(2) 在linux操作系统下完成源文件的编译(1) 使用make命令完成源程序的编译图21 使用make命令编译后的结果(3) 在linux操作系统下运行程序图22 运行结果图七、项目测试结果(一)查看桌面的生成文件图23 桌面效果图24 程序运行部分结果图八、总结(一)项目小结 本次实验课程设计不仅涉及到有关linux操作系统的知识,还与c语言程序设计有着密切的联系,由于在学习的过程中,我们没有加强c语言程序能力的锻炼,因此,在这个项目中遇到了许多难题。不过在老师的指导和同学的帮助下,最终解决了相关难题。完成了整个项目的要求。从以上描述和分析可以看出,在编写c语言程序时,巧妙地利用makefile文件对其进行描述,就可以起到事半功倍的效果。在默认的方式下,也就是我们只输入make命令。那么,make会在当前目录下找名字叫“makefile”或“makefile”的文件。如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“myfile”这个文件,并把这个文件作为最终的目标文件。如果myfile文件不存在,或是myfile所依赖的后面的 .o 文件的文件修改时间要比myfile这个文件新,那么,他就会执行后面所定义的命令来生成myfile这个文件。如果myfile所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这有点像一个堆栈的过程)当然,你的c文件和h文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生命make的终极任务,也就是执行文件myfile了。这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖 的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。make只管文件的依赖性,即,如果在 我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。通过上述分析,我们知道,像main.c这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。即命令“make clean”,以此来清除所有的目标文件,以便重编译。于是在我们编程中,如果这个工程已被编译过了,当我们修改了其中一个源文件,比如main.c,那么根据我们的依赖性,我们的目标main.o会被重编译 (也就是在这个依性关系后面所定义的命令),于是main.o的文件也是最新的啦,于是main.o的文件修改时间要比myfile要新,所以myfile也会被 重新链接了。而如果我们改变了“global.h”,那么,main.o、gui.o和smsfunc.o都会被重编译,并且,myfile会被重链接。(二)项目改进 通过对系统进行测试发现,这个系统存在许多漏洞,例如,当用户被要求录入学生成绩信息的时候,输入的是-90.系统并没有报错,而是正常工作。这与现实里的成绩信息相互矛盾,因此,我们可以对系统进行改进,将成绩信息的域限制在0-100之间。 此外,当用户被要求录入学生性别信息时,我们测试的输入是k,系统并没有报错。这说明该系统在性别录入模块也存在漏洞,这也是该项目可以改进的地方。 另外,该系统只是实现了一些简单的学生信息录入、存储及其查询操作。如果我们想将其变得更加完美,则还需要增加许多功能查询。比如,查询某门课程不及格的人数及其不及格的学生的有关信息;怎样通过该系统计算某门课程的及格率等;这些都是可以改进的功能。(3) 体会此次程序设计加深了我对c语言程序函数模板化设计的优点的理解,例如便于改写程序代码的错误,使自己对程序的读写能力进一步加强,对程序实现过程的流程达到深一步的了解。与此同时也认识到自己的不足之处,比如在实现链表的排序问题时对其过程不太理解以至于在编写时出现较多的错误。其次,自己的读程序的能力还不足,速度过慢,尤其是在链表与结构体的读写方面明显的不足。对c语言的熟练是一个积累的过程,在以后我会更多的去读程序,加深理解程序实现的具体过程。此外,此次程序设计还加深了我对linux操作系统的理解,以及对linux操作系统的一些常用命令的熟练使用。总之,每次实验都让我获益匪浅。每次实验都会增长知识。不过,这次项目设计所给我带来的不仅仅是知识,更多的是解决问题的方法。在项目设计的过程中,遇到许多难以理解和解决的问题。我常用的解决方法就是百度一下。当然和同学一起交流解决会是一个更好的方法,这不仅能够加深同学之间的感情,还可以增强自己分析问题、解决问题的能力。通过这次实验,我对makefile
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制作销售合同范本模板
- 医患关系纠纷解协议书
- 合建民房出租合同范本
- 合伙开修车店合同范本
- 司机工人安全合同范本
- 公司股权并购合同范本
- 代理出口协议合同模板
- 危运车辆司机合同范本
- 危运车辆销售合同范本
- 合同更换产品补充协议
- 人教版英语2024七年级上册全册单元知识清单(背诵版)
- 第4课 化解冲突有办法 (教学设计)-苏教版心理健康四年级上册
- SBT 11215-2018 商品交易市场建设与经营管理术语
- 2024春苏教版《亮点给力大试卷》 数学四年级下册(全册有答案)
- GB/T 35594-2023医药包装用纸和纸板
- 2021变电站端子箱
- 2023国家开放大学:《python程序设计》实验一-Python基础基础环境熟悉
- 村卫生室药品管理制度
- 职业健康安全管理手册+程序文件(ISO45001-2018)
- 降低阴式分娩产后出血发生率-PDCA
- 耳尖放血课件完整版
评论
0/150
提交评论