版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生考勤管理系统 姓名:唐吉 学号:2012214469学院:软件学院 系别:软件工程系 班级:2012级06班 指导老师:张学旺 夏鹏摘要20世纪末,随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。本系统主要针对目前高校学生在线请假以及学生出勤管理而设计的信息系统。本系统总体上是考勤系统模块,统涉及到高校三大类用户:学生、任课老师、系统管理员。本高校学生考勤管理系统,本论文重点介绍本系统考勤系统功能模块设计,完成学生、任课老师、系统管理员三类用户功能的设计与实现。专业实习任务概述学生能能够实现登陆登出,查看出勤记录查看和修改个
2、人资料。修改密码教师能够实现登陆登出,按教学搬家添加修稿查看考勤记录 ,查看个人资料,修改密码管理员能偶实现登陆登出,对课程信息院系信息班级信息专业信息进行设置,对教师和学生信息进行设置等操作专业实习任务执行情况:系统功能模块图:数据库系统数据库系统学生任课老师 教务管理员查看本人基本信息在线请假查看上课出勤信息查看本人信息修改个人密码管理所教班级学生的上课出勤信息以及批准学生请假查看所教班级学生出勤信息管理学校院系年级专业班级的添加、删除和修 改更新每学期每个班级课程及任课老师的安排查看学生上课出勤信息管理系统的请假考勤信息 系统功能结构 数据流图:学生请假学生请假任课老师审批请假成功请假失
3、败请假记录同意不同意请假系统数据流图数据处理任课老师请假系统旷课请假出勤记录请假记录考勤系统数据流图 数据流程图:开 始开 始身份验证与数据库核对字段是否匹配管理员主页进行相应操作结 束YN重新登录用户类型教师主页学生主页主要实体模型教务管理员教务管理员性别编号姓名职称权限请假记录请假天数学生学号申请时间开始时间请假原因学生出勤记录上课时间出勤情况学生学号课程名称班级出勤记录出勤人数班级名称课程名称考勤时间旷课人数迟到人数 E-R图学生学生出勤学生出勤记录选修课程讲授任课老师批准请假请假记录提交班级出勤记录学号姓名性别班级专业学院编号名称学分学时编号性别姓名班级课程学院学生学号课程号上课时间出
4、勤情况mn111n111n1n 使用T-SQL建立数据库教务管理员信息表admin字段名字段类型主/外键字段约束说明编号char(5)PNot Null管理员编号姓名char(10)Not Null管理员姓名性别char(1)Not Null管理员性别职称char(20)Not Null管理员职称权限char(10)Not Null管理员权限教务管理员表截图学生基本信息表student 字段名字段类型主/外键字段约束说明学生学号char(6)PNot Null学生学号姓名char(10)Not Null学生姓名性别char(1)Not Null性别班级名称char(13)Not Null所在班
5、级专业char(20)Not Null所属专业学院char(20)Not Null所属学院 学生表截图学生上课出勤记录表kaoqin_record 字段名数据类型主/外键字段约束说明学生学号char(6)pNot null学生学号课程编号char(14)pNot null课程号上课时间char(14)Not null上课时间出勤情况char(3)Not null出勤情况 学生出勤记录表截图请假信息表qingjia 字段名字段类型主/外键字段约束说明学生学号char(6)pNot null学生学号申请时间char(14)Not null请假时间开始时间char(14)Not null开始时间请假
6、天数smallintNot null天数请假原因char(80)pNot null原因审批状态char(5)Not null审批状态 请假信息表截图任课老师信息表teacher 字段名字段类型主/外键字段约束说明老师编号char(9)PNot Null老师编号老师姓名char(20)Not Null老师姓名性别char(1)Not Null性别所教班级char(13)Not Null所教班级所教课程char(20)Not Null所教课程所属学院char(20)Not Null所属学院 任课老师信息表截图考勤表字段名字段类型主/外键字段约束说明班级名称char(10)PNot Null上课班级
7、课程编号char(10)Not Null课程编号考勤时间char(10)Not Null考勤时间出勤人数smallintNot Null已到人数迟到人数smallintNot Null迟到人数旷课人数smallintNot Null旷课人数 任课老师考勤表表截图上课缺勤记录表 T_absenteeism 字段名数据类型主/外键字段约束说明学生学号char(6)PNot Null学生学号学生姓名char(10)Not Null学生姓名班级名称char(5)Not Null所在班级课程名称char(10)PNot Null课程名称缺勤状态char(10)Not Null缺勤情况 上课缺勤表截图 课
8、程信息表course字段名字段类型主/外键字段约束说明cou_nochar(8)pNot null课程编号cou_namechar(20)Not null课程名称cou_creditsmallintNot null课程学分cou_hourssmallintNot null课程学时课程信息表截图 学生选课表(T_stucourse)字段名字段类型主/外键字段约束说明stu_nochar(8)PNot null学生学号cou_nochar(8)PNot null所学课程号学生选课表截图专业实习成果展示用户登陆时操作页面如图所示:输入用户名和密码,然后在选择用户类型就能登陆到相应的操作界面。如果用户
9、名和密码不正确,那个会提示用户从新数据登录。考勤管理系统 记住 忘记密码 | 注册/通行证 管理员主界面的设计与实现 修改密码 用户信息 退出系统 首页 后退 前进 刷新 帮助 添加教师 教师管理 添加学生 学生管理 帮助 系统功能信息 用户分类添加教师界面的设计与实现 修改密码 用户信息 退出系统 首页 后退 前进 刷新 帮助 添加教师 教师管理 添加学生 学生管理 帮助 编号 用户名 密码 办公室 姓名 性别 操作 1. 2. 3. 4. 5. . 10 下一页 上一页 返回 教师管理界面的设计与实现添加学生界面的设计与实现 修改密码 用户信息 退出系统 首页 后退 前进 刷新 帮助 添加
10、教师 教师管理 添加学生 学生管理 帮助 用户名 密码 姓名 性别 男 女 老师 周杰伦 班级 备注 学生管理界面的设计与实现教师审核与查看界面的设计与实现7.8教师点名界面的设计与实现学生请假界面的设计与实现学生考勤信息查看界面的设计与实现 修改密码 用户信息 退出系统 首页 后退 前进 刷新 帮助 添加教师 教师管理 添加学生 学生管理 帮助 编号 用户名 密码 班级 姓名 性别 操作 1. 2. 3. 4. 5. . 10 下一页 上一页 返回 专业实习的收获体会:在这短短的时间里,让我深深的感觉到自己在实际应用中所学来专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。 这次实习除
11、了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。有时候不懂的就需要问别人了, 虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。附录资料:不需要的可以自行删除语言的常用库函数函数1。absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断
12、0 x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive=0对应A盘,drive=1对应B盘。返回值:0:成功;-1:失败。头文件:dos.h函数2。abswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer) drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。功能:将指定内容写入(调用DOS中断0 x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结
13、构、文件、FAT表和目录结构所在的扇区,也照常进行。返回值:0:成功;-1:失败。头文件:dos.h函数3。atof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型。s格式为:符号数字.数字E符号数字返回值:字符串的转换值。头文件:math.h、stdlib.h函数4。atoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.h函数5。atol()将字符串转
14、换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型。s格式为:符号数字返回值:字符串的转换值。若出错则返回0。头文件:stdlib.h函数6。bcd()把一个数转换成对应的BCD码的函数原形:bcd bcd(int x)bcd bcd(double x)bcd bcd(double x,int decimals)注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。头文件:bcd.h函数7。bdos()原形int bdos(int fnum,unsigned dx,unsigned a
15、l)其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;功能DOS系统调用(INT21H)返回值AX中的值函数8。biosdisk()调用BIOS磁盘驱动程序函数原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)功能:使用中断0 x13,直接调用BIOS进行磁盘操作参数:(1)cmd:2-数据以每扇区512字节的格式读入buffer,起始扇区由head、track和sector定,扇区数由nsects定。3-将buffer中的数据按每扇区51
16、2字节写入磁盘。4-对扇区进行数据校验。6-格式化一个磁盘并对化扇区设置化标志。8-返回当前驱动器参数在buffer的前4个字节中。10-长读,每扇区读入512字节加上额外的4个字节。11-长写,每扇区写入512字节加上额外的4个字节。(2)drive:0-第一个软驱;1-第二个软驱;0 x80-第一个硬驱(3)head:磁头(4)track:磁道(5)sector:扇区(6)nsects:扇区数(7)buffer:数据缓冲区,定义为unsigned char buffer;返回值:0 x00-操作成功0 x01-错误命令0 x03-企图写具有写保护的磁盘0 x07-驱动器参数设置错误0 x1
17、0-磁盘读/CRC/ECC错误头文件:bios.h注:对于硬盘主引导记录扇区head=0,track=0,sector=1函数9。biosprint()调用BIOS打印机I/O接口的函数原形:int biosprint(int cmd,int abyte,int port)功能:通过BIOS中断0 x17在由参数port指定的打印机上完成各种打印机功能。port=0(LPT1)=1(LPT2);cmd=0(打印字符abyte)1(初始化打印机端口)2(读打印机状态);abyte=0-255;返回值:打印机状态位0(设备超时);位3(I/O出错);位4(打印机已选择);位5(没纸);位6(打印机
18、确认);位7(不忙)头文件:bios.h函数10。calloc()分配内存函数原形:void *calloc(size_t nitems,size_t size)功能:在堆中分配一块内存,将该内存的内容全部清。返回值:返回指向新分配内存的指针。空间不够则返回NULL。头文件:stdlib.h、calloc.h函数11。ceil()原形double ceil(double num)功能求不小于num的最小双精度整数头文件math.h函数12。cgets()读字符串函数原形:char *cgets(char *str)功能:从控制台读入一个字符串,并将该字符串(和字符串长度)存入有str所指向的地
19、址中。注意:在调用cgets之前,必须将要读入的字符串最大长度存入str0中,返回时str1被设置为实际读入的字符数。实际字符串内容从str2开始,以空字符(0)结尾。返回值:指向str2的指针。头文件:conio.h函数13。chdir()改变当前目录的函数原形:int chdir(const char *path)功能:把由path指定的目录改为当前目录。path参数中可以指定驱动器号,如a:ddd, 但只是改变该驱动器上的当前目录,对当前活动驱动器上的当前目录无影响。返回值:0(成功);-1(失败)头文件:dir.h函数14。_chmod()改变文件存取权限的函数原形:int _chmo
20、d(const char *path,int func,int attrib)功能:读取(func=0时)或设置(func=1时)DOS文件属性。attrib=FA_RDONLY 只读attrib=FA_HIDDEN 隐藏文件attrib=FA_SYSTEM 系统文件attrib=FA_LABLE 卷标attrib=FA_DIREC 目录attrib=FA_ARCH 档案 返回值:失败时返回-1。成功时返回文件的属性字节,如果 返回值&FA_RDONLY 不等于0,则文件是只读文件;头文件:io.h、dos.h函数15。chmod()改变文件存取权限的函数原形:int chmod(const
21、char *path,int amode)功能:根据amode的值,设置由path所指文件的存取权限。amode的值存取权限S_IWRITE 允许写S_IREAD允许读(只读)S_IREAD|S_IWRITE 可读可写 返回值:0(成功);-1(失败)头文件:io.h、sysstat.h函数16。clock()原形long clock(void)功能测得从程序开始到调用处处理机所用的时间头文件time.h函数17。close()关闭文件函数原形:int close(int handle)功能:关闭由文件句柄所指向的文件,句柄是调用_creat、creat、creatnew、creattemp、
22、dup、dup2、_open或open时得到的。该函数并不在文件末尾写一个Ctrl-Z字符,如果想用该字符结束文件,必须显式地给出该字符。返回值:0(成功);-1(失败)头文件:io.h函数18。closegraph()关闭图形函数原形:void far closegraph(void)功能:释放图形系统分配的所有内存,将屏幕恢复到调用initgraph之前的模式。头文件:graphics.h函数19。cos()原形double cos(double arg)功能计算arg(弧度)的余弦值头文件math.h函数20。ctrlbrk()设置ctrl-break处理程序的函数原形:void ctr
23、lbrk(int(*handle)(void)功能:修改中断向量0 x23,使用新的ctrl-break中断处理函数。用法:ctrlbrk(函数名);先定义函数:int 函数名(void).头文件:dos.h函数21。delay()暂停函数原形:void delay(unsigned milliseconds)功能:暂停当前所执行的程序milliseconds毫秒。头文件:dos.h函数22。disable()屏蔽中断的宏原形:void disble(void)功能:屏蔽中断,只允许从外部设备来的不可屏蔽中断(NMI)。头文件:dos.h函数23。enable()开硬件中断的宏原形:void
24、enable(void)功能:开放中断,允许接受任何设备产生的中断。头文件:dos.h函数24。exec()加载并运行其它程序的函数族execl(),execle(),execlp(),execlpe(),execv(),execve(),execvp(),execvpe()原形 int execl(char *path,char *arg0,*arg1,.,*argn,NULL)int execle(char *path,char *arg0,*arg1,.,*argn,NULL,char *env)int execlp(char *path,char *arg0,*arg1,.,*argn
25、,NULL)int execlpe(char *path,char *arg0,*arg1,.,*argn,NULL,char *env)int execv(char *path,char *argv)int execve(char *path,char *argv,char *env)int execvp(char *path,char *argv)int execvpe(char *path,char *argv,char *env)其中,path是调用的子程序的文件名,在exec后面的后缀具有某种功能:p表示函数能够在由DOS环境变量PATH的目录中搜索子进程文件,如果path中未指明文
26、件所在目录,函数将首先在当前目录中找,然后在DOS环境变量指定的目录中找。l表示参数指针(arg0,.,argn)按单独参数传送。当预先知道要传送的参数个数时,通常用带后缀l的函数。v表示参数指针(arg0,.,argn)按指针数组传送。当要传送的参数可变时,使用带后缀v的函数。e表示参数env可以传送到子进程,该函数可用来修改子进程的环境。若无e后缀,子进程将继承父进程的环境。注意:arg0+.+argn,或arg0+.+argn的总长度必需小于128字节。当调用exec函数时,原先已经打开的文件在子进程中仍然是打开的。功能:加载并运行其它程序,调用时必须有足够的内存空间用于加载和执行子程序
27、,子程序将覆盖父程序。头文件:process.h 函数25。farcalloc()从远堆中分配内存的函数原形:void far *farcalloc(unsigned long nunits,unsigned long unitsz)功能:从远堆中为包含nunits个元素的数组分配内存,每一区unitsz字节长。用法:fptr=farcalloc(数目,sizeof(char);先定义:char far *fptr;注意:所有可用RAM能被分配;大于64的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配块的指针,若内存不够,则返回NULL。头文件:alloc.h函数26。fa
28、rfree()从远堆中释放一块已分配内存的函数原形:void farfree(void far *block)头文件:alloc.h函数27。farmalloc()从远堆中分配内存的函数原形:void far *farmalloc(unsigned long nbytes)使用方式:fptr=farmalloc(字节数);先定义char far *fptr;功能:从远堆中分配长nbytes字节的内存。注意:所有可用RAM能被分配;大于64的块能被分配;用远指针存取该块。微模式不能用。返回值:返回指向新分配内存的指针,若内存不够,则返回NULL。头文件:alloc.h函数28。farreallo
29、c()调整远堆中已分配块的函数原形:void far *farrealloc(void far *oldblock,unsigned long nbytes)返回值:返回调整后的新内存地址。若不能重新分配,则返回NULL。头文件:alloc.h函数29。fclose()关闭一个流函数原形:int fclose(FILE *stream)使用方式:fclose(文件指针名);其中文件指针名=fopen();功能:关闭指定的流,关闭前清除所有与stream相联的缓冲区,释放系统分配的缓冲区,但由setbuf设置的缓冲区不能自动释放。返回值:0(成功);EOF(失败)头文件:stdio.h函数30。
30、fcloseall()关闭打开的流的函数原形:int fcloseall(void)功能:关闭所有打开的流,由stdin、stdout、stdprn、stderr和stdaux设置的流除外。返回值:关闭流的总数。如果发现错误则返回EOF。头文件:stdio.h 函数31。feof()检查文件是否结束的函数原形int feof(FILE *fp)返回值文件结束返回非0值,否则返回0。头文件stdio.h函数32。fgets()从流中读取一字符串的函数原形:char *fgets(char s,int n,FILE *stream)使用格式:fgets(字符串指针,字符个数,文件指针)功能:从输入
31、流stream中读入字符存到s串中。当读了n-1个字符或遇到换行符时,函数停止读过程。fgets在s串尾保留换行字符。读入的最后一个字符后面加一个空字符。返回值:成功时返回字符串参数s,出错或遇到文件结束时,返回NULL。头文件:stdio.h函数33。findfirst()函数和findnext()函数调用方式:整形数=findfirst(文件名,&结构变量名,属性常数组合(如0 x26);其中定义struct ffblk 结构变量名;原形:int findfirst(path,buffer,attr)和int findnext(buffer)char *path;/要检索的文件名struc
32、t ffblkchar ff_reserved21;char ff_attrib;/被检索的文件属性unsigned ff_ftime;/最后修改的时间/(0-4位:秒数/2;5-10位:分数;11-15位:小时数)unsigned ff_fdate;/最后修改的日期/(0-4位:日;5-8位:月;9-15位:年减1980)long ff_fsize;/文件大小char ff_name13;/组名*buffer;int attr;/要检索的文件属性功能:检索由path和attr指定的文件,把结果返回到buffer。findfirst返回关于第一个指定文件的信息,findnext继续检索。返回值
33、:0(检索成功),-1(没有找到指定的文件)属性常数:FA_NORMAL(0 x00)含意:Normal file, no attributes FA_RDONLY(0 x01)含意:只读FA_HIDDEN(0 x02)含意:隐含文件FA_SYSTEM(0 x04)含意:系统文件FA_LABEL(0 x08) 含意:卷标FA_DIREC(0 x10) 含意:子目录FA_ARCH(0 x20)含意:修改的文件Archive头文件:dir.h(dos.h)函数34。floodfill()填充区域的函数原形:void far floodfill(int x,int y,int border)功能:在
34、图形设备上用颜色border围起来的区域将用当前填充颜色填充。(x,y)是待填充区域的起点,若起点在封闭区域内,则区域内被填充;若起点在封闭区域外,则区域外被填充。头文件:graphics.h函数35。floor()原形double floor(double num)功能求不大于num的最大双精度整数头文件math.h函数36。fnmerge()建立文件路径函数原形:void fnmerge(char *path,const char *drive,const char *dir, const char *name,const char *ext)功能:合成drive:dirname.ext,
35、放在path头文件:dir.h函数37。fnsplit()分解完整的路径名函数原形:int fnsplit(char *path,const char *drive,const char *dir,const char *name,const char *ext)功能:把文件名路径path分成4个部分存放。其中drive中有冒号;dir中有开始和结尾的反斜杠;ext包括开始圆点返回值:如果有扩展名,则返回值&EXTENSION!=0如果有文件名,则返回值&FILENAME!=0如果有目录名,则返回值&DIRECTORY!=0如果有驱动器号,则返回值&DIRVE!=0头文件:dir.h 函数38
36、。fopen()打开一个流函数原形:FILE *fopen(const char *filename,const char *mode)功能:打开用filename指定的文件,并使其与一个流相联。使用方式:文件指针名fopen(文件名,处理方式)处理方式取:rt打开一个文本文件,只能读。wt生成一个文本文件,只能写。若文件存在则被重写。at打开一个文本文件,只能在文件尾部添加。rb打开一个二进制文件,只能读。wb生成一个二进制文件,只能写。ab打开一个二进制文件,只能在文件尾部添加。rt+ 打开一个文本文件,可读可写。wt+ 生成一个文本文件,可读可写。at+ 打开一个文本文件,可读可添加。r
37、b+ 打开一个二进制文件,可读可写。wb+ 生成一个二进制文件,可读可写。ab+ 打开一个二进制文件,可读可添加。返回值:指明流的指针(成功时)或NULL(失败时)注:需先定义 FILE *文件指针名;文件名若用 argv1代替,则可使用命令行形式指定文件名函数39。FP_OFF()获取远地址偏移量的宏原形:unsigned FP_OFF(void far *p)功能:取得和设置远指针*p的偏移量返回值:偏移量头文件:dos.h 函数40。fprintf()传送输出到一个流中的函数原形:int fprintf(FILE *stream,const char *format,argument,.
38、)功能:向文件指针指向的文件输出ASC代码向显示器输出错误信息 使用形式:fprintf(文件指针,输出格式,输出项系列);fprintf(stderr,错误信息);使用实例:fprintf(stream,%d %c %f,i,c,f);其中定义FILE *stream;int i;char c;float f;返回值:成功则返回输出的字节数,错误则返回EOF。头文件:stdio.h函数41。FP_SEG()获取远地址段值的宏原形:unsigned FP_SEG(void far *p)功能:取得和设置远指针*p段地址值返回值:段地址值头文件:dos.hfree()释放已分配内存的函数原形:v
39、oid free(void *block)功能:释放由calloc、malloc、realloc函数调用所分配的内存。头文件:stdlib.h、alloc.h函数42。fscanf()格式化输入函数原形:int fscanf(FILE *stream,const char *format,address,.)功能:从一个流中扫描输入字段,一次扫描一个字符,每个输入字段根据format所指格式指示符格式化后,把输入字段存在format后面由地址参数给出的位置上。使用格式:fscanf(文件指针,输入格式,输入项系列);使用实例:fscanf(fp,%d,&b);从fp指向的文件中读取十进制整数
40、(ASC形式)赋予变量b注:当文件指针是stdin时,与scanf功能完全相同头文件:stdio.h函数43。fseek()移动文件指针函数原形:int fseek(FILE *stream,long offset,int whence)作用:强制一个文件的位置指针指向某个特定的位置(甚至超出文件的尾部)。使用格式:fseek(*文件指针,偏移(长整型),起点)定义 FILE *文件指针名;起点取值:0或SEEK_SET(表示文件开头)1或SEEK_CUR(表示当前位置)2或SEEK_END(表示文件尾端)返回值:0表示成功,非0值表示失败头文件:stdio.h函数44。fwrite()把参数
41、写入流中的函数原形:size_t fwrite(const void *ptr,size_t size,size_t n,FILE *stream)功能:附加n个数据项(每个数据项长度为size个字节)到指定的输出文件后,数据从ptr处开始添加。ptr是指向任意对象的指针。返回值:调用成功时返回实际写的数据项数,出错时返回一短整形数值。头文件:stdio.h例:fwrite(&s,sizeof(s),1,stream);其中s是一结构变量,stream=fopen();函数45。gcvt()把双精度数转化成字符串的函数原形char*gcvt(value,ndigit,buf)其中double
42、value是待转化数int ndigit是转化长度char *buf保存转化后的地址头文件stdlib.h函数46。geninterrupt()执行中断函数原形:void geninterrupt(int n)调用方式:geninterrupt(软中断号)功能:产生一个8086软中断注:需先向寄存器传递入口信息(用伪变量)例如伪变量=要赋的值(入口信息);调用geninterrupt()函数后得接受出口信息例如变量名=伪变量伪变量Turbo C 允许使用伪变量直接访问相应的8086寄存器。伪变量的类型有两种。 unsigned int : _AX、 _BX、 _CX、 _DX、 _CS、 _D
43、S、 _SS、 _ES、_SP、 _BP、 _DI、 _SI unsigned char: _AL、 _AH、 _BL、 _BH、 _CL、 _CH、 _DL、 _DH函数47。getc()从流中取字符的宏原形:int getc(FILE *stream)功能:返回输入流stream中一个字符,移动文件指针使之指向下一个字符。使用格式:字符变量getc(文件指针)(正常情况下读取到代码值,读到文件尾或出错时返回EOF)注:需定义 char 字符变量;FILE *文件指针;头文件:stdio.h函数48。getch()从键盘无回显地读取一字符的函数功能:将键盘上输入的单个字符的值(ASC 码)立
44、刻赋给字符型变量调用方式:字符形变量getch()注:需先定义 char 字符形变量;头文件:conio.h函数49。getchar()从stdin流中读取一个字符的函数功能:将键盘上输入的单个字符的值(ASC 码)回车后赋给字符型变量调用方式:字符型变量getchar()注:需先定义 char 字符型变量;头文件:stdio.h函数50。getcurdir()读取指定驱动器的当前目录的函数原形:int getcurdir(int drive,char directory)drive=0(缺省);1(A驱动器);.directory用来存放目录名,不包括驱动器名,不以反斜杠开始。返回值:0(调
45、用成功);1(出错)头文件:dir.h函数61。getcwd()读取当前目录的函数原形:char *getcwd(char *buf,int buflen)功能:读取当前目录的完整路径名(包括驱动器名),最长为buflen个字节,存放在buf中。如果buf为NULL,函数将分配一个buflen字节长的缓冲区,以后可将本函数的返回值作为free函数的参数来释放该缓冲区。返回值:若buf非空,调用成功返回buf,出错返回NULL;若buf为NULL,返回指向已经分配的内存缓冲区地址。头文件:dir.h函数62。getdate()读取系统日期函数原形:void getdate(pdate)struc
46、t dateint da_year;int da_day;int da_mon;struct date *pdate;头文件:dos.h函数63。getdfree()读取磁盘空闲空间的函数原形:void getdfree(drive,dtable)unsigned char drive;驱动器号(0-当前;1-A;2-B;.)struct dfreeunsigned df_avail;/可使用的簇数unsigned df_total;/每个驱动器的簇数unsigned df_bsec;/每个扇区的字节数unsigned df_sclus;/每个簇的扇区数(出错时返回0 xffff)*dtabl
47、e;功能:把由drive指定的关于驱动器的信息返回到dtable函数64。getdisk()读取当前磁盘驱动器号函数原形:int getdisk(void)功能:取得当前驱动器号(0=A;1=B;)头文件:dir.h函数65。getenv()读取环境变量的当前值的函数原形:char *getenv(const char *name)用法:s=getenv(环境变量名);需先定义char *s;功能:返回一给定的环境变量值,环境变量名可大写或小写。如果指定的变量在环境中未定义,则返回一空串。 头文件:stdlib.h函数66。getimage()将指定区域的位图象存入内存的函数原形:void f
48、ar getimage(int left,int top,int right,int bottom,void far *bitmap)功能:将图像(矩形区域)从屏幕拷贝到内存,*bitmap指向内存中存放图像的区域。该区域的前两个字节用于存放矩形的高和宽。头文件:graphics.h函数67。getmaxx()返回屏幕上最大的坐标值的函数原形:int far getmaxx(void)功能:返回当前图形驱动程序和图形模式下最大的X坐标值。头文件:graphics.h函数68。getmaxy()返回屏幕上最大的Y坐标值的函数原形:int far getmaxy(void)功能:返回当前图形驱动程
49、序和图形模式下最大的Y坐标值。头文件:graphics.h函数69。getpixel()读取像素颜色的函数原形:unsigned far getpixel(int x,int y)头文件:graphics.h函数70。getpsp()原形unsigned getpsp(void)功能使用DOS系统调用0 x62,返回程序段前缀(PSP)的段地址头文件dos.h函数71。gets()从标准输入流stdio中读取一字符串的函数功能:将键盘上输入的字符串立刻赋予字符串变量并显示出来调用方式:gets(字符串变量名)注:需定义 char *字符串变量名;函数72。gettime()读取系统时间的函数原
50、形:void gettime(ptime)struct timeunsigned char ti_min;unsigned char ti_hour;unsigned char ti_hund;/百分之一秒unsigned char ti_sec;struct time *ptime;函数73。getvect()读取中断向量函数原形:void interrupt(*getvect(int interruptno)功能:读入由interruptno(0-255之间)所指定的中断向量值,并把该中断向量值作为中断函数的远指针返回。返回值:指定中断向量的当前4字节值。头文件:dos.h使用实例:old
51、func=getvect(5);先定义void interrupt(*oldfunc)();用后恢复setvect(5,oldfunc);函数74。getx()返回当前图形方式下位置的X坐标值的函数原形:int far getx(void);头文件:graphics.h函数75。gety()返回当前图形方式下位置的Y坐标值的函数原形:int far gety(void);头文件:graphics.h函数76。imagesize()返回保存图像缓冲区大小的函数原形:unsigned far imagesize(int left,int top,int right,int bottom)功能:确定
52、保存图像所需的存储区大小。返回值:返回存储区的大小(字节),若所需内存大于等于64K-1字节,则返回0 xffff(-1)。头文件:graphics.h函数77。initgraph()显示模式控制函数(初始化图形系统函数)功能:把图形适配器设置为一种图形模式,将选择的图形驱动程序(在BGI文件中)装入到内存。调用方式:void far initgraph(int far *driver,int far *mode,char far*path)其中: *driver可以是数值(0-10),也可是符号值(DETECT、CGA、MCGA、EGA、EGA64、EGAMONO、RESERVED、HERC
53、MONO、ATT400、VGA、 PC3270)。*mode参数从图形系统为各种常用的图形适配器设置的图形模式中(CGAC0、.、IBM8514HI-见头文件graphics.h)选取。常用的有:VGAMED或1(640350)(等效于BIOS的模式15)、EGAHI或1(640350)等。path指向的字符串为装入驱动程序的路径。如果缺省路径,驱动程序在当前目录。结束方法:void far closegraph()函数用于当程序还要继续在字符模下运行时。它释放由图形函数所占用的内存,同时把屏幕模式恢复为调用initgraph()之前的模式。void far restorecrtmode()函
54、数用于结束运行。将图形适配器设置到原来的模式。任何分配的内存都将自动释放。头文件:graphics.h函数78。inport()从端口中读入一个字的函数原形:int inport(int portid)调用方式:整型变量=inport(0 x端口号);功能:从指定端口地址读一个字。头文件:dos.h函数79。inportb()从端口读入一个字节的函数原形:unsigned char inportb(int portid)调用方式:字符变量=inportb(0 x端口号);功能:从指定端口地址读一个字节。头文件:dos.h函数80。int86()执行中断函数(调用8086软中断函数)原形:int
55、 int86(int intno,union REGS *inregs,union REGS *outregs)调用方式:int86(中断号,&输入指针名,&输出指针名)返回值:中断处理结束时的AX寄存器的值,错误时outregs-x.cflag!=0功能:函数int86() 用来执行指定的8086软中断。首先把输入指针所指的共用体中的内容拷贝到CPU 的寄存器中,随即产生对应的中断,返回后将CPU寄存器(AX)的内容拷贝到输出指针指向的共用体中。在使用int86() 函数进行BIOS接口的系统调用时,有的中断调用设有若干选择项,这些选择项可以根据调用时AH寄存器中的值来进行访问。注:1.需先
56、定义 union REGS 输入指针名,输出指针名;2.向寄存器传递入口信息输入指针名.x.寄存器名=要赋的值(入口信息);3.调用int86后得接受出口信息变量名=输出指针名.x.寄存器名4.REGS的定义(在dos.h中):struct WORDREGSunsigned int ax, bx, cx, dx, si, di, cflag, flags;struct BYTEREGSunsigned char al, ah, bl, bh, cl, ch, dl, dh;union REGSstruct WORDREGS x;struct BYTEREGS h;头文件:dos.h函数81。i
57、nt86x()执行中断函数 (通用8086软中断接口函数)头文件:dos.h原形:int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS * segregs)调用方式:int86x(中断号,&输入指针名,&输出指针名,&段寄存器指针名);注1:需先定义 union REGS 输入指针名,输出指针名;union REGS 示意图 structstructWORDREGSBYTEREGS al 1 byte ax 2 bytes ah bl bx bh cl cx ch dl dx dh union regs
58、 si di cflag flags x两个结构变量h共享同一存储域其中字段flags对应于标志寄存器。字段cflag仅对应于进位标志位,函数在调用时不用该字段,只在返回时设置这个字段,因为许多BIOS服务都是通过进位标置为0还是1来表示成功还是失败。注2:需先定义 struct SREGS 段寄存器指针名;结构SREGS定义如下struct SREGS unsigned int es,cs,ss,ds函数只用了该结构中的段寄存器DS和ES。调用时根据它们的值设置DS和ES,同时把DS和ES原来的值保存在这个结构中,返回时再恢复DS和ES为原来的值,这就允许程序使用远指针或大数据编译模式。该函
59、数置全局变量_doserrno等于寄存器AX中的值,其返回值也等于AX中的值。注3:向寄存器传递入口信息输入指针名.x.寄存器名=要赋的值(入口信息);注4:调用int86x后得接受出口信息变量名=输出指针名.x.寄存器名函数82。intdos()通用dos中断接口函数原形:int intdos(inregs,outregs)union REGS *inregs;/调用时的各寄存器的值union REGS *outregs;/返回寄存器的值功能:产生DOS软中断注意:如果需要功能号,则装入AH;如果需要子功能号,则装入AL。头文件:dos.h函数83。intdosx()通用dos中断接口函数原
60、形:int intdosx(inregs,outregs,segregs)union REGS *inregs;调用时的各寄存器的值union REGS *outregs;返回寄存器的值struct SREGS *seregs;调用时的段寄存器的值(还设置返回时的值)功能:产生DOS软中断头文件:dos.h函数84。intr()执行8086软中断函数(改变软中断接口函数)原形:void intr(int intno,struct REGPACK *preg)调用方式:intr(中断号,&结构变量名)注1:结构REGPACK定义如下struct REGPACKunsigned r_ax,r_bx
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 惑与不惑议论文题目及答案
- 简爱初中考试题目及答案
- 九宫格拼字题目及答案
- 考爸爸的考试题目及答案
- 养老院老人生活照顾人员晋升制度
- 高校爬树课面试题目及答案
- 养老院老人健康饮食制度
- 中考生物高考题目及答案
- 办公室网络安全教育与培训制度
- 铁路休息制度
- 2025年淮北职业技术学院单招职业适应性测试题库带答案解析
- 安全生产九个一制度
- 2025北京西城区初一(下)期末英语试题及答案
- (更新)成人留置导尿护理与并发症处理指南课件
- 2026.01.01施行的《招标人主体责任履行指引》
- DB11∕T 689-2025 既有建筑抗震加固技术规程
- 2025年湖南公务员《行政职业能力测验》试题及答案
- 巨量引擎《2026巨量引擎营销IP通案》
- 2026届高考化学冲刺复习化学综合实验热点题型
- 电缆接驳施工方案(3篇)
- 提前招生面试制胜技巧
评论
0/150
提交评论