《学生随机点名系统规划与设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《学生随机点名系统规划与设计毕业设计论文.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要摘 要:本文主要针对湖南现代物流学院上课点名考勤系统进行分析和设计的。首先分析了在上课点名和考勤中出现的问题和不足,阐述了本系统开发的目的和需求分析。通过与数据库连接、数据库系统的选择原则、系统开发的工具的选择一系列问题的分析确定了系统的开发平台。随后详细给出了点名系统总体设计、详细设计与规划的各个环节,最后对本系统做了客观的评价,指明了系统的现实意义与缺点。关键词: 点名 考勤 随机30目 录引 言1第1章 需求分析21.1 开发背景21.2 需求分析2第2章 总体设计42.1 设计思想42.2 设计规划6第3章 数据库的设计93.1 数据库系统平台93.2 数据库系统具体实现编码9第
2、4章 系统主要设计和主要功能的规划214.1 系统主要设计214.2 主要功能的规划24总 结28致 谢29参 考 文 献30引 言在高等院校、职中专、大专学校里,学生考勤是一项日常必要性的工作,学校的各院系需要了解和掌握各班级的学生出勤情况,以加强对学生的教育和管理。因而学生考勤是学校一项非常重要的工作。传统的学生考勤以及平时课堂上的表现,主要是依靠老师在课堂上点名或学生会抽查点名制度,还有上课提问等。学生人数多、考勤不全面、数据不准确,特别是点名考勤制耗费了老师和学生大量的时间且起不到太大的效果。第1章 需求分析1.1 开发背景在计算机和手机技术广泛推广的今天,应用计算机已经大大的提高了社
3、会的各方面的效率。而作为学校,社会知识的高度集中区,计算机已经成为一种必需品。有了计算机,那么我们就应该在方方面面想到用它来提高我们的效率。对于大学生的考勤方面,现在越来越显示出重要性。虽然大学生都已经步入成年,但是有些时候会出现小小的偷懒也情有可原。很多方面还需要代课老师和学校的监督,当然对于上课点名很占用时间,而且效果不好,老师也不能对学生每次点名情况都有明确的了解,所以一个可视化的点名系统称为必须。此外,对于学生上课表现情况,老师可以对问题的次数及质量来进行打分。所以在上课时有一个能够面向学生的点名系统对学生的的进行的提问也成为老师们十分想要的一个系统。1.2 需求分析 信息化给这样的一
4、个状况带来了契机,基于信息化的考勤系统就在这种情况下变得越来越受欢迎,通过系统的数据分析,学校能得到准确的学生上课到勤的整体状况,针对性的做出政策,使学生积极上课的风气得到加强。它给教师带来了更加高效的处理考勤和课堂提问的方法,使得教学能够比较顺利的进行下去,不会再因为考勤等繁杂事务影响教学。因此,本论文设计规划随机点名系统,来实现相应的需求功能,达到所需目的。学生随机点名系统分为五大板块,录入学生考勤信息,修改学生考勤信息,查询学生考勤情况,统计学生旷课数,旷课课程。老师通过系统录入学生信息,按照课程名称进行考勤,在老师点到某学生时,系统会提示下一步,或返回主菜单。 随机点名系统采用C语言编
5、写程序的优势: (1)C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 (2)C语言具有较好的可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维、二维图形和动画。它是数值计算的高级语言。第2章 总体设计2.1 设计思想设计构思如下:当教师点击“点名”按钮,开始随机点名回答提问时,电脑就从学生表Students中自动获取学生数(如n),再从1n中产生一个随机整数,针对该随机整数,再在学生表Students中进行记录定位,并显示该同学的学号、姓名和性别,被点到的学生将回答教师提出的问题。1、系统设计特点(1)界面友好,易操作本系统通
6、过界面即可一目了然的了解各功能模块,并对各功能给出清楚明晰的提示,方便教师操作。并可以调制系统至最前端,保持浮在所有页面上,方便控制系统,学生可以通过调整透明度,使系统具有神秘感,增加趣味性。(2)通用性强本系统的“班级管理模块”,可以由教师任意的创建、删除班级,考虑大多数教师习惯使用Excel记录学生数据,在本系统的数据管理模块添加了数据的导入导出功能,实现了系统与Excel文件之间数据的存取,方便各科教师使用本系统,这也是系统开发的关键。(3)点名突出随机性本系统采用SQL数据库作为多媒体数据库的存放对象,用户可将学生信息加入到数据库表中,在提问时,显示该学生的姓名和学号。另外,利用随机函
7、数尽量保证点名的随机、公正和公平。(4)方便的查询功能 为使用户更方便的了解上课提问情况并在一定程度上作为学生平时成绩的参考,本系统提供了方便的查询功能。2、系统设计的要求:在采用C语言+SQL数据库设计本系统时,避免了学生人数多、考勤不全面、数据不准确,以及点名考勤制耗费了教师和学生大量时间的问题。给教师带来了更加高效点名、高效提问的效果,让教师能够传授更多的知识给学生。因此,本系统在设计时,应保障做到以下要求:(1) 根据教务处提供的学生名单Excel文件生成数据库(文本文件)(2) 随机抽取学生点名,能够记录下缺席情况扩展要求: 改进随机数的生成方式,点名覆盖率尽量高 可以随机点名,也可
8、以整班点名 可以作为随机提问使用,记录下回答问题等级A、B、C、D 可以多个班的数据合并一起使用3、系统功能模块图随机点名系统系统功能分为上那个模块:学生、教师、管理员。每个模块对应相应的功能,如图2.1所示。学 生 查 看 信 息教师学生管理员学生信息添加和删除学生信息修改学生信息导入评分随机点名记录考勤查看学生查看信息图2.1 系统功能模块图2.2 设计规划随机点名系统是一个在VC6.0集成开发环境下开发的简单应用程序。它利用C语言调用SQL共同实现Excel表格与数据库之间转换盒系统界面接口设计,同时SQL数据库作为后台数据库存储学生的相关信息。随机点名系统实现了随机点名、日常考勤管理、
9、期末出勤成绩统计、系统管理、学生查看信息等功能。1、系统主要流程(1)教师、学生时序图教师、学生使用过程如图2.2所示。图2.2 教师、学生时序图(3) 管理员时序图管理员使用过程如图2.3所示。图2.3 管理员时序图2、随机点名系统的程序流程图考勤历史记录评分导入学生名单信息随机点名器是管理员采用SQL数据库作为多媒体数据库的存放对象,教师可将学生信息加入到数据库表中,进行随机点名,并将考勤历史记录和随机点名系统中做对比,在提问时,显示该学生的姓名和学号以及迟到次数,如图2.4。随机点名系统图2.4 程序流程图第3章 数据库的设计3.1 数据库系统平台在SQL数据库建一个数据库Student
10、,同时新建一个学生表Student学生表中只有四个字段:学号、姓名、班级、迟到次数,另增加一个自动编号字段。可以在建表时填好学生的资料信息,也可以在应用程序中去填写学生的资料信息,还可以用Excel电子表格转换的方法得到学生表,如表3.1、3.2所示、表3.1 学生信息数据字段名字段类型字段含义FnumberChar学号FnameChar姓名FtimeChar迟到次数表3.2 存取的数据库表和字段字段名意义数据类型宽度NullPrimaryKeyFnumber学号Char12NoFname姓名Char10NoFtime迟到次数Char9Yes3.2 数据库系统具体设计编码1、读取随机点名系统数
11、据,添加数据库信息:Void read_file(HWND hwnd,int flag) FILE *p1,*p2,*p; struct class_name *read_node; TCGAR str257,message550; int i=0,how_many=0; if(p1=fopen(all_classname.txt,r)=NULL|flag=1) if(1=DialogBoxParam(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_dh1),hwnd,dh_Proc,(LPARAM) if(p=f
12、open(all_classname.txt,r)=NULL) my_msg(hwnd,错误的继承,逻辑错误,1); else i=0; while(i4&!feof(p) data_2560=0; fgets(data_256,256,p); if(feof(p) if(strlen(data_256)=0)break; if(strstr(data_256,n)!=NULL)break; else data_256strlen(data_256)-1=0; wsprintf(str, 给【 %s 】添加学生信息:,data_256);i+; DialogBoxParam(HINSTANCE
13、)GetWindowLong(hwnd,GWL_HINSATANCE),MAKEINTRESOURCE(IDD_dh2),hwnd,dh_Proc,(LPARAM)str); fclose(p); else retun; if(p1=fopen(all_classname.txt,r)=NULL) my_msg(hwnd,错误的继承,逻辑错误,1);return; i=0; while(inumber0=0; if(read_node=NULL) my_msg(main_hwnd,n 申请临时内存空间失败,程序即将退出!,内存错误,1;exit(1); sscanf(message,%30s%
14、30s,read_node-name,read_node-number); if(strlen(read_node-number)=0) strcpy(read_node-number,请添加学号信息!); read_node-next=NULL;how_many+; all_headi=lianjie(all_headi,read_node); strstrlen(str)-4=0; wsprintf(message,&snt %d人,str,how_many); SetDlgItemText(main_hwnd,class_buttoni,messgae); fclose(p2); i+;
15、 fclose(p1);2、数据库登陆BOOL DBTTest(HWND hwnd)SQLHENV henv = NULL;SQLHDBC hdbc = NULL;SQLHSTMT hstmt = NULL;SQLRETURN result;CHAR ConnStrlnMAXBUFLEN;int rt;if(rt=GetDlgItemText(hwnd,IDC_name,user_name,32)=0) LESS_ERROR(hwnd,请输入用户名!,错误,MB_ICONERROR);if(rt30) LESS_ERROR(hwnd,输入的用户名过长,错误,MB_ICONERROR);if(r
16、t=GetDlgItemText(hwnd,IDC_pwd,user_pwd,32)=0) LESS_ERROR(hwnd,请输入密码!,错误,MB_ICONERROR);if(rt30) LESS_ERROR(hwnd,输入的密码过长,错误,MB_ICONERROR);if(rt=GetDlgItemText(hwnd,IDC_classname,user_class_name,32)=0) LESS_ERROR(hwnd,请输入课程名!,错误,MB_ICONERROR);wsprintf(ConnStrIn,DRIVER=MySOL ODBC 5.1 Driver;SERVER=127.0
17、.0.1;UID=%s;DATABASE=student;CharSet=gbk;user_name,user_pwwd);/分配环境句柄result=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);/设置管理环境属性result=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);/分配连接句柄result=SQLAllocHandle(SQL_HANDLE_DBC,henv&hdbc);/设置连接属性result=SQLSetConnectAtte(hdbc
18、,SQL_LOGIN_TIMEOUT,(void*)LOGIN_TIMEOUT,0);/连接数据库result=SQLDriverConnect(hdbc,NULL,(SQLCHAR*)ConnstrIn,SQL_NTS,ConnSteOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);if(SQL_ERROR=result)ShowDBConnError(hwnd,hdbc);return FALSE;/初始化语句句柄wsprintf(ConnStrIn,select Fname,Fnumber from%s,user_claa_name);
19、result=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);result=SQLPrepare(hstmt(SQLCHAR*)ConnStrIn,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);SQLINTEGER cbsatid=SQL_NLS;TCHAR Fname33,Fnumber33,all_data256;struct class_name*read_node;int how_many=0;while(SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)SQLGetData(hst
20、mt,1,SQL_C_CHAR,33,&cbsatid);SQLGetData(hstmt,2,SQL_C_CHAR,33,&cbsatid);read_nade=(stuct class_name*)malloc(sizeof(struct class_name);read_nade-number0=0;if(read_nade=NULL) my_msg(main_hwnd,n申请临时内存空间失败,程序即将退出!,内存错误1);exit(1);)strcpy(read_nade-name,Fname);strcpy(read_nade-namber,Fnamber);if(strlen(re
21、ad_node-number)=0) strcpy(read_node-numbr,请添加学号信息!);read_node-next=NULL;how_many+;all_head0=lianjie(all_head0,read_node);wsprintf(all_data,%snt %d人,user_claa_name,how_many);SetDlgItemText(main_hwnd,IDC_class1,all_data);SQLFreeStmt(hstmt,SQL_CLOSE);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdb
22、c);SQLFreeHandle(SQL_HANDLE_ENV,henv);sql-data=TRUE;return TRUE;3、查询数据库信息BOOL DBTTest(HWND hwnd,const char*found_number,char*resoult)SQLHENV henv = NULL;SQLHDBC hdbc = NULL;SQLHSTMT hstmt = NULL;SQLRETURN result;CHAR ConnStrlnMAXBUFLEN;SQLCHAR ConnStrOutMAXBUFLEN;wsprintf(ConnStrIn,DRIVER=MySOL ODBC
23、 5.1 Driver;SERVER=127.0.0.1;UID=%s;PWD=%s;DATABASE=student;CharSet=gbk;user_name,user_pwwd);/分配环境句柄result=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);/设置管理环境属性result=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);*/分配连接句柄result=SQLAllocHandle(SQL_HANDLE_DBC,henv&hdbc);/设置连
24、接属性result=SQLSetConnectAtte(hdbc,SQL_LOGIN_TIMEOUT,(void*)LOGIN_TIMEOUT,0);/连接数据库result=SQLDriverConnect(hdbc,NULL,(SQLCHAR*)ConnstrIn,SQL_NTS,ConnSteOut,MAXBUFLEN,(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);if(SQL_ERROR=result)ShowDBConnError(hwnd,hdbc);return FALSE;/初始化语句句柄SELECT*FROM T_person WHERE Fage
25、=20wsprintf(ConnStrIn,select Ftime from %s WHERE Fnumber=%s,user_claa_name,found-number);result=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);result=SQLPrepare(hstmt,(SQLCHAR*)ConnStrIn,SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstnt);result= SQLExecute(hstmt);CHECKDBSTMTERROR(hwnd,result,hstnt);SQLINTEGE
26、R cbsatid=SQL_NTS;if(SQLFetch(hstmt)!=SQL_NO_DATA_FOUND) SQLGETdATA(HSTMT,1,SQL_C_CHAR,resoult,33,&cbsatid);else strcpy(resoult.0);SQLFreeStmt(hstmt,SQL_CLOSE);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdbc);SQLFreeHandle(SQL_HANDLE_ENV,henv);sql-data=TRUE;return TRUE;第4章 系统主要设计和主要功能的规划4.1 系统
27、主要设计 本系统采用C语言+SQL数据库进行设计:1、登陆页面设计登陆页面设置用户名、密码、并可选择权限,如图4.1所示。图4.1 登录页面图2、数据库登陆设计登陆数据库设计用户名、密码等,课程名由数据库里面表格的名字命名。3、文本数据登陆 (1)在登陆界面有文本数据登陆,初次使用请创建【all_classname.txt】,此文件存放所有的课程名,程序将自动读取此文件的内容,然后找到对应的课程名文件读取学生信息。此文件内同格式:Android应用开发物联网应用技术RFID无线射频技术可存储多行数据,但程序将制度去前四个课程名。名字长度:小于14个字符,约7个汉字。 (2)课程文件名格式(姓名
28、+空格+学号):张三 2012*1001李四 2012*1002王五 2012*1003数据长度不限,空格个数不限,但必须有。姓名长度:小于30个字符,约15个汉字。学号长度:小于30个字符,约15个汉字。(3)若手动输入麻烦,可打开学生信息的Excel(表格文档)文件,然后选择对应的学生姓名列和学号列复制粘贴到记事本文件即可,但必须符合上面申明的格式。所有数据文件应存放在同一文件夹下,如图4.2所示。 图4.2 文本文档图4、导航功能可以不必手动去新建文档等,如果运行程序的目录下没有上面所说的文档,将会自动进入导航功能,可以在软件上面自动设置,会自动生成TXT文件,如图4.3所示。图4.3
29、导航功能图5、SQL数据库设计 根据各个系部班级学生名单建立表格,设置学号、姓名、迟到次数三项,与SQL数据库相接,方便系统点名时将班级学生表与出勤学生对比,做出正确的考勤判断,并做记录。4.2 主要功能的规划1、 导航功能规划 用户不必手动去新建文档,程序中如果没有所需要的文档,可以自动进入导航功能,在软件上面自动设置,自动生成TXT文件。代码实现: TCHAR name430; int length4,i,text4=IDC_name,IDC_name2,IDC_name3,IDC_name4; FILE *p; for(i=0;i4;i+) GetDlgItemText(hwnd,tex
30、ti,namei,30); lengthi=strlen(namei); if(length0=0&length1=0&length2=0&length3=0) if(6=my_msg(hwnd,n 您还没有输入过数据,下一步将退出导航,是否退出?,询问,2)dh_OnClose(hwnd);break; else break; if(p=fopen(all_classname.txt,w)=NULL) my_msg(hwnd, 创建文件失败,通常情况下您不会看到这个提示n 请联系开发人员解决!,错误,1);dh_OnClose(hwnd); for(i=0;iname); SetDlgIte
31、mText(hwnd,IDC_name,str); show_node=now_node; suijishu=rand()%20; while(suijishu-) if(now_node=now_node-next)=NULL) now_node=now_head; /PlaySound(LPCTSTR)C:WindowsMediaWindows 错误.wav,NULL,SND_FILENAME|SND_ASYNC); Break;总 结随机点名系统是一个在VC6.0集成开发环境下开发的简单应用程序。使用SQL共同实现Excel表格与数据库之间转换和系统界面接口设计,同时SQL数据库作为后台
32、数据库存储学生的相关信息。从手机材料、编写代码到测试系统、撰写论文、修改论文,共用了两个星期左右的时间。随机点名系统实现了随机点名、日常考勤管理、期末出勤成绩统计、系统管理、学生查看信息等功能。经过多次测试,此系统已经能够基本成为一个实用性强、灵活方便的系统,也能够为辛勤工作的老师们带来方便,以减轻他们的负担。致 谢三年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。三年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的
33、导师。我不是您最出色的学生,而您却是我最尊敬的老师。您亦师亦友的教学风格深深的感动了我,对我耐心的教导也是成为我完成论文的动力。大学生涯将以毕业论文画上一个圆满的句号,希望在以后能够回忆起大学生涯从而转变为工作动力的源泉,老师、同学、亲友将在此天各一方,希望大家在今后的生活中越来越好。每每回顾,才知光阴如梭,日月更是如此不等人。斗胆将大学生涯比喻成一条路,路边依然繁花似锦,路上依然起伏不定,行路之人欢声笑语,翘首企盼,就能明白,人生百态皆自我。翻开一本本的日历,撕下的是不足和缺陷,揭开的是认真和努力,那样等到下一个三年后,散落一地的不会再是废弃的旧黄历,而是一份份值得珍藏的美好回忆。最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。参 考 文 献1 谭浩强主编. C程序设计. 1991年7月2 陈朔鹰等编著. C语言程序设计基础教程. 兵器工业出版社. 1994年9月.3 姜仲秋等主编. C语言程序设计. 南京大学出版社. 1998年1月.4 袁鹏飞. 中文版 SQL Server2000 数据库系统管理. 人民邮电出版社, 2001年.5 美Microsoft公司. Microsoft SQL Server2000 数据库编程. 希望电子出版社, 2001.
限制150内