c语言题库管理系统设计—毕业设计论文内容摘要:
LSE。 return DB_NOT_OPEN。 } AND_CATCH(CMemoryException,pEx) { pExReportError()。 m_IsDBOpen = FALSE。 return MEMORY_EXCEPTION。 } AND_CATCH(CException,e) { m_IsDBOpen = FALSE。 return MS_OTHER_EXCEPTION。 } END_CATCH m_IsDBOpen = TRUE。 return S_OK。 } void COdbcDB::DisConnect() { m_IsDBOpen = FALSE。 ()。 } void COdbcDB::ExecuteQueryValue(LPCTSTR lpszSQL,CStringamp。 value) { if(!()){ return。 } TRY{ CRecordset rs(amp。 m_db)。 //打开记录集 . (CRecordset::dynaset, lpszSQL)。 if (!()) { ((short)0, value)。 } ()。 }//异常处理 CATCH(CDBException,ex) { AfxMessageBox (exm_strError)。 AfxMessageBox (exm_strStateNativeOrigin)。 } AND_CATCH(CMemoryException,pEx) { pExReportError()。 AfxMessageBox (memory exception)。 } AND_CATCH(CException,e) { TCHAR szError[100]。 eGetErrorMessage(szError,100)。 AfxMessageBox (szError)。 } END_CATCH } void COdbcDB::ExecuteQuery(LPCTSTR lpszSQL,CDStrsamp。 Fields) { if(!()){ return。 } TRY{ CRecordset rs(amp。 m_db)。 //打开所有的信息记录 . (CRecordset::dynaset, lpszSQL)。 while (!()) { CStrs strs。 CString temp。 //获取一条记录中的所有字段值保存到字符串数组 strs 中 for(short i = 0。 i。 i++){ ((short)i, temp)。 (temp)。 } //保存一条记录到二维字符串数组中 (strs)。 //转到下一条纪录 ()。 } ()。 }//异常处理 CATCH(CDBException,ex) { AfxMessageBox (exm_strError)。 AfxMessageBox (exm_strStateNativeOrigin)。 } AND_CATCH(CMemoryException,pEx) { pExReportError()。 AfxMessageBox (memory exception)。 } AND_CATCH(CException,e) { TCHAR szError[100]。 eGetErrorMessage(szError,100)。 AfxMessageBox (szError)。 } END_CATCH } 以上是 用于数据库操作的封装类,只要在本系统的工程中引入上面四个文件 , , , ,然后在系统的 文件中加上 include 就可以在本工程中的所有类中使用 对象 g_odbcDB 进行数据库操作了。 系统登录 系统 登录,是系统安全的关口,可以限制没有操作权限的用户对系统的重要信息的更改,所以在登录窗口中要对用户的合法性进行检查,还要对用户的权限进行确定。 所以要在用户输入用户名和密码后,查询数据库来确认用户合法性,和赋予用户对应的权限,关于用户的权限和用户信息都 放在表: user_stu: 字段名 数据类型 字段大小 主键 stuid 文本 50 是 stuname 文本 8 否 stupwd 文本 20 否 user_admi 数字 长整型 否 用户登录界面要简洁明了 ,其中的图片是要从外部引入,效果如下: 对应的对话框要接受用户名和密码,然后查询数据库表,来进行确认,并读取user_admi 字段来设定用户的权限。 如果,没有通过确认,则提示用户:用户名或密码有错。 本对话框为了更容易操作,在登录对话框的初始化中把用户表中的用户名读取出来, 放到用户名栏(接受用户名的控件是一个可以下拉的组合框);对应对话框的的控件绑定的变量如下: 给 对话框的 登录 按钮添加消息响应函数: OnOk();为对话框添加初始化函数:OnInitDialog(); 实现代码如下: BOOL CLoginDlg::OnInitDialog() { CDialog::OnInitDialog()。 CDStrs m_name。 CString strSQL。 UpdateData(TRUE)。 //(select * from password where user=39。 %s39。 AND passwd=39。 %s39。 ,m_strUser,m_strPass)。 strSQL=select stuid from user_stu。 (strSQL,m_name)。 for(int i=0。 i()。 i++) { CStrs strs=m_name[i]。 (strs[0])。 // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } // TODO: Add extra initialization here return TRUE。 // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLoginDlg::OnOK() { // TODO: Add extra validation here CDStrs value。 CString strSQL。 CTestingApp* ptheApp = (CTestingApp *) AfxGetApp()。 UpdateData(TRUE)。 //检查用户名是否输入 if(()) { AfxMessageBox(请输入用户名。 )。 ()。 return。 } if(()) { AfxMessageBox(请输入密码。 )。 ()。 return。 } //从用户表中检查用户名密码是否正确 (select * from user_stu where stuid=39。 %s39。 AND stupwd=39。 %s39。 ,m_strUser,m_strPwd)。 (strSQL,value)。 if(()==0) { //密码错误处理 MessageBox(密码错误,请重新输入 )。 m_strPwd=。 ()。 UpdateData(FALSE)。 } else { //分配用户权限 if(value[0][3]==0) ptheAppm_bIsAdmin = FALSE。 else ptheAppm_bIsAdmin = TRUE。 Userid=m_strUser。 CStrs strs。 CDStrs strShijName。 (select shijname from chengj_tab where stuid=39。 %s39。 and handup=39。 no39。 ,Userid)。 (strSQL,strShijName)。 if(()!=0) { HavEx=TRUE。 } else { HavEx=FALSE。 } CDialog::OnOK()。 } } 试题库系统主界面 用户登录后,要出现一个主界面,用户的所有操作都在这里实现。 主界面包括了菜单的设计,和工具栏的设计: 菜单如下: 在菜单的设计中,给每一个菜单设定一个不同的 ID,但是工具栏的设计中要用到菜单的 ID,对应特定的菜单的工具按钮,是为了实现菜单功能的一个快捷途径。 所以工具栏按钮的 ID都对应一个菜单项。 工具栏设计: 要 使用数据库中的表中的信息,要在程序运行前的初始化中连接数据库,所以要在主程序的初始化函数 BOOL CTestingApp::InitInstance()中添加如下语句: CString a,b,c。 a=shitiku。 (a,b,c)。 AfxEnableControlContainer()。 要 控制系统安全,必须使登录界面早于主界面运行,所以要在主程序初始化函数中上面的语句后添加如下代码: CLoginDlg loginDlg。 if(()!=IDOK) { return FALSE。 } 并且在主程序的 文件开始处添加 include ,声明对 CLoginDlg 的对象的使用。 要处理用户对菜单和工具条按钮的操作信息,要在主框架类 CMainFrame的 CPP 文件中添加对应按钮和菜单的 COMMAND 消息响应函数:并且要在主程序中添加一个变量 BOOL m_bIsAdmin 用来标识管理员用户,在非管理员和管理员不能同时使用的功能,要给对应的菜单添加 UPDATE_COMMACD_UI 类型的消息响应函数,并且在菜单的 pCmdUIEnable()。 函数中用主函数 CTstingApp 中的变量m_bIsAdmin 作为 pCmdUIEnable()。 的参数,就能限制非管理员用户使用对应的菜单。 关于添加菜单响应函数,如下图: 函数具体实现如下: void CMainFrame::OnSysQuit() { // TODO: Add your mand handler code here if(AfxMessageBox( 您确定要退出系统吗 ?,MB_OKCANCEL)==IDCANCEL) { return。 } CFrameWnd::OnClose()。 } void CMainFrame::OnSysReload() { // TODO: Add your mand handler code here CLoginDlg Dlg。 ()。 } void CMainFrame::OnSysUser() { // TODO: Add your mand handler code here CUserDlg UserDlg。 ()。 } void CMainFrame::OnUpdateSysUser(CCmdUI* pCmdUI) { // TODO: Add your mand update UI handler code here CTestingApp* ptheApp = (CTest。c语言题库管理系统设计—毕业设计论文
相关推荐
4x 512x 256x8 等四中类型中的任意一种。 EAB中的 RAM输入与输出端口是分开的,这样就不需要三态门进行总线隔离,减少编程上的麻烦。 FLEX10K作为 Altera 的主流器件具有多种特性包括: ��. 为各种功能配备嵌入式阵列,如高效存储器和专用内存; ��. 大量通用逻辑阵列; ��. 高达 10000 到 250000 个典型门 ��. 内 置 RAM 可达 40960 位
居住地址 可选输入 (2) 存储过程 为了加强系统的安全性,防止 SQL 注入攻击 , 存 /取款 、 转账 等 功能采用了存储过程来处理 ,同时也提高了系统的性能。 对 客户 的存 /取款用一个存储过程根据是 客户 的操作类型(存款 /取款)分别进行控制 ,如果是存款则为 客户 加上相应的金额 ,取款时要提供密码,密码正确则减去相应的金额,如果余额不足则则会调用了触发器,触发器触发事务
IL- S- 19500标准 B- 1以上质量等级的军品。 ⑦ 设计时尽量少用 继 电器 ,确有必要时应选用接触良好的密封继电器。 ⑧ 原则上不选用电位器,必须保留的应进行固封处理。 ⑨ 吸收电容器与开关管和输出整流管的距离应当很近,因流过高频电流,故易升温,所以要求这些电容器具有高频低损耗和耐高温的特性。 ( 4)损耗问题 损耗引起的元器件失效取决于工作时间的长短,与工作应力无关。
有负载)估为 2t。 (无负载时为 500Kg) 在开始时需要的力最大,设为 F 液压缸与水平面夹角约为 100 则 2Fsin20 =50004cos10 F=57587N 如图所示, L1=*sin 010 *2= 烟台 大学毕业论文(设计) 13 L3= 00 30c o s110c o L L2= 22 L = cmm 22 cmcmcmL
式 屋顶设置高位水箱,水泵统一加压,利用减压阀减压,上区供下区用水 供水较可靠,设备与管道较简单,投资较节省,设备布置较集中,维护管道较方便,下区供水受上 区的限制,能源消耗较大 允许设置高位水箱,电力供应比较充足,电价较低的各类高层建筑 变频调速并联给水方式图如图 11 所示, 高位水箱 减压给水方式图如图 12 所示。 变频调速给水方式虽然高效节能、占地面积小,但其设备与管道复杂 、