计算机信息管理(专科)毕业设计(初稿)_第1页
计算机信息管理(专科)毕业设计(初稿)_第2页
计算机信息管理(专科)毕业设计(初稿)_第3页
计算机信息管理(专科)毕业设计(初稿)_第4页
计算机信息管理(专科)毕业设计(初稿)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于B/S的学生信息管理系统目录 TOC o 1-3 h z 摘要2关键词2第一章 引言3(一)选题背景.3(二)选题意义.3第三章研究现状及设计目标.4(一) 研究现状的可行性分析.4(二)经济现状的可行性分析.5第三章总体设计.6(一)系统功能描述.6(二)基本设计.6(三) 数据流程图7(四据库设计9第四章 系统的具体实现.9(一)登陆界面演示.10(二)后天管理.11(三)学生信息界面.12第五章 学生信息管理系统测试.16(一)集成测试.16(二)功能测试17(三)连接测试17(四)文档测试17(五)负载测试17(六)极限测试17结束语.17致谢.18主要文献18摘要计算机的广泛应用

2、使我们的经济和社会生活因此发生了深刻的变革。与此同时,我国的教育事业蓬勃发展,升学率普遍提高,各类学校校规模不断扩大,对于学生管理工作的高效性和规范性提出了更高的要求。学校学生信息管理是学校教务管理中的一个极为重要的环节,它是整个学校管理的核心和基础。现在我国的大中小学校的学生信息管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被以计算机为基础的信息管理所取代。信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机已经成为我们学习和工作的得力助手。今天,计算机的价格已经十分低廉,

3、性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等。为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件将会为教学办公室带来极大的方便。随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。学校这个培育人才的地方,也将会迎来管理上的难题,即学生信息管理。本文的设计是依据B/S结构的A技术,参考了国内学校的学生信息管理系统,并结合章丘大学城各个学校的实际情况,提出“设计简单、使

4、用方便、安全性高”的设计理念。并结合C/S的学生信息管理系统的体系结构而设计的基于A的学生信息管理系统软件开发。系统分为学生信息管理、学生成绩管理、考试管理和用户管理四大模块,具备信息录入/修改/删除、成绩录入/修改/删除、添加/修改/删除考试信息、添加/删除考试科目、添加/修改/删除系统用户等功能。它能方便老师、学生查询信息。整体上实现了全校学生信息的网络化管理。该系统是一套基于B/S(浏览器/服务器)结构的学生信息管理系统。系统运行于服务器端,采用ASP.net+JavaScript+Css+Html+SQlServer开发,客户端只需安装有浏览器(如IE,谷歌,火狐)即可使用本系统。关键

5、词:学生信息管理软件开发 A B/S 网络化管理 学生管理第一章 引言选题背景1.1 随着计算机技术的飞速发展和网络时代的到来,我们已经进入了信息化的时代,有人也称之为数字化的时代。在这个数字化时代里,各个高校在各方面的信息管理工作都受到了极大的挑战。随着各个高校的教育规模不断的发展扩大,学生人数急剧的增加,有关学生的各种信息量也成倍增长。也带来了各个高校教育发展过程中的一个重要的问题,就是学生管理问题。面对庞大的信息量就需要有一个学生管理系统来提高学生信息管理工作的效率,做到信息的规范管理、科学统计和快速查询,以减少查询工作方面的工作量。1.1.1 学生信息管理系统是一个人机系统,以计算机为

6、基础的,但这并不意味着一切都是自动化的。人机系统的概念说明有些任务最好由人完成,而另一些任务由机器代替。因此,需要很好的分析把什么工作交给人做比较合适,什么工作交给机器比较合适,充分发挥人和机器的特长,组成一个和谐、有效的系统。1.1.2 近年来,越来越多的学校认识到学生信息化管理的重要性,纷纷开始选择适合自己的学生信息管理系统。学生信息管理系统就是根据这些因素来设计和开发的。(二) 选题意义 2.1随着各个学校校园网的建设和Internet技术的引进,基于校园网和Internet的系统开发也蓬勃发展。学生信息管理系统是各个学校教学的一项重要工作,现代化的学生信息需要现代化的信息管理系统支持。

7、从20世纪90年代开始,为适应新世纪人才培养的目标,国内高校教育体制进行了大规模的改革。学生的信息管理在现代化的教育中越来越重要。2.1.1推进高校的信息化建设信息化是全球化的趋势和潮流,是国家社会经济发展的必然选择,信息化水平的高低已成为一个国家综合国力与发展潜力的重要衡量指标,积极推进国家信息化又是我国促进经济社会发展的重要举措,学校作为促进经济社会发展的重要领地,他的信息化水平必将对国家信息化建设产生深远的影响,必将对国家教育信息化建设提供借鉴,信息化不仅影响学校的教学与科研活动,也将给传统教学、科研活动带来巨大的变化,同时也将给学校现行的体系与机制提出挑战,推动他们的变革。学校的学生信

8、息管理系统的建设就是学校数字化校园建设的重要组成部分。2.1.2建设高校学生信息管理平台校园网的迅猛发展和Internet技术的引进,还有学生人数的不断上升,为建立学生信息管理系统提供了必要的条件,国内许多高校都根据学校的实际学生信息的情况和特点开发了适于自己学校的学生信息管理系统。学生信息管理系统的开发便于远程管理学生,使学校能及时了解学生信息,为实现学生管理现代化和信息化具有重要的意义。第二章 研究现状及设计目标2.1研究现状的可行性分析2.1.1 技术上的可行性分析 随着计算机技术发展到了一个新的时期,网络技术在十几年的发展过程中已日臻完善,而基于WEB的数据库技术也已经十分成熟。在语言

9、方面ASP,PHP,Java也用事实证明了其强大的功能,还有微软最引以为豪的 .NET 技术,更显示了在基于网络的应用中的强劲优势。至此,一种基于网络的、管理方便的、反应迅速的、具有交互性的学生信息管理系统应运而生了。新式的学生信息管理系统采用了最新开发结构:B/S结构。这种基于B/S结构的学生信息管理系统在应用中显示了明显的优势:1、采用了B/S结构访问数据库,增加了数据访问的安全性;2、各个年纪班级和教务处采用浏览器作为客户端,减少了系统安装、配置等步骤,使用更加方便;3、使用程序自动控制数据格式,使得符合规格的数据直接入库,免去了数据的复查程序;4、整个的系统使用网络进行数据交换和意见反

10、馈,更加方便快捷;5、减少了数据的手工操作,使得数据出错的几率降低到了最低点。我的学生信息管理管理系统在技术上主要用到了ASP.net、SQL Server、HTML、javascript、Css 、Ajax、Jquery等几方面的知识,以下将就其技术上的可行性作以论述。1.2.1 ASP.net 系统的开发不仅仅是一个应用程序编写的过程,更重要的是在系统分析和设计阶段所做的工作,本系统主要是网页和数据库的结合,在Microsoft的产品中,网页与数据库相结合的解决最佳方案便是ASP。开发该系统选择ASP.net,主要是由于ASP.net具有以下几方面的优势:1、Visual Studio 功

11、能强大,完美支持A的开发。2、适应于各种浏览器3、C#语言兼容性好,配合Windows系统开发,得心应手。4、数据封装,安全性高5、易于访问数据库,数据安全性高。 6.C#语言智能简单,开发便捷。1.2.2 SQLServer数据库数据库结构的规划是应用程序设计中一个非常重要的环节。学生信息管理系统要处理与表现的数据量较多,若使用传统的方式来完成任务,可能会事倍功半,甚至有些任务还无法完成;学生信息管理系统的设计开发,需要一套完善的数据库管理系统。对于数据库系统的选用,如果所建立的是私人的Intranet,则可以使用Access等桌面型数据库,但是像学生学籍系统这样需储存大量的数据和用户的系统

12、设计,则需使用较大型的数据库,例如:SQL Server、Oracle、Informix、DB2、Sybase等。本文的设计则应用到SQL Server。1.2.3 HTMLHTML(Hypertext Markup Language/超文本标记语言),产生于1990年,并成为国际标准(International Standard Organization,ISO)文件SGML的一员。HTML是一种纯文本(或称为ASC)文件,可以用任何文字编辑软件来建立,并能通过HTTP(Hypertext Transfer Protocol)超文本传输协议,在全球信息网(World Wide Web/WWW

13、 )上跨平台流通。简言之,HTML是通过各式各样的卷标在文件中描述多媒体信息的。目前,只要拥有诸如Mosaic、Netscape、Microsoft Internet Explore等WWW的浏览器(Browser),就能轻易借助Internet来漫游全球多媒体信息。上面介绍了ASP、SQL Server和HTML,由于ASP.net在服务器端运行,运行结果以HTML网页样式返回给用户浏览器,因而ASP.net源程序不会泄漏,增加了系统的安全保密性。此外,ASP.net是面向对象的,程序员可自行增加第三方组件来扩充其功能,拓展应用范围。不论是学校机房的计算机还是个人计算机上某个32/64 位版

14、本的Windows 平台,Windows XP,windows Vista,Windows 7, Windows 8总是必备的操作系统,因此,A 应用程序有广泛的运行环境;同时非计算机专业出身的人员对Windows 操作系统的使用也相对较为熟悉,所以学生信息管理系统的运行环境采用Windows 操作系统。综上,本文选用了内嵌HTML的ASP.net技术,结合SQL Server 2012,在Visual Studio 2012 环境中来进行学生信息管理系统的设计开发。至于javascript、Css 、Ajax、Jquery 等,这些都是辅助A开发的脚本语言和技术,不做详细介绍。2.2经济现状

15、的可行性分析一方面,系统中有好的人机界面和强劲的功能支持,使使用者的工作效率进一步提高,从而节省人力、物力,进而提高经济效益;另一方面,系统的开发成本低,在现有的PC机上即可提供该系统开发工作需要的所有硬件设备环境。2.2设计目标2.2.1实现学生信息,课程信息,课程类别,成绩信息的集中化电子化处理;2.2.2实现学生信息管理工作制度化、标准化、规范化;2.2.3建立关于学生信息管理数据比较全面详细的数据库。第三章 总体设计3.1 系统功能描述本系统的主要任务是实现对学校教务处的学生信息管理、成绩管理、课程管理及相关查询。其主要功能包括:1、学生信息管理功能添加学生。以班级为单位,进行学生入库

16、。其中分为单个添加和成批添加。单个添加学生供数量较少的学生信息入库;成批添加可以从现存的学生信息EXCEL文件中成批录入到数据库中。删除学生。当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。该功能主要进行成批地删除学生信息,如单个学生信息删除,多个学生信息的删除,整个班级的删除。新生管理。本部分的功能主要有新生导入、分班、及设置学号。新生导入实现从现存的EXCEL新生名单中录入学生信息。分班功能实现按新生的报考专业、成绩及性别进行分班。设置学号实现自动为各班学生编发学号。学生信息备份。在学生信息删除前,将其按班级为单位保存到备份数据库。 2学生成绩管理功能分数录入。

17、以班级为单位,录入各科目的期中、期末、总评成绩。总分及名次。计算指定班级学生的总分及名次。补考成绩录入。修改总评成绩,以决定最终补考人数。成绩备份。为指定班级及指定的学期数的学生成绩保存到备份数据库中。3、课程信息管理功能课程管理。提供本学期各年级各专业所开课程名称的录入、修改、删除。它是学生成绩管理的基础。用以保证数据库中一致性原则。4、查询功能。学生信息查询。根据用户的要求,查询学生数据库的所有可能的信息,其中包括成绩查询。备份成绩查询。按班级为单位查询备份数据库的学生信息,补考情况。5.班级管理。提供给班主任进行本班学生的信息更新、修改、删除。3.2基本设计本系统业务是在PC上进行,数据

18、集中在一个数据库服务器上。根据系统总体目标及技术成熟型、一般企业流行的体系结构,学生信息管理系统采用分层体系结构,具体划分为三层:表现层、业务层和数据层,如下图所示:表现层表现层业务层数据层Aspx html及其他UIBLLCOM/DCOMMTS文件数据库其他数据3.3数据流程图本系统涉及到的业务工作主要是:学生管理,课程管理,成绩管理等方面,可以把整个系统划分为下面的子系统/功能模块:3.2.1学生基本信息管理(学号,姓名,性别,生日,地址(三级联动),电话等信息);3.2.2学生成绩管理(学号,姓名,各课成绩等信息);3.3.3学生课程信息管理(学号,姓名,考试课程名等信息);各子系统/模

19、块数据流图分别设计描述如下:系统中所有数据都存放在数据库SQL Server中,某些重要信息(如帐户、密码等)需要进行加密(MD5)。该学生信息管理系统的数据流图描述如下:存储学生信息存储课程信息建立成绩文件进入操作存储用户信息存储成绩信息学生基本信息学生基本信息表成绩信息课程信息学生信息查询信息建立学生信息文件建立课程文件建立用户文件存储学生信息存储课程信息建立成绩文件进入操作存储用户信息存储成绩信息学生基本信息学生基本信息表成绩信息课程信息学生信息查询信息建立学生信息文件建立课程文件建立用户文件3.4数据库设计本系统涉及到的信息主要有6类:学生信息、成绩信息、教师信息、课程信息、用户信息,

20、成绩信息与教师信息 、学生信息关系密切,因此主外键关系,一定要设置明确,以方便后期的数据查询。以提高多种信息同时读取的速度。按以上分析,将系统的数据库设计为:学生表:记录学生的基本信息,是进行学生及其它各类信息处理的基础。教师表:记录教师的基本信息,是进行课程和成绩各类信息处理的基础。3、成绩表:记录学生的期中、期末及总评的各科成绩。4课程表:记录各专业各年级开课情况,在添加学生记录时,可根据该表的情况决定6、用户表:对该系统进行管理和操作。学生表结构:编号字段名称字段类型字段宽度1学号CHAR152姓名Nvarchar103性别bit24出生日期DATE85电话CHAR106家庭住址nvar

21、char507所属学院CHAR208所属专业CHAR509所属班级CHAR410政治面貌CHAR611入学总分Date412备注nvarcharMax2教师表结构:编号字段名称字段类型字段宽度1教师编号CHAR152姓名nvarchar83性别Bit24出生日期DATE85家庭住址nvarchar506所教课程char2003、成绩表结构:编号字段名称字段类型字段宽度1学号CHAR152课程名称CHAR153班级char204、课程表结构: 编号字段名称字段类型字段宽度1课程编号CHAR152年级CHAR103专业char20 5用户表结构: 编号字段名称字段类型字段宽度1编号CHAR152姓

22、名Nvarchar103性别bit24出生日期DATE85电话CHAR106家庭住址nvarchar50第四章 系统的具体实现4.1 登陆界面演示登陆部分代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using StudentMa

23、nager.BLL;using StudentManager.Model;using StudentManager.Command;namespace StudentManager public partial class LoginForm : Form public LoginForm() InitializeComponent(); double dou = 0.05; Form_Show show = new Form_Show(); /用户登录 private void btnLogin_Click(object sender, EventArgs e) if (this.tbxPi

24、c.Text = this.labPic.Text.ToLower() if (!string.IsNullOrEmpty(this.tbxUserName.Text) & !string.IsNullOrEmpty(this.tbxPassword.Text) UserBLL ub = new UserBLL(); UserModel _ue = new UserModel(); _ue.Name = this.tbxUserName.Text.Trim(); _ue.Password = Md5Method.MD5Create(this.tbxPassword.Text); _ue.Rol

25、eChange = this.cbxRole.Text; if (ub.LoginUser(_ue) = true) Response.Redirect(index.aspx); else Response.Write(“alert(用户名,密码错误,登陆失败); else Response.Write(“alert(用户名密码,不能为空); 4.2 后台界面4.3 学生信息界面添加学生部分不代码/添加用户的加载事件(数据绑定和根据判断实现不同的界面的布局) private void AddUser_Load(object sender, EventArgs e) this.cbxRole.D

26、ataSource = KeyValuescs.GetRole(); this.cbxRole.DisplayMember = Value; this.cbxRole.ValueMember = Key; this.Width = 365; this.Height = 395; KeySubstring(); this.labPic.Text = CheckImage.CheckCode(); CheckImage.CodeImage(CheckImage.CheckCode(), pbxPicCheck); if (userid = null) this.pnlAll.Location =

27、new Point(20, 61); this.panelPic.Visible = true; this.panelPic.Location = new Point(22, 185); this.panel1.Visible = false; this.btndelete.Visible = false; this.Text = 注册用户; this.btnRegiser.Text = 注册; this.cbxRole.Text = 学生; else this.pbxKey.Visible = false; this.pnlAll.Location = new Point(20, 61);

28、this.panel3.Visible = false; this.panel2.Location = new Point(21, 36); this.btnRegiser.Location = new Point(25, 150); this.btndelete.Location = new Point(155, 150); this.Width = 290; this.Height = 300; this.Text = 编辑用户; this.btnRegiser.Text = 修改; UserBLL _ub = new UserBLL(); UserModel _ue = _ub.GetE

29、nityByID(userid); this.tbxUserName.Text = _ue.Name; this.tbxUserPassword.Text = ; this.cbxRole.Text = _ue.RoleChange; this.cbxZhuangtai.Text = _ue.IsdeleteChange; /控制小键盘的显示和隐藏 private void pbxKey_Click(object sender, EventArgs e) if (this.KeyPnl.Visible = false) this.KeyPnl.Visible = true; this.Widt

30、h = 404; this.Height = 502; this.pnlAll.Location = new Point(12, 168); this.tbxUserName.Focus(); else this.KeyPnl.Visible = false; this.Width = 365; this.Height = 385; this.pnlAll.Location = new Point(20, 61); this.tbxUserName.Focus(); /用于用户名,密码,重复密码的验证 public class CheckError public static bool Nam

31、eError get; set; public static bool PWDError get; set; public static bool RePWDError get; set; public static bool CheckTrue() return NameError & PWDError & RePWDError; /用户名验证 private void tbxUserName_Leave(object sender, EventArgs e) if (this.tbxUserName.Text = ) CheckError.NameError = false; this.l

32、blUserName.Visible = true; else CheckError.NameError = true; this.lblUserName.Visible = false; /密码验证 private void tbxUserPassword_Leave(object sender, EventArgs e) if (this.tbxUserPassword.Text = ) CheckError.PWDError = false; this.lblPWD.Visible = true; else if (this.tbxReptPasword.Text = ) CheckEr

33、ror.PWDError = true; this.lblPWD.Visible = false; else if (this.tbxUserPassword.Text = this.tbxReptPasword.Text) CheckError.PWDError = true; this.lblPWD.Visible = false; else CheckError.PWDError = false; this.lblRePWD.Visible = true; this.lblRePWD.Text = 两次密码输入不一致; /重复密码验证 private void tbxReptPaswor

34、d_Leave(object sender, EventArgs e) if (this.tbxReptPasword.Text = ) CheckError.RePWDError = false; this.lblRePWD.Visible = true; else if (this.tbxUserPassword.Text = this.tbxReptPasword.Text) CheckError.RePWDError = true; this.lblRePWD.Visible = false; else CheckError.RePWDError = false; this.lblRe

35、PWD.Visible = true; this.lblRePWD.Text = 两次密码输入不一致; /添加用户 private void btnRegiser_Click(object sender, EventArgs e) if (userid = null) if (tbxPicCheck.Text = this.labPic.Text.ToLower() if (CheckError.CheckTrue() UserModel _ue = new UserModel(); _ue.Name = this.tbxUserName.Text.Trim(); _ue.Password =

36、 Md5Method.MD5Create(this.tbxUserPassword.Text); _ue.RoleChange = this.cbxRole.Text; if (ub.Add(_ue) Response.Write(“alert(添加成功); else Response.Write(“alert(添加失败); 第五章 学生信息管理系统测试功能测试环境操作系统:windows 7内存:2G网络环境:校园网 本功能测试共分为:100系统功能测试测试是否可以正常添加用户和修改密码,系统正常退出测试是否可以正常对班级进行管理,学生的单个或成批添加,删除以及新生信息的导入和学生信息备份测

37、试成绩管理中是否可以进行分数录入,汇总及排名和成绩备份等操作测试课程信息模块中针对课程管理,老师和课程的关系之间操作是否正常测试是否可以正常查询学生,老师和成绩5.3链接测试这一部分将测试系统各模块之间的超链接跳转是否正确5.4文档测试 本章主要内容为:测试文档是否包括全部内容测试软件功能描述与其他功能有没有冲突查看软件功能描述是否是原来系统分析和需求查看文档内容在特定的情况和进度下,以现有人力,物力和资源能否实现5.5负载测试这一部分将测试正常情况下系统性能和用户数目之间的关系本章主要内容为:查看在多个用户同时使用本系统时是否正常5.6极限测试这一部分将测试所有极端的情况,如速度非常快的情况

38、下和速度非常慢的情况下,以及所有其它的极端情况。结束语在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本学生管理系统是一套学校在日常管理中必不可少的管理软件,通过开发这个系统,我掌握了的开发项目的过程,了解的基本知识巩固了我对C#语言的学习,但在这次毕业设计中的最大收获并

39、不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。致 谢在论文即将完成之际,回顾紧张但又充实的学习班和开发过程,本人在此向所有关心我的及帮助我的老师和同学们致以最真诚的感谢。在本次毕业设计中,我从指导老师-李洁老师,身上学到了很多东西。他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢她耐心的辅导。在撰写论文阶段,李老师几次审阅我的论文,提出了许多宝贵意见,没有他的指导,我们就不能较好的完成课题设计的任务。另外,我还

40、要感谢在这几年来对我有所教导的老师,他们孜孜不倦的教诲不但让我学到了很多知识,而且让我掌握了学习的方法,更教会了我做人处事的道理,在此表示感谢。同时,在系统开发过程中还有同组的同学也给了我不少帮助,这里一并表示感谢。主要参考文献本系统的过程中,主要的参考文献有:C#软件开发 张孝祥、徐明华 清华大学出版社网页开发手记 叶青、孙亚南、孙泽军 电子工业出版社出版社从入门到精通 庞亚娟、房大伟、吕双 清华大学出版社数据库访问与数据库程序设计 陈承欢 人民邮电出版社数据库技术及应用 张兵义 电子工业出版社出版社学生签名: 辅导老师签名: 年 月 日附录资料:不需要的可以自行删除 busybox详解制作

41、根文件系统详解制作根文件系统 一、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。该标准规定了根目录下各个子目录的名称及其存放的内容:目录名存放的内容/bin必备的用户命令,例如ls、cp等/sbin必备的系统管理员命令,例如ifconfig、reboot等/dev设备文件,例如mtdblock0、tty1等/etc系统配置文件,包括启动文件,例如inittab等/lib必要的链接库,例如C链接库、内核

42、模块/home普通用户主目录/rootroot用户主目录/usr/bin非必备的用户程序,例如find、du等/usr/sbin非必备的管理员程序,例如chroot、inetd等/usr/lib库文件/var守护程序和工具程序所存放的可变,例如日志文件/proc用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容/sys用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容/mnt文件系统挂接点,用于临时安装文件系统/tmp临时性的文件,重启后将自动清除制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括:编译安装busybox,生成/bin、/s

43、bin、/usr/bin、/usr/sbin目录 利用交叉编译工具链,构建/lib目录 手工构建/etc目录 手工构建最简化的/dev目录 创建其它空目录 配置系统自动生成/proc目录 利用udev构建完整的/dev目录 制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。二、编译安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god, 这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀busybox,事情就简单很多。1、从 HYPERLINK /

44、 / 下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox HYPERLINK /y1meas5zrVyWRApB-3amnI3XoX1uejYB25KKj1kpqxTRhOGgR_PuwGIQD9zdV3d5uvhNok3Z_YMczeZUopvoGEQES1yAumIZZZ14T5WFiL1BGGc7xrEbBCPe_ET2gFHV8nhyRPim0l3Fn

45、ss0hvRQ7UWWA/image4%2066DF829F.png busybox配置主要分两部分。第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。2)、Installation Options - Applets links (as soft-links) - (X) as soft-links,表示安装busybox时,将各个命令安装

46、为指向busybox的软链接还是硬链接。我们选择软链接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab completion和Username completion以支持命令自动补全 第二部分是Applets,他将busybox的支

47、持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。1)选中Networking Utilities - httpd下的Enable -u option,以启用http服务器的功能allows the server to run as a specific user5、编译busyboxmake6、安装busyboxmake install安装完成后,可以看到在/work/nfs_root/fs_mini3目录下生成了binsbinusr/binusr/sbin目录,其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox

48、本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7

49、2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通PC机上的ls命令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l /bin/ls-rwxr-xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它娇小的身躯容纳

50、了数以百计的命令代码,实在是让人佩服不已,其不愧嵌入式系统瑞士军刀之美誉。据说,busybox的作者身患绝症,这更让人钦佩GNU开源软件的作者们。 三、利用交叉编译工具链,构建/lib目录 光有应用程序(命令)是不够的,因为应用程序本身需要使用C库的库函数,因此还必需制作for ARM的C库,并将其放置于/lib目录。my god,要自己写C库的源代码吗?不用!还记得交叉编译工具链的3个组成部分吗?交叉编译器、for ARM的C库和二进制工具。哈哈,for ARM的C库是现成的,我们只需要拷贝过来就可以了。遗憾的是:整个C库目录下的文件总大小有26M。而我们根文件系统所在分区不过区区16M而已

51、,根本放不下。怎么办呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib 需要C库目录下所有的文件吗?no,absolutely no! 让我们来分析一下glibc库目录下内容的组成。该目录下的子目录和文件共分8类: 目标文件,如crtn.o,用于gcc链接可执行文件 libtool库文件(.la),在链接库文件时这些文件会被用到,比如

52、他们列出了当前库文件所依赖的其它库文件,程序运行时无需这些文件 gconv目录,里面是各种链接脚本,在编译应用程序时,他们用于指定程序的运行地址,各段的位置等 静态库文件(.a),例如libm.a,libc.a 动态库文件 (.so、.so.0-9*) 动态链接库加载器ld-2.3.6.so、ld-linux.so.2 其它目录及文件很显然,第1、2、3、4、7类文件和目录是不需要拷贝的。由于动态链接的应用程序本身并不含有它所调用的C库函数的代码,因此执行时需要动态链接库加载器来为它加载相应的C库文件,所以第6类文件是需要拷贝的。除此之外,第5类文件当然要拷贝。但第5类文件的大小也相当大。de

53、nnisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷贝吗?非也,非也!其实,需要哪些库完全取决于要运行的应用程序使用了哪些库函数。如果我们只制作最简单的系统,那么我们只需要运行busybox这一个应用程序即可。通过执行 dennisdennis-desktop:/work/nfs_root/fs_mini3$ arm-linux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Sha

54、red library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3个库:通用C库(libc)、数学库(libm)、加密库(libcrypt),因此我们只需要拷贝这3个库的库文件即可。但是每个库都有4个文件,4个文件都要拷贝吗?当然不是。 dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc

55、rypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 dennis dennis 17 2008-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-d

56、esktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis dennis 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008-12-22 15:38 libm.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38

57、 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-01-22 05:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:31 libc.a-rw-r-r- 1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 denn

58、is dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4个文件中的.a文件是静态库文件,是不需要拷贝的。另外3个文件是: 实际的共享链接库:libLIBRARY_NAME-GLIBC_VERSION.so。当然需要拷贝。 主修订版本的符号链接,指向实际的共享链接库:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦链接了特定的链接库,将会参用该符号链接。程序启动时,加载器在加载程序前,会检索该文件。所以需要拷贝。 与版本无关的符号链接,指向主修订版本的符号连接(libc.so是唯一的例外,他是一

59、个链接命令行:libLIBRARY_NAME.so,是为编译程序时提供一个通用条目)。这些文件在程序被编译时会被用到,但在程序运行时不会被用到,所以不必拷贝它。关于共享库的2个符号链接的作用的特别说明:当我们使用gcc hello.c -o hello -lm编译程序时,gcc会根据-lm的指示,加头(lib)添尾(.so)得到libm.so,从而沿着与版本无关的符号链接(libm.so - libm.so.6)找到libm.so.6并记录在案(hello的ELF头中),表示hello需要使用libm.so.6这个库文件所代表的数学库中的库函数。而当hello被执行的时候,动态链接库加载器会从

60、hello的ELF头中找到libm.so.6这个记录,然后沿着主修订版本的符号链接(libm.so.6 - libm-2.3.6.so)找到实际的共享链接库libm-2.3.6.so,从而将其与hello作动态链接。可见,与版本无关的符号链接是供编译器使用的,主修订版本的符号链接是供动态链接库加载器使用的,而实际的共享链接库则是供应用程序使用的。通过以上分析,我们只需要拷贝3个库(每个库各1个主修订版本的符号链接和1个实际的共享链接库)以及动态链接库加载器(1个符号链接和1个实体文件)。步骤如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论