




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告 课程名称:计算机组成原理与汇编语言报告题目:学生成绩管理系统学生姓名:所在学院:信息科学与工程学院专业班级:指导教师:20年6月26日
摘要随着计算机在教育系统中的应用得到了巨大的发展,教务管理自动化已成为学校信息化管理的一个重要标识。该课程设计采用汇编语言的基本指令结合子程序、宏、系统功能调用等多种技术分层、分模块实现了学生档案的建立、存储,学生成绩的录入、显示、查询、编辑等功能的一个完整的学生成绩管理系统。该系统由一个主程序完成系统的菜单显示,通过选择菜单调用相应的子程序,实现相应的功能。该课程设计的完成不仅有助于我们对汇编语言的程序设计技术的掌握和综合知识的运用能力的提高,也利于对程序开发过程的了解,为将来系统开发打下好的基础。关键词:汇编语言;成绩管理;添加;查询目录TOC\o"1-8"\h\z\u一、课题分析 1二、需求分析 22.1功能描述 22.2功能模块分析 22.2.1 学生信息输入功能 22.2.2 学生信息修改功能: 22.2.3 学生信息删除功能 22.2.4 学生信息查找功能 22.2.5 显示排名信息功能 32.2.6 文件写入及退出功能 3三、设计方案 43.1系统流程图 43.2子程序模块设计 53.3详细设计 73.4程序调试结果及分析 10四、结论与心得 144.1自我评价 144.2缺点和不足 144.3开发感悟 14五、参考文献 15一、课题分析题目:学生成绩管理分析:首先需要建立学生成绩文档;然后依据学号输入学生各门功课成绩(假设3门功课);功能上要求修改指定学号的学生成绩;统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数(分数段为:>=90;80-89;70-79;60-69;<=59)此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。对学生成绩记录进行检索(按学号、姓名),成绩排序(按总成绩降序排列),退出,最好用到文件处理。二、需求分析2.1功能描述学生成绩管理,最基本能实现的的功能是输入学号,同时显示该学生的基本的信息,我设计的成绩管理系统功能还包括了显示该生的语文,英语,数学三门学科的成绩,求出了该生的总分,以及该生的平均分,动态输入学生的成绩,而且成绩是按照三位数显示的,可以输入任意多的学生人数,每个学生都是三门课程,最后统计输入所有学生的各科各个分数段的人数,最后显示出所有学生的成绩排名情况。为了使系统更实际一些,我设计的系统包括建立了文件,方便学生的信息一次录入之后可以保存该数据,将该数据保存在名为score的txt文件中,而且文件的路径与该软件默认的安装路径一致;为了使系统更方便用户使用,我设计了菜单,菜单中设计了六个功能,包括插入,删除,查询,修改,查看,退出等。2.2功能模块分析学生信息输入功能这是必不缺少的功能,学号的输入,成绩的输入都离不了这个功能,在输入成绩时,特地加了一个判断功能,在输入不合理的成绩时,程序将提示出错,并要求重新输入。在输入学生学号的时候,程序首先会判断此学生的成绩是否存在,如果存在,则程序提示需重新输入。插入一条学生记录子模块,搜索可用单元,接收输入的记录,并写入文件。建立成绩表子模块,控制输入界面,并多次调用插入记录子模块,完成成绩的建立。学生信息修改功能考虑到会存在在输入成绩时,容易输入错误,或者发生个别学生的试卷被误判需修改成绩等情况,所以加了此功能,在发生以上情况时可以调用此功能,修改指定学生的成绩。学生信息删除功能如果输入的学生信息根本不存在,或者发生其它情况需删除一个无意义的学生信息时,可以调用此功能。此功能将实现将指定学号学生的信息删除。学生信息查找功能当需要查询某个学生的成绩或者检查输入是否有误时,可以调用此功能,此功能实现将指定学号学生的成绩显示出来。实际上在调用此功能的同时,程序会首先求的总成绩,平均成绩,然后产生排名结果,最后将数据信息显示。显示排名信息功能此功能会将学生成绩自动相加,得到每位学生的总成绩及平均成绩,然后进行排名,得到每个学生的名词,最后按照输入顺序将所有学生的学号,语文成绩,英语成绩,数学成绩,平均成绩,总成绩,名次依次输出。模块中排名处理、学科平均成绩计算均需取出某一学科的所有学生成绩,因而此操作作为公用子程序以供调用。个人总分及平均分处理较为简单,根据索引逐条处理记录。排名处理。排名结果为一维数组,与学科成绩存在对应关系。查询学生记录,先进行学号匹配,再输出一条记录;查询该生的所有信息。文件写入及退出功能此功能实现将学生的信息保存在一个文件里。此程序默认将文件放在C盘下,名称为:score,属性为txt格式的文本文档。该文档能够保存数据,以便数据不需要重复录入,是系统更能满足用户需求。写入文件完毕后,关闭文件,并退出程序。三、设计方案开始开始3.1系统流程图开始开始YYN是i?调用Insert子程序显示菜单输入一个字符打开文件从终端接收用户的输入记录记录写入文件置文件指针到文件尾是m?YYN是i?调用Insert子程序显示菜单输入一个字符打开文件从终端接收用户的输入记录记录写入文件置文件指针到文件尾是m? Y调用Modify子程序关闭文件并返回N是f?Y调用Modify子程序关闭文件并返回N是f?图2Inset子程序调用Find子程序N是esc?调用Count子程序Y是c?结束程序Y文件指针后退一个记录Y是s?打开文件读一个记录N是否为要修改记录开始N调用Rank子程序调用Find子程序N是esc?调用Count子程序Y是c?结束程序Y文件指针后退一个记录Y是s?打开文件读一个记录N是否为要修改记录开始N调用Rank子程序NN图1主程序写入修改记录并关闭文件返回写入修改记录并关闭文件返回 图3modify子程序YNY开始打开文件接收删除记录读一条记录学号相同?删除该记录关闭文件返回YN开始打开文件接收删除记录读一条记录对数学成绩分段并统计指针到文件尾显示统计结果关闭文件YNY开始打开文件接收删除记录读一条记录学号相同?删除该记录关闭文件返回YN开始打开文件接收删除记录读一条记录对数学成绩分段并统计指针到文件尾显示统计结果关闭文件返回图4delete子程序返回图5count子程序3.2子程序模块设计(1)INSERT子程序INSERT子程序的功能是录入一条记录。首先保留现场入栈,然后DOS中断3D号功能打开FNAME指定的文件,然后宏GETIN清除屏幕右半部分的记录输入区域。在记录的第一项处置光标,用INTPUT获取记录内容,用DOS中断42H号功能将指针移到文件末尾。再用DOS中断40H号功能将放在BUFFER缓冲区的23个字节的内容写到文件中,接着关闭文件,重新设置光标位置在显示记录位置。最后弹栈恢复现场。(2)MODIFY子程序MODIFY子程序的功能是修改记录。先保护现场,然后清除右上部分的记录输入区域,接着打开文件。用input子程序获取输入的记录信息,并存入BUFFER1中。从打开的文件中读取一个记录的内容(23个字节)放在BUFFER2中。比较记录前面的15个字节(姓名),如果不同,则读取下一个记录;如果相同,则回移一个记录的指针,回到刚才这条记录的位置(因为读取一个记录后,指针已移到下一条记录上)。将放在BUFFER1中的输入的记录写到刚才这条记录在文件中的位置上,从而实现此记录的修改。最后关闭程序,恢复现场。(3)DELETE子程序DELETE子程序的功能是删除一条记录。首先保留现场,清除屏幕。然后打开文件,保留文件句柄。用宏GETIN获取15个字节的姓名字符,放在BUFFER1中。读取一条记录(23个字节),放在BUFFER2中,然后和BUFFER1中内容比较,如果不同,读取下一条记录。如果姓名相同,则把指针后移6个字符(3门功课所占空间),写入6个“0”字符。关闭文件,恢复现场并退出。(4)FIND子程序FIND子程序的功能是打印文件中的记录。用OPENF子程序打开文件。读取一条记录,汇编语言提供了自定义数据结构的结构定义语句,可将不同的数据类型放在一个数据结构中,便于处理,在本程序中的记录就采用了结构定义语句。这里读取记录也用了结构的方法。接着用DOS中断21H的5号功能,逐字打印存放在BUFFER1中的所以字符。一条记录打完后,打印回车符换行。然后用同样方法继续读取下一条记录并打印,直到文件结束为止。最后关闭文件退出。(5)COUNT子程序COUNT子程序的作用是统计各分数段小说人数,并简化程序,作为示例,本程序只统计记录数学各分数段的人数。首先显示统计结果的标题:maths<60<70<80<90<100。然后打开文件。读取记录,将记录的第16个字符(数学分数的高位)取出比较。统计结果依次放在以BUFFER3开头的内存单元中,如果小于60,则将小于60的记录单元BUFFER3加一;若小于70,则将小于70的记录单元BUFFER3加一,即BUFFER3下一个地址单元内容加一,依次类推。处理完后再读取下个记录,作同样处理,直到文件结束为止。接着显示放在BUFFER3中的各分数段的人数的统计结果,最后关闭文件结束。从程序中可以看出,统计时程序有个限制,本例每个分数段最多不能超过9个人。3.3详细设计(1)INSERT子程序insertprocnearcallinputaddn,1retinsertendpinputprocneare6:outputmess1shurumovbl,nmovbh,0movxh[bx],dlcmpbx,0jeqq1movcl,ncbwmovsi,0moval,xh[bx]e7:cmpal,xh[si]jee5addsi,1loope7jmpqq1e5:outputts4jmpe6qq1:outputmess2outputmess4movsi,0movcx,3qq3:shuruucmpdx,78hjbeqq2outputts3jmpqq1qq2:movbuf[si],dloutputbgaddsi,1loopqq3movbl,ncbwmoval,buf[0]movchi[bx],almoval,buf[1]moveng[bx],almoval,buf[2]movmat[bx],alretinputendp(2)MODIFY子程序modifyprocnearmd1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0md:cmpal,xh[si]jeqq1_1addsi,1cmpsi,bxjbemdoutputmessjmpmd1qq1_1:movdi,sioutputmess2outputmess4movsi,0movcx,3qq3_1:shuruucmpdx,78hjbeqq2_1outputts3jmpqq1_1qq2_1:movbuf[si],dloutputbgaddsi,1loopqq3_1moval,buf[0]movchi[di],almoval,buf[1]moveng[di],almoval,buf[2]movmat[di],alretmodifyendp(3)DELETE子程序deleteprocnearsc1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0sc:cmpal,xh[si]jesc2addsi,1cmpsi,bxjbescoutputmessjmpsc1sc2:subbx,sicmpbx,0jesc3movcx,bxsc4:movdl,chi[si+1]movchi[si],dlmovdl,eng[si+1]moveng[si],dlmovdl,mat[si+1]movmat[si],dlmovdl,xh[si+1]movxh[si],dladdsi,1loopsc4subn,1sc3:retdeleteendp(4)FIND子程序findprocnearcallsumcallpingbj1:outputmess1shurumovbl,nmovbh,0moval,dlmovsi,0bj:cmpal,xh[si]jeiaddsi,1cmpsi,bxjbebjoutputmessjmpbj1i:outputstrr2shuzixh[si]outputbgmoval,chi[si]cbwshuziiaxoutputbgmoval,eng[si]cbwshuziiaxoutputbgmoval,mat[si]cbwshuziiaxoutputbgmoval,pj[si]cbwshuziiaxoutputbgmovax,simovbl,2mulblmovbx,axshuziizc[bx]outputbgshuzimc[si]retfindendp(5)COUNT子程序countprocnearmovcx,5movsi,0zl:movgs0[si],0addsi,1loopzlmovcl,nmovch,0movsi,0c11:moval,chi[si]cmpal,90jlcc1addgs0[0],1jmpcc8cc1:cmpal,80jlcc2addgs0[1],1jmpcc8cc2:cmpal,70jlcc3addgs0[2],1jmpcc8cc3:cmpal,60jlcc4addgs0[3],1jmpcc8cc4:addgs0[4],1cc8:addsi,1loopc11leasi,gs0leadi,gs1movcx,5cldrepmovsbmovcx,5movsi,0cc9:movgs0[si],0addsi,1loopcc9movcl,nmovch,0movsi,0movcl,nmovch,0movsi,0c111:moval,eng[si]cmpal,90jlcc15addgs0[0],1jmpcc88cc15:cmpal,80jlcc22addgs0[1],1jmpcc88cc22:cmpal,70jlcc33addgs0[2],1jmpcc88cc33:cmpal,60jlcc44addgs0[3],1jmpcc88cc44:addgs0[4],1cc88:addsi,1loopc111leasi,gs0leadi,gs2movcx,5cldrepmovsbmovcx,5movsi,0ct:movgs0[si],0addsi,1loopctmovcl,nmovch,0movsi,0c13:moval,mat[si]cmpal,90jlcc1_2addgs0[0],1jmpcc8_2cc1_2:cmpal,80jlcc2_2addgs0[1],1jmpcc8_2cc2_2:cmpal,70jlcc3_2addgs0[2],1jmpcc8_2cc3_2:cmpal,60jlcc4_2addgs0[3],1jmpcc8_2cc4_2:addgs0[4],1cc8_2:addsi,1loopc13retcountendpPAGEPAGE293.4程序调试结果及分析3.4.1主界面:3.4.2录入学生信息界面:3.4.3修改学生信息界面:3.4.4删除学生信息界面3.4.5查找学生信息界面:3.4.6显示分数段界面:四、结论与心得4.1自我评价这次任务的完成发现了自己很大的不足,对自己汇编语言程序设计的掌握很不满意。由于平时对汇编程序练习的相对欠缺,导致这次任务的完成很大程度上依靠各种书籍和网络资源,在以后的学习中自己一定会加倍的努力学习,尽全力自己完成任务。4.2缺点和不足(1)成绩是用整数来表示的,没有实现浮点运算(2)主菜单界面设计不够人性化,不够简单明了,缺少美观(3)程序的健壮性不够,不规则的输入很有可能使程序错误(4)学生信息相对较少,实用价值较低4.3开发感悟在编程的过程中遇到了很多意想不到的困难,也是在这个时候才知道自己有很多应该掌握的知识而没有掌握,认识到了自己很多的不足。自己一个人解决起来有很大的困难,于是也少不了同学的帮助和对网络资源的利用。与此同时深刻体会到程序开发不只是一两个人就能很好的完成的,要大家互相帮助,共同探讨问题,团队的力量是无穷的,只有这样才能更好的解决困难。同时也学会在接到一个任务的时候应该仔细考虑整个程序的框架,并做好规划,指定一系列的解决问题的方法,然后在编程,盲目的动手编写程序只会让以后的工作很难展开,我相信通过这次的学习在以后面对编程的任务我会更有经验,更加得心应手。五、参考文献[1]易小琳.计算机组成原理与汇编语言.北京:清华大学出版社,2009.[2]钱晓捷.新版汇编语言程序设计.北京:电子工业出版社,2008.[3]唐朔飞.计算机组成原理.2版.北京:高等教育出版社,2008.[4]洪志全
,罗省贤.汇编语言程序设计教程.北京:电子工业出版社,2004[5]俸远祯,王正智,徐洁等.计算机组成原理与汇编语言程序设计.北京:电子工业出版社,1999.课程设计课程名称___操作系统__________题目名称___多级文件系统-1_____学生学院___计算机学院________专业班级__网络3班______学号______学生姓名_________指导教师______目录TOC\o"1-2"\h\z\u1.设计目的42.设计内容43.运行环境及开发技术说明44.设计步骤55.心得体会166.主要实现代码161.设计目的:本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。2.设计内容:首先在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。其中文件物理结构可采用显式链接。另外磁盘空闲空间的管理选择位示图。由于采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。另外设计一个的用户界面,提供以下相关文件操作:(1)具有login(用户登录);(2)系统初始化(建文件卷、提供登录模块);(3)文件的创建:create;(4)文件的打开:open;(5)文件的读:read;(6)文件的写:write;(7)文件关闭:close;(8)删除文件:delete;(9)创建目录(建立子目录):mkdir;(10)改变当前目录:cd;(11)列出文件目录:dir;(12)退出:logout。3.运行环境及开发技术说明:1.本课程设计是用web的形式模拟多级用户多目录文件系统。本系统用到技术有jsp+Tomcat+mysql。2.系统运行的环境:配置好java的jre1.5及以上版本,Tomcat6.0版本,mysql5.5版本,eclipse10.0版本。3.运行系统说明:将项目导入eclipse或者直接把项目文件夹复制到tomcat的webapp目录下,打开tomcat服务器,再在浏览器地址栏输入即可进入系统的登录页面:4.设计步骤:(1)需求分析。本系统为多用户多目录的文件管理系统,用户可以对文件或是文件目录进行操作。多用户功能可以满足不同用户不同的需求,同时因增加了管理员登陆和用户登录功能使得系统起到了很好的保密作用。文件系统是操作系统中负责管理和存取文件信息的机构,它具有“按名存取”的功能,已使得用户能透明的存储和访问文件。为了是实现按名存取,文件需要对文件存储设备进行合理化的组织,分配;对存储设备上的文件进行保护,保密和提供共享的手段。文件系统主要实现对具体的文件存取空间的管理、文件的物理结构、目录结构管理和文件操作。另外文件系统还要提供检索文件或是文件中记录的手段,文件系统就是完成上述功能的一组软件和数据结构的集合。而模拟一个多用户多级目录的文件管理系统,要完成对文件的基本操作,文件的基本操作有文件,文件夹的新建、打开、读取、写入文件、创建更改目录、修改文件内容、删除、列出目录内容等信息。系统建立了文件目录树,存储文件中的所有文件。对于用户名下的文件,用文件目录树的分枝来存储。另外由于文件系统提供了安全保密功能,所有模拟文件系统还需要有管理员登陆和创建用户和用户登录,密码修改等功能。另外,为了方便操作,还需模拟一个操作界面,方便用户进行操作。(2)概要设计:1).设计思想文件系统是操作系统中负责管理和存取文件信息的机构,它具有“按名存取”的功能。文件系统主要实现对具体的文件存取空间的管理、文件的物理结构、目录结构管理和文件操作。本实验中的文件系统是多用户多级目录的文件系统。实验中定义用户的上限为5个,目录结构采用多级目录结构2).抽象数据类型的定义//连接数据库在数据类型保存在数据库中/*createdatabasehomework;*/usehomework;/*用户表*/createtableuser(idintprimarykeyauto_increment,namevarchar(100),passwordvarchar(150));/*目录表*/createtabledirectory(idintprimarykeyauto_increment,namevarchar(100),pathpvarchar(100),/*表途径*/pdatedatetime);/*文件表*/createtableufile(idintprimarykeyauto_increment,namevarchar(100),contentvarchar(100),/*文件内容*/pdatedatetime,pathuvarchar(100)/*表途径*/);createtablepriority(idintprimarykeyauto_increment,fileNamevarchar(100),/*文件名称*/userNamevarchar(100),/*用户名*/rint,/*1表示可读,0表示不可读*/wint,/*1表示可写,0表示不可写*/exeint/*1表示可执行,0表示不可执行*/ );/*insertintoufilevaules(null,'a','aa',,now(),'A')*//*初始化目录表*/insertintodirectoryvalues(null,'root','A',now());insertintodirectoryvalues(null,'root','B',now());insertintodirectoryvalues(null,'root','C',now());3).主程序的流程以及各程序模块之间的层次(调用)关系。在系统中设置了用户登陆模式。用户初始化时不存在,则可在注册。注册成功后方可进行登录,登录成功后则可进行一系列的操作。如用户注册:register.jsp用户登录:login.jsp磁盘的初始化:art_mana.jsp//建立3个分区文件的创建:info_ufile.jsp //建立新文件文件的打开:file_mana.jsp //打开文件文件删除:delete__file.jsp //删除文件文件的读:check_file.jsp//查看文件创建目录(建立子目录):info_dir.jsp //建立新目录查看当前目录:file_mana.jsp//显示目录删除目录:delete_dir.jsp //删除目录 返回上一级目录:main.jsp //向上返回退出:main.jsp//退出功能(3)详细设计:实现概要设计中定义的功能;画出函数的调用关系图;画出各程序流程图。(4)部分功能模块流程图:用户登录模块 用户首次登录要注册,用户登录模块要求用户输入账号与密码,当输入正确后进入主视图才能进行其他模块操作,否则提示账号密码错误并要求用户重新输入。用户包括普通用户和超级用户。超级用户可以修改其他用户的权限,使他们可以修改其他用户创建的文件。用户登录用户登录首次登录首次登录注册yes注册no注册成功用户名和密码正确Yesno注册成功用户名和密码正确进入系统no进入系统B.修改文件功能结构图修改文件修改文件是创建本文件的用户是创建本文件的用户修改失败yes修改失败no该用户分配到修改权限该用户分配到修改权限no修改成功修改成功yes(5)系统测试:列出所有系统功能的测试结果,测试数据应该完整、严格,应该至少包含需求分析中所列。1)若不是用户先注册注册如下:2)用户登录功能:登录成功后可进行用户的操作:3)系统初始化:及磁盘的分区目录的创建:(创建子目录)在A盘下创建目录home结果如下:5)创建文件如在A盘目录home中创建文件myfile如下6)文件的打开:(查看)7)文件的读取结果如下8)文件的写:(修改)结果如下:9)文件的删除(删除)删除myfile结果如下10)改变当前目录(修改)将home修改为home-lzf结果如下11)列出目录如B目录下有目录和文件12)用户修改密码的功能:13)用户退出功能返回用户登录界面14)用其他用户zj登录修改前面lzf用户创建的文件myfile2修改myfile2文件结果如下图:用root用户修改zj对myfile2的权限修改,时他能修改myfile2修改权限修改后,再用zj用户修改lzf用户创建的文件myfile2(6)系统文件说明Register.jsp:用户注册;login.jsp:用户登录;art_mana.jsp:磁盘初始化;info_dir.jsp建立目录Info_ufile.jsp新建文件,file_mana.jsp打开文件,delete_file.jsp删除文件;check_file.jsp查看文件;main.jsp主页面,prioritDdit.jsp修改权限;priorityEditDeal.jsp修改权限处理。faithConn.jsp连接错误页面;faithregister.jsp注册错误页面。5.心得体会。 在做课程设计的过程中遇到很多的问题,因为是用javaweb来做的,系统在显示的效果上并不是很好,但是都基本上完成了实验的要求,如多用户多目录的文件系统要求的多用户登录,每个用户进去后都可以创建自己的目录和文件。但是每个用户创建的文件只能是自己修改,除非root用户修改其他用户的权限。在编程此系统时,方发觉自己对文件系统理解得不够透彻。例如在考虑如何实现多用户多目录时,虽然书本上树行目录的图看起来很清晰,但一编程起来就好像往二级目录思路那样编程了。通过这次实验,让我对操作系统的多级用户多目录文件系统有了更深的理解,对文件系统的文件组织形式和存储方式有了更深的理解。最后通过用java编程有加深了对java知识点的理解和javaweb的理解。总之,这次课程设计让自己受益匪浅。6.主要实现代码。(1)相关类定义A)连接数据库类publicclassDB{ publicstaticConnectiongetConn(){ Connectionconn=null; try{ Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/homework","root","123456"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } returnconn; } publicstaticStatementcreateStmt(Connectionconn){ Statementstmt=null; try{ stmt=conn.createStatement(); }catch(SQLExceptione){ e.printStackTrace(); } returnstmt; } publicstaticResultSetexecuteQuery(Statementstmt,Stringsql){ ResultSetrs=null; try{ rs=stmt.executeQuery(sql); }catch(SQLExceptione){ e.printStackTrace(); } returnrs; }}B)目录类publicclassDirectory{ privateintid; privateStringname; privateStringpathp;/*父节点,表途径*/ privateDatepdate; publicvoidsaveRs(ResultSetrs){ try{ setId(rs.getInt("id")); setName(rs.getString("name")); setPathp(rs.getString("pathp")); setPdate(rs.getTimestamp("pdate")); }catch(SQLExceptione){ e.printStackTrace(); } }C)权限类publicclassPriority{ privateintid; privateStringfileName; privateStringuserName; privateintr; privateintw; privateintexe; publicvoidsaveRs(ResultSetrs){ try{ setId(rs.getInt("id")); setFileName(rs.getString("fileName")); setUserName(rs.getString("userName")); setR(rs.getInt("r")); setW(rs.getInt("w")); setExe(rs.getInt("exe")); }catch(SQLExceptione){ e.printStackTrace(); } }D)文件类/*文件表*/publicclassUfile{ privateintid; privateStringname; privateStringcontent; privateDatepdate; privateStringpathu;/*表路径*/ publicvoidsaveRs(ResultSetrs){ try{ setId(rs.getInt("id")); setName(rs.getString("name")); setContent(rs.getString("content")); setPdate(rs.getTimestamp("pdate")); setPathu(rs.getString("pathu")); }catch(SQLExceptione){ e.printStackTrace(); } }E)用户文件表publicclassUser{ privateintid; privateStringname; privateStringpassword; publicvoidsaveRs(ResultSetrs){ try{ setId(rs.getInt("id")); setName(rs.getString(name)); setPassword(rs.getString(password)); }catch(SQLExceptione){ e.printStackTrace(); } }(2)登录功能代码:<%booleansuccess=true; request.setCharacterEncoding("GBK"); Stringusername=(String)request.getParameter("username"); System.out.println(username); Stringpassword=(String)request.getParameter("password"); System.out.println(password); Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); Stringsql="select*fromuserwherename='"+username+"'andpassword='"+password+"'"; System.out.print(sql); ResultSetrs=DB.executeQuery(stmt,sql);if(!rs.next()){success=false;} DB.close(rs); DB.close(stmt); DB.close(conn); if(success){ session.setAttribute("username",username);response.sendRedirect("mian.jsp"); }else{ out.print("登录失败,请重新登录"); response.sendRedirect("faithlogin.jsp"); } %>(3)注册功能代码<%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Stringrepassword=request.getParameter("repassword");if(username!=null&&password!=null&&repassword.equals(password)){session.setAttribute("username",username);session.setAttribute("password",password);response.sendRedirect("check_register.jsp");}%><scripttype="text/javascript">functioncheck(){if(form.username.value==""){alert("请输入用户名!");form.username.focus();returnfalse;}if(form.password.value==""){alert("请输入密码!");form.password.focus();returnfalse;}}</script>(4)创建目录代码<% request.setCharacterEncoding("GBK"); Stringppath=(String)session.getAttribute("ppath"); Stringaction=request.getParameter("action"); if(action!=null&&action.trim().equals("post")){ Stringname=(String)request.getParameter("name"); System.out.println(name); //Stringppath=(String)request.getParameter("ppath"); //System.out.println(path); Stringtpath=(ppath+'/'+name).trim(); Connectionconn=DB.getConn(); booleanautoCommit=conn.getAutoCommit(); conn.setAutoCommit(false); //insertintodirectoryvalues(null,'root','A',now()); Stringsql="insertintodirectoryvalues(null,?,?,now())"; PreparedStatementpstmt=DB.prepareStmt(conn,sql,Statement.RETURN_GENERATED_KEYS); pstmt.setString(1,name); pstmt.setString(2,tpath); pstmt.executeUpdate(); mit(); conn.setAutoCommit(autoCommit); DB.close(pstmt); DB.close(conn); response.sendRedirect("art_mana.jsp"); }else{ Stringpathp=request.getParameter("pathp");System.out.println(pathp);session.setAttribute("ppath",pathp); }%>(5)创建文件代码:<% request.setCharacterEncoding("GBK"); Stringppath=(String)session.getAttribute("ppath"); System.out.println(ppath+"路径2"); Stringaction=request.getParameter("action"); if(action!=null&&action.trim().equals("post")){ Stringname=(String)request.getParameter("name"); System.out.println(name); Stringcontent=(String)request.getParameter("content"); System.out.println(content); StringuserName=(String)session.getAttribute("username"); /*intr=request.getParameter("r"); System.out.println(r); intw=(Integer)request.getParameter("w"); System.out.println(w); intexe=(Integer)request.getParameter("exe"); System.out.println(exe); //Stringppath=(String)request.getParameter("ppath"); //System.out.println(path);*/ Connectionconn=DB.getConn(); booleanautoCommit=conn.getAutoCommit(); conn.setAutoCommit(false); /*insertintoufilevaules(null,'a','aa','A',now(),1,1,1)*/ Stringsql="insertintoufilevalues(null,?,?,now(),?)"; StringprioritySql="insertintopriorityvalues(null,?,?,1,1,1)"; PreparedStatementpstmt=DB.prepareStmt(conn,sql,Statement.RETURN_GENERATED_KEYS); PreparedStatementp2stmt=DB.prepareStmt(conn,prioritySql,Statement.RETURN_GENERATED_KEYS); pstmt.setString(1,name); pstmt.setString(2,content); pstmt.setString(3,ppath); pstmt.executeUpdate(); //加入权限表 p2stmt.setString(1,name); p2stmt.setString(2,userName); p2stmt.executeUpdate(); mit(); conn.setAutoCommit(autoCommit); DB.close(pstmt); DB.close(conn); response.sendRedirect("art_mana.jsp"); }else{ Stringpathp=(String)request.getParameter("pathp");System.out.println(pathp+"途径1");session.setAttribute("ppath",pathp); }%>(6)编辑文件代码<%Stringname=null;Stringcontent=null;Stringpathu=null; request.setCharacterEncoding("GBK"); intid=Integer.parseInt(request.getParameter("id")); System.out.print(id+"3333333"); Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); Stringsql="select*fromufilewhereid='"+id+"'"; System.out.print(sql); ResultSetrs=DB.executeQuery(stmt,sql); if(rs.next()){ name=rs.getString("name"); content=rs.getString("content"); pathu=rs.getString("pathu"); System.out.print(name); System.out.print(content); } DB.close(rs); DB.close(stmt); DB.close(conn); %>(7)修改权限代码<% request.setCharacterEncoding("GBK");Stringfilename=(String)request.getParameter("filename");Stringusername=(String)request.getParameter("username");intr=0;intw=0;intexe=0; PrintWriterpout=response.getWriter(); Connectioncconn=DB.getConn(); Statementcstmt=DB.createStmt(cconn); Stringcsql="select*fromprioritywherefilename='"+filename+"'"+"andusername='"+username+"'"; ResultSetcrs=DB.executeQuery(cstmt,csql); if(crs.next()){ filename=crs.getString("filename"); username=crs.getString("username"); r=crs.getInt("r"); w=crs.getInt("w"); exe=crs.getInt("exe"); } %><html><body>pageofpriorityedit...<formaction="priorityEditDeal.jsp"method="post"><inputtype="hidden"name="id"/><label>文件名:</label><inputtype="text"name="filename"value=<%=filename%>/><br><label>用户名:</label><inputtype="text"name="username"value=<%=username%>/><br><label>可  读:</label><inputtype="text"name="r"value=<%=r%>/><br><label>可  写:</label><inputtype="text"name="w"value=<%=w%>/><br><label>可执行:</label><inputtype="text"name="exe"value=<%=exe%>/><br><inputtype="submit"value="提交"/><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><% request.setCharacterEncoding("GBK");Stringfilename=(String)request.getParameter("filename");Stringusername=(String)request.getParameter("username");intr=Integer.parseInt(request.getParameter("r")); intw=Integer.parseInt(request.getParameter("w")); intexe=Integer.parseInt(request.getParameter("exe")); System.out.println(filename+"#"+username+"#"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论