student_admin
c语言学生管理系统代码
C语言学生管理系统代码
简介
学生管理系统是一个用于管理学生信息的简单程序,它可以实现添加学生信息、显示学生信息、修改学生信息和删除学生信息等功能。
通过这个系统,学校或机构可以更方便地管理和维护学生的相关数据。
功能
1.添加学生信息:通过输入学生的姓名、学号、年龄和性别等信息,将
学生信息存储在系统中。
每个学生信息包括学号、姓名、年龄和性别等关键信息。
2.显示学生信息:可以显示系统中所有学生的信息,包括学号、姓名、
年龄和性别。
3.修改学生信息:通过输入学生的学号,可以修改该学生的姓名、年龄
和性别等信息。
4.删除学生信息:通过输入学生的学号,可以删除该学生的信息。
实现
下面是一个简单的C语言学生管理系统代码示例:
```c #include <stdio.h> #include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体 struct Student { int id; char name[100]; int age; char
gender[10]; };
// 定义全局变量,用于存储学生信息和统计学生数量 struct Student
students[MAX_STUDENTS]; int num_students = 0;
// 添加学生 void addStudent() { if (num_students >= MAX_STUDENTS) { printf(。
26、PLSQL格式化指南
命名规范 3-1
• 为防止命名与保留字和列/表名冲突,有必要 使用如下前缀:
– v_variable_name (变量名) – con_constant_name (常量名) – i_in_parameter_name,o_out_parameter_name, io_in_out_parameter_name (过程和函数的参数名) – c_cursor_name或者name_cur (游标名) – rc_reference_cursor_name (引用游标名) – r_record_name或者name_rec (记录名) – FOR r_stud IN c_stud LOOP... (游标FOR循环) – FOR stud_rec IN stud_cur LOOP ...
命名规范 3-2
– type_name , name_type(适用于用户定义类型) – t_table, name_tab(适用于PL/SQL表) – rec_record_name, name_rec(适用于记录变量) – e_exception_name(适用于用户定义异常)
– 包的名称应该是该包中过程和函数所执行动作 较大的上下文的名称
其它建议
• 对于嵌套在PL/SQL中的SQL语句,应该使用 和PL/SQL相同的格式化指南
• 提供注释头来解释语句块的目的,并列出 语句块的创建日期和创建者。同样,还要 说明每次修改,包括修改者的名字、日期 以及对修改内容的描述
代码范例 3-1
代码范例 3-2
代码范例 3-3
注释
• 在PL/ SQL和SQL中,注释都是非常重要的。 使用注释来描述程序段的主要部分以及关 键的重要逻辑步骤 • 最好使用单行注释(--),避免使用多行注释 (/*)。尽管PL/ SQL支持这两种注释,但是使 用单行注释有利于代码调试,因为你无法 在多行注释中嵌入多行注释。也就是说, 可以注释掉包含单行注释的代码段,但是 不能注释掉包含多行注释的代码段
网络教学平台设计与实现
允许为空
允许为空 不能为空
homework
字 段 名 数据类型及长度 说 明 备 注
id
title
பைடு நூலகம்
int
varchar(50)
作业编号
作业题目
不能为空
不能为空
content
subjecti
varchar (500)
int
作业内容以及要求
学科
不能为空
不能为空
addman
add_time
varchar (100)
学习论坛模块
普通用户 查看主题、 留言
留
言
簿 管理员
留言管理
论坛功能管 理 用户管理
系统主要流程
在线作业:
学生注册页 面 register.asp 学生登录页 面 login.asp 失败 登 录 成功 在线作业管理 页面 homework.asp
在线作业提交 页面 workinput.asp
管理中心流程
帐 号 注 册
课 程 教 学
作 业 管 理
学 习 公 告
管 理 中 心
讨 论 交 流
课 程 简 介
教 学 大 纲
教 学 要 求
作业管理模块
作 业 公 告
学生登录
查看作业/提交作业
添加作业
查看作业提交情况 教师登录
在线批改作业
管理中心模块
管理员信息统 计 管 理 中 心 系 统 综合管理系统 专业管理 班级管理 论坛管理 管理员信息 修改 学生管理 老师管理 学院管理
2.便于合作在不受时空限制的情况下,学习者通过网络 不仅能够进行学术交流研讨,还可以利用适当的软件工具支 持协同创作。现在许多网络教育平台都具有群件系统的功能, 完全能够支持一个学习群体方便地进行通讯交流、工作空间 共享、应用软件共享和协同创作。
python学生信息管理系统实现代码
python学⽣信息管理系统实现代码1.本⼈第⼀次学python做出来的,当时满满的成就感,当作纪念⾮常简单,复制即可使⽤代码块import json#把字符串类型的数据转换成Python基本数据类型或者将Python基本数据类型转换成字符串类型。
def login_user():while True:register=input('学⽣姓名:')try:with open(register+'.json')as file_object:user_message=json.load(file_object)#json.load(obj) 读取⽂件中的字符串,序列化成Python的基本数据类型except FileNotFoundError:print('该⽤户不存在!')breakelse:print('_'*20)register_password = input('请输⼊学号:')if user_message['id']==register and user_message['password']==register_password:str_print = '姓名:{}\t数学成绩:{}\t语⽂成绩:{}\t英语成绩: {}'grade_list = []while 1:print('''******************************欢迎使⽤【学⽣信息管理系统】请选择你想要进⾏的操作1.新建学⽣信息2.显⽰全部信息3.查询学⽣信息4.删除学⽣信息5.修改学⽣信息0.退出系统******************************''')action = input('请选择你想要的进⾏操作:\n')if action == '1':'''新建学⽣信息'''name = input('请输⼊名字')math = input('请输⼊数学成绩')chinese = input('请输⼊语⽂成绩')english = input('请输⼊英语成绩')total = int(math) + int(chinese) + int(english)grade_list.append([name,math,chinese,english,total])print([name,math,chinese,english,total])print('姓名:{}\t数学成绩:{}\t语⽂成绩:{}\t英语成绩: {}'.format(name,math,chinese,english,total))passelif action == '2':'''显⽰全部信息'''for info in grade_list:print(str_print.format(*info))elif action == '3':'''查询学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:print(str_print.format(*info))breakelse:print('此学⽣不存在')elif action == '4':'''删除学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:info_=grade_list.pop(grade_list.index(info))print('这个学员的信息已经被删除\n',info_)breakelse:print('此学⽣不存在')elif action == '5':'''修改学⽣信息'''name = input('请输⼊你需要查询学⽣的姓名:')for info in grade_list:if name in info:index = grade_list.index(info)breakelse:print('此学⽣不存在')continuemath = input('请输⼊数学成绩:')chinese = input('请输⼊语⽂成绩:')english = input('请输⼊英语成绩:')total = int(math) + int(chinese) + int(english)grade_list[index][0:] = [name,math,chinese,english,total]print('修改后的⼀个成绩',grade_list[index])elif action == '0':'''退出系统'''breakelse:print('输⼊信息有误,请重新输⼊')#print('登陆成功')return register,user_messageelse:print('登陆失败!⽤户名或密码错误')breakdef register_user():new_user=input('增加学⽣姓名:')try:with open(new_user+',.jion','r') as file_object:passexcept FileNotFoundError:new_password_one=input('请确认学号:')new_password_two=input('请再次确认学号:')if new_password_one==new_password_two:user_message={'id':new_user,'password':new_password_one}with open(new_user+'.json','w')as file_object:json.dump(user_message,file_object)#json.dump(obj) 将Python的基本数据类型序列化成字符串并写⼊到⽂件中print('新⽤户已经注册成功!可以登录了。
基于PHP+MySQL-学生成绩管理系统论文(模板)
一绪论 (3)1.1课题简介 (3)1.2项目开发的目标 (3)二系统分析 (4)2.1需求分析 (4)2.2系统设计分析 (4)2.2.1 用户功能区 (4)2.2.2 管理员功能区 (5)三概念结构设计 (6)3.1各个实体的局部ER图 (6)3.2系统功能模块图 (7)3.2.1总体设计 (7)3.2.2 学生用户模块 (8)3.2.3 管理员模块 (9)四逻辑结构设计 (9)4.1数据库设计与实现 (9)4.1.1数据库技术的现状与发展 (10)4.2数据库逻辑结构设计 (11)五系统功能设计与实现 (14)5.1系统前台 (14)5.2系统后台 (17)一绪论1.1 课题简介随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
学生成绩信息的管理是不容出错的,其学生基本信息、成绩管理等这些琐碎而又细致的工作,工作量是很大的,而且也不容许出错。
如果是手工管理这些的话,那将耗费工作人员大量的时间和精力。
用计算机来管理这些信息是非常方便,而且出错率小,可靠性高,查找方便,存储量也大。
这些优点能够极大地提高对学生成绩管理的效率,也是管理趋向信息化重要条件。
本系统是弥补某些学校成绩管理的不足,创建的一套行之有效的计算机成绩管理的方案。
1.2 项目开发的目标建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。
(2)不同用户有不同的查询和修改权限,防止非法查询,非法修改。
(3)方便用户的操作,尽量减少用户的操作。
系统概要设计文档
系统概要设计文档目录系统概要设计文档 (1)目录 (2)1引言 (4)1.1编写目的及阅读建议 (4)1.2系统概述 (5)1.3文档概述 (5)1.4设计原则与设计要求 (5)2引用文件 (6)3设计概述 (6)3.1功能需求规定 (6)3.2 运行环境 (6)4系统体系结构设计 (6)4.1系统总体设计 (7)4.1.1概述 (7)4.1.2设计思想 (7)4.1.3基本处理流程 (9)4.1.4系统数据结构设计 (12)4.4接口设计 (14)4.4.1用户接口 (14)4.4.2外部接口 (14)4.4.3内部接口 (14)5运行设计 (15)5.1系统初始化 (15)5.2运行控制 (15)5.3运行结束 (15)6系统出错处理设计 (15)6.1出错信息 (15)6.2补救措施 (16)7系统维护设计 (16)附录 (17)1引言1.1编写目的及阅读建议由前面的需求分析,得出了系统的基本需求,要实现整个系统,需要对用户的需求进行设计,概要设计主要是利用比较抽象的语言对整个系统进行概括,确定对系统的物理配置,确定整个系统的处理流程和系统的数据结构,接口设计,实现对系统的初步设计。
目的在于推动软件工程的规范化,使设计人员遵循统一的概要设计书写规范,节省制作文档的时间,降低系统实现的风险,做到系统设计资料的规范性与全面性,以利于系统的实现、测试、维护、版本升级等。
1.2系统概述本系统为学生信息管理系统,主要实现了对学生信息的管理,包括添加用户账号,修改用户信息、删除用户信息、修改密码等功能。
1.3文档概述本文档为学生信息管理系统的概要设计,主要阐述了学生信息管理系统的整体结构和设计思想。
1.4设计原则与设计要求本系统进行概要设计的原则:●命名规则;●模块独立性原则:●数据库设计规则;●系统易操作性要求;●系统可维护性要求;2引用文件[1] 张海藩主编,《软件工程导论》,清华大学出版社[2] 陆丽娜主编,《软件工程》,经济科学出版社[3] 瞿中主编,《软件工程》,机械工业出版社。
基于python的学生管理系统毕业设计
设计一个基于Python的学生管理系统毕业设计是一个很好的主题,它可以结合多种Python 技术和库来实现。
下面是一个简单的学生管理系统的设计概要,供你参考:功能需求:添加学生信息:包括学生姓名、学号、性别、年龄等基本信息。
查询学生信息:可以按学号或姓名查询学生信息。
修改学生信息:可以修改学生的各项信息。
删除学生信息:可以根据学号或姓名删除学生信息。
显示所有学生信息:将所有学生信息以表格形式展示。
数据存储:将学生信息存储在文件或数据库中,确保数据持久性。
技术实现:使用Python的Tkinter库创建用户界面,包括添加、查询、修改、删除等功能的界面。
使用SQLite或MySQL等数据库管理学生信息。
使用Python编写逻辑代码,实现添加、查询、修改、删除学生信息等功能。
使用pandas库处理学生信息的导入和导出,例如从CSV文件中导入学生信息,或将学生信息导出为Excel表格。
流程示意:用户通过界面选择需要的功能,比如添加学生信息、查询学生信息等。
系统根据用户选择执行相应的操作,比如添加学生信息时弹出输入框,查询学生信息时显示查询结果等。
用户可以通过按钮或菜单与系统进行交互,完成对学生信息的管理和查询。
用户界面设计:设计简洁、直观的用户界面,使用户能够方便地操作系统。
使用合适的布局和图形控件,增加用户友好性。
数据存储与管理:将学生信息存储在数据库中,确保数据的安全性和持久性。
实现数据的增删改查功能,保证学生信息的完整性和准确性。
以上只是一个简要的概要设计,实际开发过程中还需要更加详细的规划和设计。
毕业设计的难度和深度可以根据学校和指导教师的要求来适当调整。
在开始实现之前,建议先进行详细的需求分析和技术选型,确保毕业设计的顺利完成。
祝你顺利完成毕业设计!。
[工学]学生信息管理系统完整源码
学生信息管理系统完整源代码注:本系统采用C/S结构,运用Java GUI知识编写,数据库为SQL SERVER 2005,没有采用典型的三级框架结构,所以代码有冗余,仅供参考。
一、数据表及数据源首先创建数据库,包含数据表如下:数据库创建完成后,新建一个名为SIMS的数据源,不会建数据源的同学可以在去搜索创建数据源的详细步骤,这里的数据名称一定要为SIMS,否则在以后程序连接数据库的语句中会出现错误。
二、操作演示三、代码部分创建Java工程,创建名称为SIMS的包,一下Java类均包含在一个包内。
1.登录界面package SIMS;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.text.SimpleDateFormat;import java.util.*;import java.util.Date;public class login extends JFrame implements ActionListener{String userID; //保留用户输入IDString password; //保留用户输入passwordJLabel jlID=new JLabel("用户ID:"); //使用文本创建标签对象 JLabel jlPwd=new JLabel("密码:");JTextField jtID=new JTextField(); //创建ID输入框JPasswordField jpPwd=new JPasswordField(); //创建密码输入框ButtonGroup bg=new ButtonGroup(); //创建ButtonGroup组件对象JPanel jp=new JPanel(); //创建Panel容器JLabel jl=new JLabel();JRadioButton jrb1=new JRadioButton("管理员");JRadioButton jrb2=new JRadioButton("教师");JRadioButton jrb3=new JRadioButton("学生",true);JButton jb1=new JButton("登录");JButton jb2=new JButton("重置");public login(){this.setLayout(null); //设置窗口布局管理器this.setTitle("学生信息管理系统"); //设置窗口标题this.setBounds(200,150,500,300); //设置主窗体位置大小和可见性this.setVisible(true); //设置窗口的可见性this.setResizable(false);jlID.setBounds(150,60,100,20); //设置ID框属性jtID.setBounds(220,60,100,20); //设置ID输入框属性jlPwd.setBounds(150,90,100,20); //设置密码框属性jpPwd.setBounds(220,90,100,20); //设置密码输入框属性jp.setBounds(35,120,400,250); //设置JPanel容器属性jb1.setBounds(160,170,60,20); //设置登录按钮属性jb2.setBounds(250,170,60,20); //设置取消按钮属性jb1.addActionListener(this); //设置登录按钮监听器jb2.addActionListener(this); //设置取消按钮监听器jl.setBounds(340,75,130,20); //设置提示框属性bg.add(jrb1); //将所有空间加入窗体bg.add(jrb2);bg.add(jrb3);this.add(jlID);this.add(jlPwd);this.add(jtID);this.add(jpPwd);this.add(jb1);this.add(jb2);this.add(jl);jp.add(jrb1);jp.add(jrb2);jp.add(jrb3);this.add(jp);centerShell(this);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(( (screenWidth - shellWidth) / 2),((screenHeight - shellHeight) / 2) );}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(userID);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入IDpassword=jpPwd.getText(); //获取用户输入密码if(e.getSource()==jb1){ //处理登录事件if(userID.equals("") || password.equals("")){jl.setFont(new Font("red",Font.BOLD,12)); //设置提示字体jl.setForeground(Color.red);jl.setText("请输入用户ID和密码");}else{Connection con=null;try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"","");//获取连接字符串Statement stat=con.createStatement();if(jrb1.isSelected())//如果登录选中的管理员{ResultSet rs=stat.executeQuery("select * from Admin"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rss=stat.executeQuery("selectAdmin_Pwd,Admin_Name from Admin where Admin_ID='"+userID+"'");//从表Admin获取信息while(rss.next()){String str=rss.getString(1);if(str.equals(password)){new admin(rss.getString(2));//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12)); //设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}else if(jrb2.isSelected()){ResultSet rs=stat.executeQuery("select * from Teacher_Info"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rss=stat.executeQuery("selectTea_Pwd,Tea_Names from Teacher_Info where Tea_ID='"+userID+"'");//从表Teacher_Info获取信息while(rss.next()){String str=rss.getString(1);if(str.equals(password)){new teacher(rss.getString(2),userID);//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}else if(jrb3.isSelected()){ResultSet rs=stat.executeQuery("select * from Student_Info"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rsss=stat.executeQuery("selectStu_Pwd,Stu_Name from Student_Info where Stu_ID='"+userID+"'");//从表Student_Info获取信息while(rsss.next()){String str=rsss.getString(1);if(str.equals(password)){new student(rsss.getString(2),userID);//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}}catch(Exception ex){ex.getStackTrace();}finally{try{con.close();}catch(Exception exc){exc.printStackTrace();}}}}else if(e.getSource()==jb2){ //处理登录事件jtID.setText("");jpPwd.setText("");jrb3.setSelected(true);jl.setText("");}}public static void main(String[] args){new login();}}2.添加课程package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_course extends JFrame implements ActionListener{ static add_course ss;String courseID=""; //课程名String coursename=""; //课程名String count=""; //课时JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel jlcourseID=new JLabel("课程号:"); //使用文本框创建标签对象JLabel jlcoursename=new JLabel("课程名:");JLabel jlcount=new JLabel("课时:");JTextField jtcourseID=new JTextField(); //创建文本框对象JTextField jtcoursename=new JTextField();JTextField jtcount=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_course(){ //添加教师账号信息this.setTitle("添加课程信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlcourseID); //将控件添加到窗体this.add(title);this.add(jlcoursename);this.add(jlcount);this.add(jtcourseID);this.add(jtcoursename);this.add(jtcount);this.add(note1);this.add(note2);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加课程信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlcourseID.setBounds(180,80,100,20);jlcoursename.setBounds(180,140,100,20);jlcount.setBounds(180,200,100,20);jtcourseID.setBounds(250,80,140,20);jtcoursename.setBounds(250,140,140,20);jtcount.setBounds(250,200,140,20);note1.setBounds(400,80,140,20);note2.setBounds(400,140,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,140,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(courseID);}return false;}public void actionPerformed(ActionEvent e){courseID=jtcourseID.getText(); //获取用户输入内容coursename=jtcoursename.getText();count=jtcount.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(courseID.equals("") || coursename.equals("")){warning.setText("请输入必填信息");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Course_ID from Course");while(rs.next()){if(rs.getString(1).equals(courseID)){warning.setText("课程ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!count.equals("")){temp=stat.executeUpdate("insert intoCourse(Course_ID,Course_Name,Course_Count)values('"+courseID+"','"+coursename+"','"+count+"')");}else{temp=stat.executeUpdate("insert intoCourse(Course_ID,Course_Name) values('"+courseID+"','"+coursename+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");warning.setText("");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){warning.setText("");jtcourseID.setT ext("");jtcoursename.setText("");jtcount.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}}3.添加学生package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_student extends JFrame implements ActionListener{static add_teacher ss;String userID=""; //用户名String pwd1=""; //密码String pwd2=""; //确认密码String getsdept=""; //院系String name=""; //姓名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel note3=new JLabel("*");JLabel jlID=new JLabel("学号:"); //创建文本框对象 JLabel jlName=new JLabel("姓名:");JLabel jlPwd=new JLabel("密码:");JLabel jlPwd2=new JLabel("确认密码:");JLabel sdept=new JLabel("学院:");JTextField jtID=new JTextField();JTextField jtName=new JTextField();JPasswordField jtPwd=new JPasswordField ();JPasswordField jtPwd2=new JPasswordField ();JTextField jtsdept=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_student(){this.setTitle("添加学生账号信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlID); //将控件添加到窗体this.add(title);this.add(jlName);this.add(jlPwd);this.add(jlPwd2);this.add(sdept);this.add(jtID);this.add(jtName);this.add(jtPwd);this.add(jtPwd2);this.add(jtsdept);this.add(note1);this.add(note2);this.add(note3);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);note3.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note3.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加学生账号信息");title.setBounds(222,20,150,20);jlID.setBounds(180,60,100,20);jlName.setBounds(180,100,100,20);jlPwd.setBounds(180,140,100,20);jlPwd2.setBounds(180,180,100,20);sdept.setBounds(180,220,100,20);jtID.setBounds(250,60,140,20);jtName.setBounds(250,100,140,20);jtPwd.setBounds(250,140,140,20);jtPwd2.setBounds(250,180,140,20);jtsdept.setBounds(250,220,140,20);note1.setBounds(400,60,140,20);note2.setBounds(400,140,140,20);note3.setBounds(400,180,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,100,150,20);submit.addActionListener(this);reset.addActionListener(this);this.setSize(600,400);centerShell(this);this.setVisible(true);this.setResizable(false); //设置窗体不可变大小this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(pwd1);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入内容pwd1=jtPwd.getText();pwd2=jtPwd2.getText();getsdept=jtsdept.getText();name=jtName.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){if(userID.equals("") || pwd1.equals("") || pwd2.equals("")){ //判断是否已输入必填信息warning.setText("请输入必填信息");}else if(!pwd1.equals(pwd2)){ //判断两次输入密码是否相同warning.setText("两次输入密码不相同");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Stu_ID from Student_Info");while(rs.next()){if(rs.getString(1).equals(userID)){warning.setText("用户ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Name,Stu_Pwd,Depart)values('"+userID+"','"+name+"','"+pwd1+"','"+getsdept+"')");}else if(!name.equals("") && getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Name,Stu_Pwd) values('"+userID+"','"+name+"','"+pwd1+"')");}else if(name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Pwd,Depart) values('"+userID+"','"+pwd1+"','"+getsdept+"')");}else{temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Pwd) values('"+userID+"','"+pwd1+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){ //重置所有控件warning.setText("");jtID.setText("");jtName.setText("");jtPwd.setText("");jtPwd2.setText("");jtsdept.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}//public static void main(String args[]){// new add_student();//}}4.添加教师package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_teacher extends JFrame implements ActionListener{static add_teacher ss;String userID=""; //用户名String pwd1=""; //密码String pwd2=""; //确认密码String getsdept=""; //院系String name=""; //姓名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel note3=new JLabel("*");JLabel jlID=new JLabel("教工号:"); //使用文本框创建标签对象 JLabel jlName=new JLabel("姓名:");JLabel jlPwd=new JLabel("密码:");JLabel jlPwd2=new JLabel("确认密码:");JLabel sdept=new JLabel("学院:");JTextField jtID=new JTextField(); //创建文本框对象JTextField jtName=new JTextField();JPasswordField jtPwd=new JPasswordField ();JPasswordField jtPwd2=new JPasswordField ();JTextField jtsdept=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_teacher(){ //添加教师账号信息this.setTitle("添加教师账号信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlID); //将控件添加到窗体this.add(title);this.add(jlName);this.add(jlPwd);this.add(jlPwd2);this.add(sdept);this.add(jtID);this.add(jtName);this.add(jtPwd);this.add(jtPwd2);this.add(jtsdept);this.add(note1);this.add(note2);this.add(note3);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);note3.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note3.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加教师账号信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlID.setBounds(180,60,100,20);jlName.setBounds(180,100,100,20);jlPwd.setBounds(180,140,100,20);jlPwd2.setBounds(180,180,100,20);sdept.setBounds(180,220,100,20);jtID.setBounds(250,60,140,20);jtName.setBounds(250,100,140,20);jtPwd.setBounds(250,140,140,20);jtPwd2.setBounds(250,180,140,20);jtsdept.setBounds(250,220,140,20);note1.setBounds(400,60,140,20);note2.setBounds(400,140,140,20);note3.setBounds(400,180,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,100,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(pwd1);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入内容pwd1=jtPwd.getText();pwd2=jtPwd2.getText();getsdept=jtsdept.getText();name=jtName.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(userID.equals("") || pwd1.equals("") || pwd2.equals("")){warning.setText("请输入必填信息");}else if(!pwd1.equals(pwd2)){ //判断两次输入密码是否一致warning.setText("两次输入密码不相同");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Tea_ID from Teacher_Info");while(rs.next()){if(rs.getString(1).equals(userID)){warning.setText("用户ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Names,T ea_Pwd,Depart)values('"+userID+"','"+name+"','"+pwd1+"','"+getsdept+"')");}else if(!name.equals("") && getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Names,T ea_Pwd)values('"+userID+"','"+name+"','"+pwd1+"')");}else if(name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Pwd,Depart) values('"+userID+"','"+pwd1+"','"+getsdept+"')");}else{temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Pwd) values('"+userID+"','"+pwd1+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){warning.setText("");jtID.setText("");jtName.setText("");jtPwd.setText("");jtPwd2.setText("");jtsdept.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}// public static void main(String[] args){// new add_teacher();// }}5.添加授课信息package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_tc extends JFrame implements ActionListener{static add_tc ss;String courseID=""; //课程名String teachername=""; //课程名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel jlcourseID=new JLabel("课程号:"); //使用文本框创建标签对象JLabel jlteachername=new JLabel("教师号:");JTextField jtcourseID=new JTextField(); //创建文本框对象JTextField jtteachername=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_tc(){ //添加授课信息this.setTitle("添加授课信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlcourseID); //将控件添加到窗体this.add(jlteachername);this.add(title);this.add(jtcourseID);this.add(jtteachername);this.add(note1);this.add(note2);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加授课信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlcourseID.setBounds(180,80,100,20);jlteachername.setBounds(180,140,100,20);jtcourseID.setBounds(250,80,140,20);jtteachername.setBounds(250,140,140,20);note1.setBounds(400,80,140,20);note2.setBounds(400,140,140,20);submit.setBounds(200,250,60,20);reset.setBounds(300,250,60,20);warning.setBounds(420,140,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(courseID);}return false;}public void actionPerformed(ActionEvent e){courseID=jtcourseID.getText(); //获取用户输入内容teachername=jtteachername.getText();int temp=0,flag1=0,flag2=0,flag3=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(courseID.equals("") || teachername.equals("")){warning.setText("请输入必填信息");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Course_ID from Course");while(rs.next()){if(rs.getString(1).equals(courseID)){flag1=1; //判断课程ID存在break;}}ResultSet rss=stat.executeQuery("select Tea_ID fromTeacher_Info");while(rss.next()){if(rss.getString(1).equals(teachername)){flag2=1; //判断教师ID存在break;}}if(flag1!=1){warning.setText("课程ID不存在");}else if(flag2!=1){warning.setText("教师ID不存在");}ResultSet rsss=stat.executeQuery("select Course_ID,T ea_ID from tc");while(rsss.next()){if(rsss.getString(1).equals(courseID) &&rsss.getString(2).equals(teachername)){flag3=1;warning.setText("授课信息重复");。
学生基本信息数据库代码(Student basic information database code)
学生基本信息数据库代码(Student basic information databasecode)创建数据库studjc使用studjc创建表adminusers(adminid int身份(1,1)主键,adminname varchar(20),adminpwd varchar(20))插入adminusers值('wyx ','1234”)插入adminusers值('sql ','abcd”)创建表的专业(zhuanyeid int身份(1,1)主键,zhuanyename varchar(20))插入专业价值观(“计算机应用技术”)插入专业价值观(“软件技术”)插入专业价值观(“计算机网络技术”)创建表的类(classid int身份(1,1)主键,zhuanyeid int外键引用专业(zhuanyeid),className varchar(20))插入类值(1,“计a081”)插入类值(1,“计b081”)插入类值(2,“软件a081”)插入类值(2,“软件a091”)插入类值(3,“网络a081”)插入类值(2,“网络a091”)创建表zhengzhimm(3主关键字,mmname char(4))插入zhengzhimm值(1,“党员”)插入zhengzhimm值(2,“团员”)插入zhengzhimm值(3,“群众”)创建表studusers(studnum char(10)主键,studname varchar(20),studsex char(2),zhuanyeid int外键引用专业(zhuanyeid),classid int外键引用类(classid),3 int外键引用zhengzhimm(3))插入studusers值('2008010101 ','张凤','女’,‘,‘,2)插入studusers值('2008010102 ','李立芬','女,1,2,2)插入studusers值('2008010201 ','王一','男’,‘2’,3’,1)修改表studusers添加检查(studsex =“男”或studsex =“女”)创建表jangli(jlid int身份(1,1)主键,jlname varchar(50),jldanwei varchar(50),jlgrade char(10))修改表jangli添加独特的(jlname,jldanwei)插入jangli值(“三好学生','水利学院','院级”)插入jangli值(“优秀团员','水利学院','院级”)插入jangli值(“一等奖学金','水利学院','院级”)创建表的荸荠(cfid int身份(1,1)主键,cfname varchar(50),cfdanwei varchar(50),cfgrade char(10))插入荸荠值(“警告','水利学院','院级”)插入荸荠值(“留校察看','水利学院','院级”)创建表studjl(studjlid int身份(1,1)主键,studnum char(10)外键引用studusers(studnum),jlid int外键引用jangli(jlid),jlxueqi char(1)不为空,jltime DateTime,jlcailiao varchar(50)空,jlyouxiao char(1)默认的“Y”,jlchexiaotime日期无效)修改表studjl添加独特的(studnum,jlid,jlxueqi)插入studjl(studnum,jlid,jlxueqi,jltime)值('2008010101插入studjl(studnum,jlid,jlxueqi,jltime)值('2008010102 ',2,2,'2009-11-2”)插入studjl(studnum,jlid,jlxueqi,jltime)值('2008010201 ',1,2,'2009-11-2”)创建表studcf(studcfid int身份(1,1)主键,studnum char(10)外键引用studusers(studnum),cfid int外键引用荸荠(cfid),cfxueqi char(1)不为空,cftime DateTime,cfcailiao char(50)空,cfyouxiao char(1)默认的“Y”,cfchexiaotime日期无效)修改表studcf添加独特的(studnum,cfid,cfxueqi)插入studcf(studnum,cfid,cfxueqi,cftime)值('2008010201插入studcf(studnum,cfid,cfxueqi,cftime)值('2008010101 ',2,2,'2009-11-12”)创建表的消息(NewSID int身份(1,1)主键,标题varchar(50),文本varchar(400))插入新闻价值(“操作说明,1。
《Web课程设计报告》宿舍信息管理系统
《Web课程设计报告》宿舍信息管理系统目录1课程设计任务 (2)1.1 宿舍信息管理系统的任务分析 (2)1.2 开发环境 (2)1.3 进度计划 (2)2需求分析 (3)2.1 项目功能分析 (3)2.2 总体功能结构图 (4)3系统设计 (4)3.1 数据的持久化设计 (4)3.2 类/接口设计 (7)3.2.1 类图............................................ 错误!未定义书签。
3.2.2 程序处理流程 (7)4系统实现 (10)4.1 系统文件规划 (10)4.2 主程序 (11)5程序测试 (17)5.1 测试方法............................................ 错误!未定义书签。
5.2 测试用例 (17)6设计总结 (17)1课程设计任务1.1宿舍信息管理系统的任务分析总体功能描述该系统拥有三种角色:1. 系统管理员查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看学生信息、宿管信息、查看楼宇信息、查看公告信息、查看房间信息、查看报修信息、查看调寝信息、访客管理、查看所有用户信息1. 宿舍管理员查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看学生信息、查看楼宇信息、查看公告信息、查看房间信息、查看报修信息、查看调寝信息、访客管理、查看个人信息1. 学生查看当前宿舍学生人数、住宿人数、报修数量、空舍数量、查看我的宿舍、申请调宿、申请报修、查看个人信息1.2开发环境jdk11、Maven、Node、Mysql、tomcat、Vue、SpingBoot、MybatisPlus、ElementUI、JavaScript、axios1.3进度计划1第一周:在第一周的时候完成前端Vue内容的完成。
第一天完成登录页面,在登录页面添加人物跟随鼠标动画,并将登录页面的背景设置为渐变色背景实时发生动态变色。
Oracle和SQLServer的语法区别
Oracle和SQLServer的语法区别SQL 语言支持这一部分概述了 Transact-SQL 和 PL/SQL 语言语法之间的相同点和不同点,并给出转换策略。
要将 Oracle DML 语句和 PL/SQL 程序迁移到 SQL Server 时,请按下列步骤执行:1.验证所有 SELECT、INSERT、UPDATE 和 DELETE 语句的语法是有效的。
进行任何必要的修改。
2.把所有外部联接改为 SQL-92 标准外部联接语法。
3.用相应 SQL Server 函数替代 Oracle 函数。
4.检查所有的比较运算符。
5.用“+”字符串串联运算符代替“||”字符串串联运算符。
6.用 Transact-SQL 程序代替 PL/SQL 程序。
7.把所有 PL/SQL 游标改为非游标 SELECT 语句或 Transact-SQL 游标。
8.用 Transact-SQL 过程代替 PL/SQL 过程、函数和包。
9.把 PL/SQL 触发器转换为 Transact-SQL 触发器。
10.使用 SET SHOWPLAN 语句,优化查询性能。
SELECT 语句Oracle 和 Microsoft SQL Server 使用的 SELECT 语句语法类似。
SQL Server 不支持 Oracle 特定的基于开销的优化程序提示,它必须被删除。
建议使用的技术是,使用 SQL Server 基于开销的优化程序。
有关详细信息,请参见本章后面的“SQL 语句优化”。
SQL Server 不支持 Oracle 的 START WITHUCONNECT BY 子句。
在 SQL Server 中,可以创建完成相同任务的存储过程替代它。
SQL Server 不支持 Oracle 的 INTERSECT 和 MINUS 集合运算符。
可使用 SQL Server EXISTS 和 NOT EXISTS 子句,实现相同的结果。
代理模型的测试函数
代理模型的测试函数代理模型(Agent Model)是一种软件设计模式,它允许将对象的访问和控制委派给其他对象。
代理模型常用于以下情况:1. 远程代理(Remote Proxy):用于在不同的地址空间中访问对象。
远程代理可以隐藏网络细节,使调用者感觉它们正在与本地对象进行交互。
2. 虚拟代理(Virtual Proxy):用于在一些情况下延迟创建开销大的对象。
虚拟代理可以在真正需要对象时才创建它,从而提高系统的性能和响应速度。
3. 保护代理(Protection Proxy):用于控制对对象的访问权限。
保护代理可以根据调用者的身份或者权限等因素,判断是否允许对对象进行操作。
为了测试代理模型的功能和效果,我们可以设计一个简单的场景,并编写测试函数进行验证。
假设我们有一个学生管理系统,其中包括学生对象和学生列表对象。
我们可以使用代理模型来控制对学生对象的访问和修改。
首先,我们需要定义学生对象的类,包括姓名、年龄和成绩等属性,以及相应的访问和修改方法。
```pythonclass Student(object):def __init__(self, name, age, score): = nameself.age = ageself.score = scoredef get_name(self):return def get_age(self):return self.agedef get_score(self):return self.scoredef set_name(self, name): = namedef set_age(self, age):self.age = agedef set_score(self, score):self.score = score```接下来,我们创建学生列表对象,用于保存学生对象,并提供对学生对象的访问和修改方法。
```pythonclass StudentList(object):def __init__(self):self.students = []def add_student(self, student):self.students.append(student)def remove_student(self, student):self.students.remove(student)def get_students(self):return self.students```现在,我们可以为学生对象和学生列表对象创建代理类,以实现远程代理和保护代理功能。
教务管理系统
教务管理系统班级:java12-02小组成员目录1 引言 (4)1.1编写目的 (4)1.2背景 (4)1.3定义 (4)2 需求规定 (4)2.1目标 (4)2.2用户需求分析 (5)2.3功能需求系统功能需求 (5)2.4数据需求 (5)2.5性能需求 (6)2.6可行性分析 (6)(1)经济可行性 (6)(2)技术可行性 (7)(3)运行可行性 (7)2.7用例图 (7)2.8E-R图: (8)2.9数据库需求分析设计 (9)3 任务概述及系统功能概述 (11)3.1教务管理系统的系统特点 (11)(1)、简洁美观的操作界面 (11)(2)、教务管理模式 (11)3.2系统功能说明 (11)3.2.1功能划分 (11)1)、管理员管理系统 (11)2)、教师管理系统 (12)3)、学生管理管理系统 (13)4 运行环境规定 (14)4.1设备 (14)4.2支持软件 (14)5系统设计 (14)6心得体会 (28)1引言1.1编写目的编写本文档是为了明确用户的需求,用以精确软件框架结构设计,为测试提供依据。
并且是开发小组成员分工明确,让该组成员清楚将要完成的管理系统具备哪些具体功能及特点,以让成员能有一个很好的初步概念,目标明确,提高工作效率。
1.2背景说明:1)待开发系统软件名称:学生成绩管理系统;2)本项目的任务是由各组员共同讨论,共同开发,用于提升软件开发的能力3)开发背景:本系统属于郑州轻工业学院的教务管理模块,实现的是网络管理系统中关于学生成绩管理的子功能,通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和MyEclipse的使用能力,提高软件开发的环境搭建能力,SSH框架的应用能力。
4)针对郑州轻工业学院教务管理系统,做出的更精简的系统。
1.3定义1)存储过程是存储在服务器上的由SQL语句和控制流语句组成的一个预编译集合。
2)触发器属于一种特殊的存储过程,可以在其中包含复杂的SQL语句。
学生公寓管理系统
学生公寓管理系统第3章学生公寓管理系统3.1 概述目前,校园内的学生住宿已经逐步开始进行公寓化管理。
在管理过程中,入住学生信息、来访登记等各种信息内容复杂、数据量大,传统的手工记录方式很难完成快速、准确的查询、统计等管理工作。
开发学生公寓管理系统,利用计算机实现管理的信息化,不仅可以节省人力、物力资源,提高管理人员的工作效率,同时也加强了信息的安全性和可靠性。
3.2 系统分析与总体设计要开发一个管理信息系统,首先需要进行需求分析和总体设计,分析系统的使用对象和用户需求,设计系统的体系结构和数据库结构,决定使用的开发工具和后台数据库,规划项目开发进度。
在实际的项目开发过程中,这些工作是非常重要的。
3.2.1 系统需求分析本系统的用户是学生公寓管理人员和负责老师,他们在日常公寓管理的主要工作有:入住学生信息的查询与管理、寝室分配及调整、来访登记等。
根据上述需求进行分析,本系统在实现上应该具有如下功能:, 学生基本信息管理,包括学生姓名、学号、所属院系班级、公寓楼号、寝室号等数据。
, 寝室的使用情况统计,例如房源使用情况、空床统计情况等。
, 学生每学期的注册登记,以及住宿费、电费等缴纳情况管理。
, 人员来访登记及结束访问的详细记录。
, 提供多条件查询功能,以方便用户对学生基本信息及楼房信息的查询。
, 添加、删除、修改用户账户的功能。
3.2.2 系统体系结构设计本节将根据需求分析中总结的用户需求设计系统的体系结构。
根据实现功能的不同可以将系统划分为4大模块:系统管理模块、学生管理模块、公寓管理模块、来访登记模块。
系统的功能模块图如图3.1所示。
在功能模块示意图的树状结构中,每个叶结点都是一个最小的功能模块。
每一个功能模块都需要针对不同的表完成相同的数据库操作,即添加记录、修改记录、删除记录以及查询显示记录信息。
学生公寓管理系统来系学公访统生寓登管管管记理理理管理学生学公公基生寓寓本交楼寝信费房室息管管管管理理理理针对各模块不同的表实现添加记录、修改记录、删除记录以及查询显示记录等功能图3.1 学生公寓管理系统功能模块示意图在本系统中,可以把功能模块分为以下3个功能集合来描述:1. 学生信息管理功能集合包括学生基本信息管理和交费管理等功能模块。
学生信息管理系统(完整代码、数据库、图片)
《Java应用开发》课程设计报告题目:学生信息管理系统指导老师:***姓名:**专业:计算机科学与技术班级: 10级1班日期:2012年6月目录一、系统总体设计 (3)(一)设计目标及完成功能 (3)(二)系统流程图 (4)二、详细设计 (5)(二)系统设计 (9)(三)源代码及技术 (12)三、使用与测试 (42)四、数据库设计 (43)总结(体会) (44)参考文献 (45)一、系统总体设计(一)设计目标及完成功能1、设计目标学生信息管理系统是学校的一项重要数据资源,因而学生信息管理必然成为学校的一项常规性的重要工作.加强学生信息管理在单纯依靠以手工管理的方法,不仅需要耗用大量的人力、物力、财力,而且由于人工管理存在着大量的不可控因素,造成了信息管理的某些不规范,工作效率低,难以达到预期的目的。
为提高工作效率、保证学校能够及时准确了解各学生的各种信息及学生总体信息,开发学生信息管理系统。
2、完成功能完成学生信息的基本管理.本系统分为管理员和学生管理两部分。
管理员管理项目如下:添加学生信息、修改学生信息、查询学生信息、删除学生信息;学生管理项目如下:添加学生信息、查询学生信息.(二)系统流程图二、详细设计图2-1 登陆界面1图2—2 登陆界面2图2—3 系统主界面图2—4 添加学生信息界面图2—5 修改学生信息界面图2—6 查询学生信息界面图2—7 删除学生信息界面图2-8 系统信息界面图2—9 我的信息界面(二)系统设计1、系统结构图学生信息管理系统学生登陆管理员登陆添加学生信息查询学生信息添加学生信息修改学生信息查询学生信息删除学生信息2、类及功能列表(三) 源代码及技术1、所有代码student.mdf -数据库将以下图片以上图名称存入images文件夹目录下。
要自己将各代码新建为.java格式文件,放在与images文件夹同目录下.并将数据库附加到sqlserver2005,再不需要任何改动方可运行.①登陆界面1import java。
python面向对象编程例题 学生信息管理系统
python面向对象编程例题学生信息管理系统一、介绍Python是一门高级编程语言,广泛用于数据分析、人工智能、网络编程等领域。
Python的面向对象编程(Object-Oriented Programming,简称OOP)是其重要的编程范式之一。
本文将介绍一个基于Python面向对象编程的例题——学生信息管理系统。
二、需求分析学生信息管理系统是一个常见的应用场景,我们需要实现以下功能:1. 添加学生信息:包括学号、姓名、性别、年龄等2. 查询学生信息:可以按照学号或姓名进行查询3. 修改学生信息:可以修改学号、姓名、性别、年龄等4. 删除学生信息:可以按照学号或姓名进行删除5. 显示所有学生信息:按照添加顺序显示所有学生信息三、设计思路根据需求分析,我们可以设计以下类:1. 学生类(Student):成员变量包括学号(id)、姓名(name)、性别(gender)、年龄(age),成员函数包括构造函数(__init__)和字符串表示函数(__str__)2. 学生信息管理类(StudentManager):成员变量包括所有学生信息列表(students),成员函数包括添加学生信息函数(add_student)、查询学生信息函数(query_student)、修改学生信息函数(modify_student)、删除学生信息函数(delete_student)和显示所有学生信息函数(show_all_students)四、具体实现1. 学生类```pythonclass Student:def __init__(self, id, name, gender, age):self.id = id = nameself.gender = genderself.age = agedef __str__(self):return f"学号:{self.id},姓名:{},性别:{self.gender},年龄:{self.age}"```2. 学生信息管理类```pythonclass StudentManager:def __init__(self):self.students = []def add_student(self, student):self.students.append(student)def query_student(self, keyword):result = []for student in self.students:if keyword in (student.id, ):result.append(student)return resultdef modify_student(self, keyword, id=None, name=None, gender=None, age=None):for student in self.students:if keyword in (student.id, ):if id is not None:student.id = idif name is not None: = nameif gender is not None:student.gender = genderif age is not None:student.age = agedef delete_student(self, keyword):for i in range(len(self.students)):if keyword in (self.students[i].id, self.students[i].name): del self.students[i]breakdef show_all_students(self):for student in self.students:print(student)```五、测试代码```python# 创建学生信息管理对象manager = StudentManager()# 添加学生信息manager.add_student(Student("001", "张三", "男", 18)) manager.add_student(Student("002", "李四", "女", 19)) manager.add_student(Student("003", "王五", "男", 20))# 查询学生信息result = manager.query_student("张三")for student in result:print(student)# 修改学生信息manager.modify_student("李四", age=20) manager.show_all_students()# 删除学生信息manager.delete_student("王五")manager.show_all_students()```六、总结通过本例题,我们了解了Python面向对象编程的基本概念和实现方式,并且实现了一个简单的学生信息管理系统。
学籍管理系统论文
摘要学籍管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
关键字:学籍管理,VB连接SQL,计算机应用ABSTRACTStudent management system is an indispensable part of the education unit, its contents for the school administrators and policy makers is crucial, so student management system should be able to provide users with sufficient information and efficient means of the inquiry.But since people use traditional artificial waymanagement document file, this management way has many shortcomings, such as: low efficiency, confidentiality of the poor, another time a long, will produce the massive documents and the data, this find, update and maintenance has brought a lot of difficulties.With the continuous improvement of science and technology, computer science increasingly mature, its powerful features for people to have a profound understanding, it has entered the human society in various fields and play an increasingly important role in.KEYWORDS: School Management, VB Connection SQL, Computer Application目录摘要 (I)ABSTRACT (II)1绪论 (1)1.1引言 (1)1.2本系统实现了如下功能 (1)1.3设计目的 (2)1.4系统特色 (2)2系统开发环境 (3)2.1 Microsoft Visual Basic 6.0 中文版简介 (3)2.2 MS SQL Server 2005简介 (3)2.3系统运行平台 (3)3系统所用关键技术 (4)3.1 VB连接 SQL 数据 (4)3.2建立数据库 (6)3.3使用VB中DataRepor创建报表 (7)4本系统功能结构与实体E-R图 (8)4.1本系统E-R图 (8)4.2系统流程E-R图 (8)5数据库结构的设计 (11)6 VB系统模块设计 (18)6.1主体窗体的设计 (18)6.2系统登陆窗口设计 (21)6.3学生信息的查询 (24)6.4学生信息查询报表设计 (25)7总结 (27)谢辞 (28)参考文献 (29)1绪论1.1引言人类有几千年的历史,计算机从产生到现在只不过50多年,而网络的迅速发展也不过10年的时间。
csdn python学生管理系统课程设计
csdn python学生管理系统课程设计以下是一个简单的Python学生管理系统的课程设计:课程目标:设计一个基于Python的学生管理系统,能够实现学生信息的录入、查询、修改、删除,以及成绩的录入、查询、修改、删除等功能。
基本要求:1. 学生信息包括学号、姓名、性别、年龄、班级等字段;2. 学生信息的录入通过交互式输入的方式,可以一次性录入多个学生的信息;3. 学生信息的查询可以通过学号、姓名等方式进行,查询结果可以显示或者导出为txt、csv等格式;4. 学生信息的修改和删除可以通过学号进行,同时提示操作是否成功;5. 成绩信息包括学号、科目、成绩等字段;6. 成绩信息的录入通过交互式输入的方式,可以一次性录入多个学生的多门成绩;7. 成绩信息的查询可以通过学号、科目等方式进行,查询结果可以显示或者导出为txt、csv等格式;8. 成绩信息的修改和删除可以通过学号和科目进行,同时提示操作是否成功;9. 系统需要有菜单界面,能够进行学生信息和成绩信息的操作选择;10. 尽量考虑异常情况的处理,比如学号重复、输入错误等。
设计思路:1. 创建一个学生类,包含学号、姓名、性别、年龄、班级等属性;2. 创建一个成绩类,包含学号、科目、成绩等属性;3. 创建一个学生管理类,包含学生信息的录入、查询、修改、删除等方法;4. 创建一个成绩管理类,包含成绩信息的录入、查询、修改、删除等方法;5. 创建一个菜单类,包含系统菜单的显示和操作选择;6. 在主函数中循环显示菜单,根据用户选择执行相应的操作。
实现细节:1. 使用面向对象的思想进行设计,将不同的功能模块拆分成不同的类,提高代码的可读性和复用性;2. 学生信息和成绩信息可以使用列表或字典进行存储,方便后续的查询、修改、删除操作;3. 需要注意输入的合法性判断,比如学号是否重复、成绩是否合法等;4. 可以使用文件读写操作来实现学生信息和成绩信息的持久化,方便下次运行时加载已有数据。
python学生管理系统总结
python学生管理系统总结Python是一门非常流行的编程语言,广泛应用于各个领域。
其中,学生管理系统是Python编程中比较基础的项目之一,适合初学者练手。
本文将围绕Python学生管理系统进行分步骤的阐述,帮助读者更好地了解这个项目。
首先,我们需要明确学生管理系统的基本功能,即对学生信息进行增删改查。
对此,我们可以创建一个包含学生信息的列表,然后通过代码实现对这个列表的增删改查操作。
具体的步骤如下:1. 创建一个包含学生信息的列表:这个列表可以包含学生的姓名、年龄、性别、班级等基本信息。
具体的格式可以自己定义。
2. 实现学生信息的增加功能:通过代码实现向列表中添加一个新的学生信息,可以要求用户输入学生的基本信息,也可以自动从文件读取信息。
3. 实现学生信息的删除功能:通过代码实现从列表中删除一个学生信息,可以输入学生的姓名或编号进行删除操作。
4. 实现学生信息的修改功能:通过代码实现对已有学生信息的修改,可以输入学生的姓名或编号进行修改操作。
5. 实现学生信息的查询功能:通过代码实现对学生信息的查询操作,可以输入学生的姓名、年龄、班级等信息进行查询。
6. 可以对学生信息进行保存和读取:可以将学生信息保存到文件中,也可以从文件中读取学生信息。
以上是学生管理系统基本功能的实现步骤,完成这些操作后,就可以实现对学生信息的管理。
当然,这只是学生管理系统的基础功能。
如果想要实现更复杂的功能,比如统计学生信息、数据可视化等,还需要根据实际需求进行扩展。
除此之外,还有一些要点需要注意:1. 在进行学生信息的增删改操作时,要确保输入的学生信息是正确的。
可以添加一些判断语句,避免输入错误。
2. 在进行学生信息的查询功能时,要注意处理用户输入的信息,以免出现查询错误。
3. 在进行学生信息的保存和读取时,要考虑文件的格式、存储路径等问题。
总之,学生管理系统是Python编程中比较经典的项目,通过构建一个简单的学生管理系统,可以加深对Python编程语言的理解,也可以提高编程能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Division - Name - Date - Language
4 2
第一步:登录施耐德电气分销商在线学习系统
Division - Name - Date - Language
4 3
第二步:选择希望学习的课程
示例:低压配电基 础知识
Division - Name - Date - Language
第二步:找到页面右下角在线帮助栏
热线电话 常用工具 系统要求
Division - Name - Date - Language
5 8
学员管理员的工作流程
初次使用 √ 创建学员帐户 √ 维护与修改学员帐户 √ 修改密码 √ 课程学习与测验 √ 查看报表 √ 使用在线帮助 √
Division - Name - Date - Language
一、评选目的: 评选目的:
激励分销商学员管理员在分销商内部宣传推广“施耐德电气分销商在线学习系统”,推动 分销商员工参与在线学习。
二、评选范围:全体学员管理员 评选范围: 三、评选时间:2008年4月15日—6月15日 评选时间: 年 月 日 月 日 四、评选流程: 评选流程:
• 4月15日,评选活动通知并开始 • 4月15日至6月15日,推广期评选活动进行 • 6月16日至6月29日,根据评估标准指标进行数据统计,积分累计、排名 • 6月30日,公布评选结果并寄发奖品
查看结果
Division - Name - Date - Language
4 9
学员管理员的工作流程
初次使用 √ 创建学员帐户 √ 维护与修改学员帐户 √ 修改密码 √ 课程学习与测验 √ 查看报表 使用在线帮助
Division - Name - Date - Language
5 0
第一步:登录施耐德电气分销商在线学习系统
3 1
第一步:登录施耐德电气分销商在线学习系统
Division - Name - Date - Language
3 2
第二步:查询到学员帐户
Division - Name - Date - Language
3 3
第三步:查找到需要修改密码的用户帐户
Division - Name - Date - Language
Division - Name - Date - Language
1 5
第二步:依次展开用户-帐户管理
出现添加新用户
Division - Name - Date - Language
1 6
第三步:点击添加新用户显示添加新用户页面
红色为必填项
Division - Name - Date - Language
Division - Name - Date - Language
2 4
第四步:点击下方的增加条件按钮
点击此按钮
Division - Name - Date - Language
2 5
第五步:查看页面最下方的结果页面
Division - Name - Date - Language
2 6
第六步:查看用户详细信息页面
2
为什么我们要开发分销商在线学习系统? 为什么我们要开发分销商在线学习系统?
提升分销商技术能力,促进业务增长 提高新产品宣传的有效性,及时性 扩大分销商培训覆盖率 节约分销商和施耐德电气的培训费用
提高客户满意度
Division - Name - Date - Language
3
如何使用分销商在线学习系统? 如何使用分销商在线学习系统?
2 9
第九步:修改完成后点击下方用户添加完成按钮
用户添加完成
Division - Name - Date - Language
3 0
学员管理员的工作流程
初次使用 √ 创建学员帐户 √ 维护与修改学员帐户 √ 修改密码 课程学习与测验 查看报表 使用在线帮助
Division - Name - Date - Language
点击学员帐户名称
பைடு நூலகம்
用户详细信息页面
Division - Name - Date - Language
2 7
第七步:点击编辑个人资料
Division - Name - Date - Language
2 8
第八步:编辑个人资料
在此修改学员信息
Division - Name - Date - Language
5 3
第四步:点击学员管理员查询按钮显示查询页面
填写要查询的时间 范围
Division - Name - Date - Language
5 4
第五步:指定查询条件后点击增加条件按钮后显示查询结果页面
显示查询结果
Division - Name - Date - Language
5 5
学员管理员的工作流程
3 4
第四步:编辑个人资料
在此修改学员密码, 直接输入新密码即 可,输入完成后点 击下方用户添加完 成
Division - Name - Date - Language
3 5
第五步:修改自己的密码
登录施耐德分销商 在线学习系统
Division - Name - Date - Language
3 6
2 1
第一步:登录施耐德电气分销商在线学习系统
Division - Name - Date - Language
2 2
第二步:依次展开用户-帐户管理
出现添加浏览用户 列表
Division - Name - Date - Language
2 3
第三步:点击浏览用户列表显示查询用户帐户页面
输入想要查找的用 户名或邮件地址
五、奖励奖品 • 特等奖 名:奖品为20寸电脑液晶宽屏显示器 特等奖1名 奖品为 寸电脑液晶宽屏显示器 • 一等奖 名:奖品为80G移动硬盘 一等奖3名 奖品为 移动硬盘 • 二等奖 名:奖品为罗技牌无线鼠标 二等奖10名 • 三等奖 名:奖品为1G的U盘 三等奖50名 奖品为 的 盘 • 纪念奖若干:奖品为精美鼠标垫 纪念奖若干:
在分销商内部推广 施耐德电气分销商在线学习系统
定期查看报表 获取学员的学习情况信息
在分销商内部确认 学员个人信息并为学员创建帐户
在分销商内部持续推广 施耐德电气在线学习系统
Division - Name - Date - Language
7
学员管理员的工作内容
初次使用 创建学员帐户 维护与修改学员帐户 修改密码 课程学习与测验 查看报表 使用在线帮助
1 7
第四步:根据学员实际情况录入信息
学员的初始帐户名 称与密码
学员满意度调查数 据
分销商信息
Division - Name - Date - Language
1 8
第五步:录入完成并确认无误后点击下方用户添加完成按钮
确认无误后点击
Division - Name - Date - Language
第六步:点击页面最下方的帐户名称
居中红颜色部分
Division - Name - Date - Language
3 7
第七步:点击后显示自己的帐户信息
Division - Name - Date - Language
3 8
第八步:点击下方的更改密码
Division - Name - Date - Language
Division - Name - Date - Language
8
第一步:登录施耐德电气公司主页进入分销商专区 分销商专区
建议放入收藏夹
Division - Name - Date - Language
9
第二步:点击施耐德电气分销商在线学习系统链接 施耐德电气分销商在线学习系统链接
页面左下角
Division - Name - Date - Language
Division - Name - Date - Language
5
栏目介绍
新产品发 布 登录 解决方案 共享 常见技术问 答FAQ
论坛及讨 论区
搜索功能 日历
名词解释 现有课程
每次刷新
在线帮助
Division - Name - Date - Language
6
学员管理员的工作范围
通过邮件获取 学员管理员用户名与密码
1 0
第三步:显示施耐德电气分销商在线学习系统页面
Division - Name - Date - Language
1 1
第四步:在左上角的登录栏中输入获取的用户名与密码 用户名与密码
及时查看邮件
Division - Name - Date - Language
1 2
第五步:成功进入分销商在线学习系统并浏览内容
3 9
第九步:输入当前密码和新密码
Division - Name - Date - Language
4 0
第十步:显示密码修改成功
Division - Name - Date - Language
4 1
学员管理员的工作流程
初次使用 √ 创建学员帐户 √ 维护与修改学员帐户 √ 修改密码 √ 课程学习与测验 查看报表 使用在线帮助
Division - Name - Date - Language
1 3
学员管理员的工作流程
初次使用 √ 创建学员帐户 维护与修改学员帐户 修改密码 课程学习与测验 查看报表 使用在线帮助
Division - Name - Date - Language
1 4
第一步:登录施耐德电气分销商在线学习系统
5 9
评选优秀学员管理员活动介绍 评选优秀学员管理员活动介绍 2/2 优秀学员管理员