摘 要
在经济与科技飞速发展的21世纪,随着计算机、网络在全球范围内的普及,信息化时代已经来临,信息化发展加快了教育改革的步伐。教育事业的蓬勃发展促使数字校园建设速度加快,日益增多的高校教学资源信息量,普遍提高的大学升学率,不断扩大的高校规模,对高校管理者们提出了挑战。
随着学校的规模不断扩大,学生数量急剧增长﹐需要管理的各种信息也成倍增加,同时由于计算机和网络技术的普及。
本系统主要实现了对高校从学生成绩录入﹑到学生成绩管理,主要描述系统主界面的设计﹑主菜单的设计﹑用户注册﹑修改密码﹑学生成绩管理等一系列功能整个系统从操作简便﹑灵活,实用的口的要求出发完成学生信息管理系统全过程。整个系统实现了学生信息查询﹑修改,老师信息添加﹑修改﹑删除,系统管理的系列功能。
本系统采用python架构,以code中的python为开发平台,并使用了Django框架管理系统,应用面向对象的开发方法。参考了已有的学生成绩管理系统,并结合该校学生使用系统的实际情况,进行设计和实现。本系统总体结构分为退出、更改密码、修改资料、后台管理功能模块。实现了学生个人信息查询、修改,学生成绩录入,删除等基本功能。实现了学生成绩管理的规范化,减少了教学人员的工作量。本系统界面简洁,操作简单,稳定性高,存储量大等优点,能便于学生成绩管理和学生发展。
关键词:成绩管理,Django框架,成绩统计
目 录
学生成绩管理系统(Student Score Management System),以下抑称SSMS,是针对学校学生成绩查询、增加、修改工作而开发的管理软件,是典型的管理成绩系统(Score Information System)。它是一个教育单位不可缺少的部分,它的内容对于学校的老师、学生和管理者来说都至关重要,它能够为学生老师提供充足的信息和快捷的查询手段,能有效的帮助学校和老师掌握学生的情况,为学生提供成绩方面的查询,在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时问一长将产生大量的文件和数据,更不便于查找,更新,维护等。诸如这些情况,学校老师对学生的成绩管理带来了很大困难,严重影响了教育工的工作效率,随着科学技术的不断提高,计算机科学逐渐成熟,使用趋向成熟的计算机技术来代替传统的人工模式,来实现学生成绩的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用,作为计算机应用的一部分,使用计算机对学生成绩进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、易修改可靠性高、存储量大、数据必理快捷、保密性好、寿命长、成本低、便于打印等,这些优点能够极大地提高学生成绩管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件,用计算机制作的学生信息管理系统还可以通过功能强大的 Internet网及时的向学生传递该生最新成绩,有助于学校学生成绩的互动,为更好地把握学校的教育方针一定的促进作用!
-
- .系统背景和建设的意义
1.1.1 .系统背景
随着科学技术的不断提高,计算机科学逐渐成熟,其强大的功能已为人们深刻认识,它进入人类社会的各个领域并发挥着越来越重要的作用,作为计算机应用的一部分,学生信息管理系统必定是一个教育单位不可缺少的部分。一个功能齐全、简单易用的成绩管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为广大老师学生提供充足的成绩和快捷的查询手段。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化,正规化管理,与世界接轨的重要条件。
-
-
- .建设的意义
-
现阶段学校与官方教育机构在研制和应用各种学生成绩管理系统的体系和方式方法上,大多都用传统的工本成绩管理模式。在此体系的统筹策划和实际操纵中,若要进行诸项成绩管理工作。比如,组织一次学生成绩录入,成绩审核校对、定叫成绩的调入抽取、数据统计和实时查询等等系列过程、要有几个必需的“人工”操作程序步骤,即人工制表,人工成绩录入,人工校对人工调取、人工统计和人工查询等显然,随着学生科目成绩的不断增加、更新和修改及学生成绩管理要求的不断提高,日益强调“综合型服务”、“高效性办公”、“实时性信息处理”,学校教师、技术人员和成绩管理人员的工作量将会越来越大﹐并且诸项工作必将是十分繁琐、极易出错和误差率高的事情,传统的成绩管理方式已经不能适应学校现代科学管理体系的需要。调研表明,虽然不少院校己经成功运用了计算机领域技术来管理教务教学工作,但因相关管理人员的技能水平和技术要求均不高很大程度上工还是利用Microsoft系列office文档办公软件(Microsoft word 、Microsoft power point 、Microsoft Access及 Microsoft Excel等)来完成报告,这样低水平运作的办公效率和办事效率着实给实时成绩查询和成绩统计造成了诸多不便。
2.概要设计
-
- .需求分析
尽早地对软件项目的可行性做出细致而谨慎的评估﹐以避免在项目开发过程中浪费大量的人力﹑物力﹑财力。
2.2 .编写目的
采用学校现有的软硬件软件及科学的管理系统开发方案,建立学生成绩管理系统,实现学生成绩管理的计算机自动化。
系统应符合学校原有的成绩管理制度,并达到操作直观、方便、实用、安全等要求。
2.3.问题定义
问题定义阶段,现在我们应该明确问题定义阶段的主要任务:我们要建立一个学生成绩管理系统,用计算机对学生各科成绩进行日常管理,针对这些要求设计了学生成绩管理系统本系统主要用于学校学生成绩管理,总体任务是实现学生成绩关系的系统化、规范化和自动化,主要任务是用计算机对学生各科成绩进行日常管理,如查询、修改、增加、删除,针对这些要求设计了学生成绩管理系统。
2.4.可行性研究
这个阶段要解决的关键问题是“对上一阶段所确定的问题有无行得通的解决办法”。从而导出系统的逻辑模型,然后从系统逻辑模块出发探索若干种可供选择的系统实现方案,由于实际条件的制约,对可行性研究我们不再多说,但我们必须明确,现在我们所讨论的问题从各方而来说都行得通,在明确了这两个简单问题之后需求,我们的问题应该步人正题了。分析阶段是网站定义时期的是后一个阶段﹐这一阶段的中心任务是准确的回答“系统必须做什么?”这个问题,其结束的标准满足通过需求分析应该得出有数据流程图、ER图、数据字典等描绘的精确的系统逻辑模型。
3 .详细设计
3.1.E-R图
姓名 |
学号 |
班级 |
创建者 |
试卷标题 |
修改时间 |
试卷 |
学生 |
1 n
1 1
有 |
有 |
学生 |
参照 |
n 1
学生成绩 |
参考答案 |
1 1
试卷 |
卷面成绩 |
平时成绩 |
题型 |
正确答案序号 |
题目编号 |
试卷 |
3.2 .数据字典
试卷:试卷标题、创建者(或出题人)、修改时间
参考答案:试卷(外键)、题型(可选“选择题”、“判断题”)、题目编号、正确答案序号
学生:学号、姓名、班级
学生成绩:学生(外键)、试卷(外键)、卷面成绩、平时成绩
3.3 .系统功能需求
本系统主要用于学校学生成绩管理,总体任务是实现学生成绩关系的系统化、规范化和自动化,其主要任务是用计算机对学生各科成绩进行门常管理,如查询、修改、增加、删除,另外还有创建者管理模块的实现,针对这些要求设计了学生成绩管理系统。
本系统将功能列表中的功能整合,划分为四个主要功能模块:试卷模块、参考答案模块、学生模块、学生成绩模块,其中系统安全管理员町以使用系统中所有的模块,而学生只可以使用学生管理模块,成绩查询中的部分模块创建者(教师)可以查询四个模块。
4. 系统实现
4.1页面设计
4.1.1 .登录模块
登录界而的设计,大小适中的登录窗口,第一行是欢迎用户的账号,第二行是退出该网站,第三行是更改该用户密码,第四行是修改该用户资料,第五行为后台管理。 (如下图)
4.1.2 .修改密码
修改密码页面,安全起见,请输入你的旧密码。然后输入两次你的新密码以确保输入正确。
4.1.3 .修改资料
对个人信息的修改,电子邮件等
4.1.4 .后台管理
后台管理者主要对学生的增加,修改;学生成绩的增加,修改;学生试卷的增加修改。
4.1.5.学生信息
学生信息包括学生的学号、姓名、班级
4.1.6.学生成绩
学生成绩中可添加学生的各科成绩,包括卷面分、平时分
4.1.7.试卷
试卷中包括每题的答案得分情况
4.1.7.最近动作
最近增加的试卷,修改的试卷成绩等
4.1.8 所有文件
4.2.部分代码实现
4.2.1文件名:admin.py
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = UserChangeForm # 在后台管理中使用默认界面
model = CustomUser
list_display = ['username', 'email', ]
# 增加显示 email 字段
# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
# overrides get_fieldsets to use this attribute when creating a user.
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2')}
),
)
admin.site.register(CustomUser, CustomUserAdmin)
本段代码用户登录注册页面 包括用户名、邮件、密码、确认密码
4.2.2文件名:apps.py
class AccountsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'accounts'
本段代码为本系统账户名的设计
4.2.3 文件名:forms.py
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('email',)
class CustomUserChangeForm(UserChangeForm):
password = None # 不显示密码字段,参考 https://stackoverflow.com/a/53336870/790198
class Meta(UserChangeForm.Meta):
model = CustomUser
fields = ('email',)
exclude = ['password']
本段代码该注册页面的表格
4.2.4 文件名:models.py
class CustomUser(AbstractUser):
def __str__(self):
return self.username
# 默认可进入后台
is_staff = models.BooleanField(default=True)
# 普通用户只能使用“成绩管理”模块
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
if self.is_active and self.is_superuser:
return True
else:
return app_label == 'scores'
本段代码为用户名自身的成绩模块
4.2.5文件名:urls.py
urlpatterns = [
path('register/', RegisterView.as_view(), name='register'),
path('edit/', ProfileView.as_view(), name='profile-edit'),
]
(6)文件名:settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts',
'scores',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'config.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [str(BASE_DIR.joinpath('templates')),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'config.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
AUTH_USER_MODEL = 'accounts.CustomUser'
LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'home'
本文件为整个系统的配置,路径,语言,它所包含的整个Django的框架
4.2.6 文件名:score
admin.py:
class SuggestedAnswerInline(admin.TabularInline):
model = SuggestedAnswer
extra = 1
class ExamPaperAdmin(admin.ModelAdmin):
inlines = [SuggestedAnswerInline,]
def get_queryset(self, request):
if request.user.is_superuser:
queryset = ExamPaper.objects.all()
else:
try:
queryset = ExamPaper.objects.filter(creator=request.user.id)
except:
queryset = ExamPaper.objects.none()
return queryset
admin.site.register(ExamPaper, ExamPaperAdmin)
class StudentAdmin(admin.ModelAdmin):
list_display = ['student_number','student_name','student_class']
admin.site.register(Student, StudentAdmin)
class StudentScoresAdmin(admin.ModelAdmin):
def get_queryset(self, request):
if request.user.is_superuser:
queryset = StudentScores.objects.all()
else:
try:
queryset = StudentScores.objects.filter(creator=request.user.id)
except:
queryset = StudentScores.objects.none()
return queryset
list_display = ['student','paper','results','usual_results']
admin.site.register(StudentScores, StudentScoresAdmin)
普通用户仅能看到自己创建的试卷
class ExamPaper(models.Model):
title = models.CharField('试卷名称', max_length=128)
creator = models.ForeignKey(CustomUser, related_name='examPapers', verbose_name='出题人', on_delete=models.CASCADE)
mod_date = models.DateField('修改日期', default=date.today)
def __str__(self) -> str:
return self.title
class Meta:
verbose_name = '试卷'
verbose_name_plural = '试卷'
ordering = ('-mod_date',)
class SuggestedAnswer(models.Model):
TYPES = [
('单选', '单项选择题'),
('多选', '不定项选择题'),
('判断', '判断题'),
]
paper = models.ForeignKey(ExamPaper, related_name='answers', verbose_name='试卷', on_delete=models.CASCADE)
question_type = models.CharField('题型', choices=TYPES, max_length=5, default=TYPES[0][0])
question_num = models.IntegerField('题目编号', default=1, validators=[MinValueValidator(1), MaxValueValidator(100)])
answer = models.CharField('答案', max_length=10)
def __str__(self) -> str:
return '{} {}'.format(self.question_type, self.question_num)
class Meta:
verbose_name = '参考答案'
verbose_name_plural = '参考答案'
class Student(models.Model):
student_number = models.IntegerField('学号')
student_name = models.CharField('姓名',max_length=10)
student_class = models.CharField('班级',max_length=20)
def __str__(self) -> str:
return self.student_number
class Meta:
verbose_name = '学生'
verbose_name_plural = '学生'
class StudentScores(models.Model):
student = models.ForeignKey(Student,related_name='scores', verbose_name='学生', on_delete=models.CASCADE)
paper = models.ForeignKey(ExamPaper, related_name='scores', verbose_name='试卷', on_delete=models.CASCADE)
results= models.DecimalField('卷面成绩',max_digits=3, decimal_places=2)
usual_results = models.DecimalField('平时成绩',max_digits=3, decimal_places=2)
def __str__(self) -> str:
return '{} {}'.format(self.results, self.usual_results)
class Meta:
verbose_name = '学生成绩'
verbose_name_plural = '学生成绩'
本段代码包括学生的试卷,试卷中的题目编号,答案,每个学生的姓名班级学号,学生的卷面成绩和平时成绩
5. 总结
本系统采用Django框架,以vs为开发平台,实现了学生个人成绩增加、修改,学生个人姓名、班级、学号录入,学生个人成绩录入等基本功能。实现了学生成绩管理的规范化,减少了教学人员的工作量。本系统界面简洁,操作简单,稳定性高,存储量大等优点,能便于学生成绩管理和学生发展。
结合学生成绩管理系统,从技术、经济、组织方面,分析研究系统可行性;对用户提出的要求进行集中分析;将需求通过用例图、用例描述表现出来;用业务流程图描述系统中的业务流程并优化流程;设计系统实体类、数据库,理清系统实体、实体与实体直接的联系;系统分析、设计完成后,进行系统实现,将功能清晰地展现在系统界面中;最后测试系统,对系统中出现的错误进行修改,使系统更完善。
学生日常成绩管理系统中的一种,日常生活学习中被频繁使用。本系统界面直观,操作简单,用户进入本系统,注册,输入其用户名和密码,通过验证即可进入系统操作界面,通过点击、输入等操作即可完成对成绩的管理;系统功能健全,根据用户需求,优化业务流程,执行成绩的增、修等;本系统按照用户划分的功能模块,业务操作都封装在实体类中。
这次的学生成绩系统的设计过程中遇到很多次代码不完整的情况,在软件运行报错,我们都是一步一步根据报错提示满满完善自己的代码,并且在一部分代码想不出来的时候,我们会参考老师的报告视频,根据老师的思路和自己的一些想法慢慢的完善学生成绩管理系统。还有这次报告让我体会到了,用Python语言Django框架的简洁性和丰富的第三方数据库使得用户可以快速方便地构建项目并进行生产环境部署。
该学生成绩管理系统仍存在许多不足,系统功能相对较少,通过日后用户的需求增多本系统也会继续进行改善,以下方面的改进:
( 1 )加强后台管理页面的建设。本系统只是面向用户,对成绩的管理只靠人工在后台操作,费时又费力。加强后台管理系统的建设,各项操作由程序执行,方便、准确,又节省人工。
(2)各模块之间的联系比较混乱。加强各模块之间的联系,条理清楚,链
接明确。
成绩管理系统的未来就是丰富、完善数据算法库,应用到服务之中,保证使数据成为一种因人而异的、有针对性的主动服务。使用者不必亲自到数据源中去“找”数据,面是等待系统把所需信息“送”上门。
对所涉及的知识点、难点进行总结;或者遇到过什么问题,自己是如何解决的等等。