精华内容
下载资源
问答
  • 本科生毕业论文,基于JSP+JavaBean的学生信息管理系统论文
  • 学生信息管理系统论文

    千次阅读 2020-07-06 20:16:01
    学生信息管理系统论文 摘要 学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本文主要介绍了学生信息管理系统的开发,包括了项目开发目的、系统结构、实验代码...

    《学生信息管理系统》论文

    摘要

    学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。本文主要介绍了学生信息管理系统的开发,包括了项目开发目的、系统结构、实验代码、实验结果以及本人最后的总结和展望。

    1.引言

    为了方便学校教育者对学生信息的管理,极大地提高信息传递的速度以及更新的速度,面对庞大的学生信息量,需要有学生信息管理系统来提高学生管理工作的效率。并且,在项目中添加有修改、删除、查询、排序学生的姓名、学号以及各科成绩的功能。

    2.系统结构

    2.1系统结构图

    在这里插入图片描述

    2.2相关技术

    1.导入正则表达式模块、操作系统模块;
    2.把学生字典添加到列表中(学生字典包括学生学号、姓名、英语成绩、python成绩以及C语言成绩);
    3.使用分类、排序对各个学生的各科成绩进行比较;
    4.最后将列表保存到文件中供随时传递整理;
    5.每次功能实现后会询问时候继续,或退出到主界面中。

    3.实现代码

    import re  # 导入正则表达式模块
    import os  # 导入操作系统模块
    
    
    filename = "wan97h.txt"  # 定义保存学生信息的文件名
    

    主菜单界面代码如下所示:
    打印出菜单栏的信息

    def menu():
        # 输出菜单
        print('''
        ╔———————————————学生信息管理系统———————————————╗
        │                                             │
        │  =============== 功能菜单 =============      │
        │                                             │
        │   1 录入学生信息                             │
        │   2 查找学生信息                             │
        │   3 删除学生信息                             │
        │   4 修改学生信息                             │
        │   5 排序                                    │
        │   6 统计学生总人数                           │ 
        │   7 显示所有学生信息                         │
        │   0 退出系统                                │
        │  ========================================== │
        │  说明:通过输入数字选择菜单                   │
        ╚—————————————————————————————————————————————╝
        ''')
    
    

    Main函数代码如下所示:
    首先菜单建立在循环的条件中一直进行(while (True)),用数字代表功能选项,存放在列表中,用(if…elif),当用户输入相应的数字后,会进入相应的函数。

    def main():
        ctrl = True  # 标记是否退出系统
        while (ctrl):
            menu()  # 显示菜单
            option = input("请选择:")  # 选择菜单项
            option_str = re.sub("\D", "", option)  # 提取数字
            if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:
                option_int = int(option_str)
                if option_int == 0:  # 退出系统
                    print('您已退出学生成绩管理系统,多谢使用!')
                    ctrl = False
                elif option_int == 1:  # 录入学生成绩信息
                    insert()
                elif option_int == 2:  # 查找学生成绩信息
                    search()
                elif option_int == 3:  # 删除学生成绩信息
                    delete()
                elif option_int == 4:  # 修改学生成绩信息
                    modify()
                elif option_int == 5:  # 排序
                    sort()
                elif option_int == 6:  # 统计学生总数
                    total()
                elif option_int == 7:  # 显示所有学生信息
                    show()
    

    录入学生信息代码如下所示:
    整个功能在定义的insert函数中,定义保存学生信息的列表stdentlist,当用户输入id、name后,系统会检测。输入了三种成绩,保存到学生字典中,最后用stdentlist.append(),将学生字典添加到列表中,并在最后保存到文件。

    '''1 录入学生信息'''
    
    
    def insert():
        stdentList = []        # 保存学生信息的列表
        mark = True  # 是否继续添加
        while mark:
            id = input("请输入ID(如 171110301):")
            if not id:  # ID为空,跳出循环
                break
            name = input("请输入名字:")
            if not name:  # 名字为空,跳出循环
                break
            try:
                english = int(input("请输入英语成绩:"))
                python = int(input("请输入Python成绩:"))
                c = int(input("请输入C语言成绩:"))
            except:
                print("输入无效,必须为整数,请重新录入信息!")
                continue
            stdent = {"id": id, "name": name, "English": english, "Python": python, "C语言": c}  # 将输入的学生信息保存到字典
            stdentList.append(stdent)  # 将学生字典添加到列表中
            inputMark = input("是否继续添加?(y/n):")
            if inputMark == "y":  # 继续添加
                mark = True
            else:  # 不继续添加
                mark = False
        save(stdentList)  # 将学生信息保存到文件
        print("学生信息录入成功!!!")
    

    保存学生信息到文件中的代码如下所示:
    定义save函数操作将学生信息保存到文件中,open(filename,‘a’)以追加模式打开文件,如果文件不存在,就创建一个文件并打开(open(filename, ‘w’)), 最后students_txt.write(str(info) + “\n”)按行存储,添加换行符。并用.close()关闭文件。

    # 将学生信息保存到文件
    def save(student):
        try:
            students_txt = open(filename, "a")  # 以追加模式打开
        except Exception as e:
            students_txt = open(filename, "w")  # 文件不存在,创建文件并打开
        for info in student:
            students_txt.write(str(info) + "\n")  # 按行存储,添加换行符
        students_txt.close()  # 关闭文件
    

    查找学生信息代码如下所示:
    定义search函数操作查找学生成绩信息,这次定义列表student_query = []来保存查询结果的学生列表,首先判断文件是否存在(if os.path.exists(filename)),判断存在后进行下一步操作,将查询学生信息的结果赋值到mode,可通过不同的输入方式进入,将之前保存的列表读取出来(student = file.readlines()),并将字符串转换为字典(d = dict(eval(list))),将找到的学生信息保存到列表中student_query.append(d),显示出查询结果(show_student(student_query))。

    '''2 查找学生成绩信息'''
    
    
    def search():
        mark = True
        student_query = []  # 保存查询结果的学生列表
        while mark:
            id = ""
            name = ""
            if os.path.exists(filename):  # 判断文件是否存在
                mode = input("按ID查输入1;按姓名查输入2:")
                if mode == "1":
                    id = input("请输入学生ID:")
                elif mode == "2":
                    name = input("请输入学生姓名:")
                else:
                    print("您的输入有误,请重新输入!")
                    search()  # 重新查询
                with open(filename, 'r') as file:  # 打开文件
                    student = file.readlines()  # 读取全部内容
                    for list in student:
                        d = dict(eval(list))  # 字符串转字典
                        if id is not "":  # 判断是否按ID查
                            if d['id'] == id:
                                student_query.append(d)  # 将找到的学生信息保存到列表中
                        elif name is not "":  # 判断是否按姓名查
                            if d['name'] == name:
                                student_query.append(d)  # 将找到的学生信息保存到列表中
                    show_student(student_query)  # 显示查询结果
                    student_query.clear()  # 清空列表
                    inputMark = input("是否继续查询?(y/n):")
                    if inputMark == "y":
                        mark = True
                    else:
                        mark = False
            else:
                print("暂未保存数据信息...")
                return
    

    删除学生信息代码如下所示:
    定义delete函数操作删除学生成绩信息。首先会进入一个循环(while (mark))判断要删除的学生是否存在,若不存在会打印无学生信息并退出这个循环。打开文件(with open(filename, ‘r’) as rfile:)后读取全部内容(student_old = rfile.readlines()),这里定义一个空字典(d = {}),将旧的学生字典(student_old = []),转换到空字典中,然后原有的学生字典变为空。

    '''3 删除学生成绩信息'''
    
    
    def delete():
        mark = True  # 标记是否循环
        while mark:
            studentId = input("请输入要删除的学生ID:")
            if studentId is not "":  # 判断要删除的学生是否存在
                if os.path.exists(filename):  # 判断文件是否存在
                    with open(filename, 'r') as rfile:  # 打开文件
                        student_old = rfile.readlines()  # 读取全部内容
                else:
                    student_old = []
                ifdel = False  # 标记是否删除
                if student_old:  # 如果存在学生信息
                    with open(filename, 'w') as wfile:  # 以写方式打开文件
                        d = {}  # 定义空字典
                        for list in student_old:
                            d = dict(eval(list))  # 字符串转字典
                            if d['id'] != studentId:
                                wfile.write(str(d) + "\n")  # 将一条学生信息写入文件
                            else:
                                ifdel = True  # 标记已经删除
                        if ifdel:
                            print("ID为 %s 的学生信息已经被删除..." % studentId)
                        else:
                            print("没有找到ID为 %s 的学生信息..." % studentId)
                else:  # 不存在学生信息
                    print("无学生信息...")
                    break  # 退出循环
                show()  # 显示全部学生信息
                inputMark = input("是否继续删除?(y/n):")
                if inputMark == "y":
                    mark = True  # 继续删除
                else:
                    mark = False  # 退出删除学生信息功能
    

    修改学生信息代码如下所示:
    定义modify函数操作修改学生成绩信息。首先使用show()显示当前的列表,即全部学生的信息,通过相关的判断之后以写模式打开文件(with open(filename, “w”) as wfile:),这里通过原学生表(student_old),d = dict(eval(student))将字符串转换字典,然后d[‘’]中更改成用户输入的内容,完成学生信息修改。

    '''4 修改学生成绩信息'''
    
    
    def modify():
        show()  # 显示全部学生信息
        if os.path.exists(filename):  # 判断文件是否存在
            with open(filename, 'r') as rfile:  # 打开文件
                student_old = rfile.readlines()  # 读取全部内容
        else:
            return
        studentid = input("请输入要修改的学生ID:")
        with open(filename, "w") as wfile:  # 以写模式打开文件
            for student in student_old:
                d = dict(eval(student))  # 字符串转字典
                if d["id"] == studentid:  # 是否为要修改的学生
                    print("已成功找到该名学生,请根据如下修改他的信息!")
                    while True:  # 输入要修改的信息
                        try:
                            d["name"] = input("请输入姓名:")
                            d["English"] = int(input("请输入英语成绩:"))
                            d["Python"] = int(input("请输入Python成绩:"))
                            d["C语言"] = int(input("请输入C语言成绩:"))
                        except:
                            print("您的输入有误,请重新输入。")
                        else:
                            break  # 跳出循环
                    student = str(d)  # 将字典转换为字符串
                    wfile.write(student + "\n")   # 将修改的信息写入到文件
                    print("修改成功!")
                else:
                    wfile.write(student)  # 将未修改的信息写入到文件
        mark = input("是否继续修改其他学生信息?(y/n):")
        if mark == "y":
            modify()  # 重新执行修改操作
    

    排序学生成绩代码如下所示:
    定义sort函数操作排序。前面的代码大概相同,引入学生字典,转换到列表当中。定义ascORdesc为排序(升序或降序)。当用户输入‘1’时,标记变量为False表示升序;当用户输入‘2’时,标记变量为True表示降序。最后通过(student_new.sort())方法选择排序英语成绩、pyhton成绩、C语言成绩和总成绩。

    '''5 排序'''
    
    
    def sort():
        show()  # 显示全部学生信息
        if os.path.exists(filename):  # 判断文件是否存在
            with open(filename, 'r') as file:  # 打开文件
                student_old = file.readlines()  # 读取全部内容
                student_new = []
            for list in student_old:
                d = dict(eval(list))  # 字符串转字典
                student_new.append(d)  # 将转换后的字典添加到列表中
        else:
            return
        ascORdesc = input("请选择(1升序;2降序):")
        if ascORdesc == "1":  # 按升序排序
            ascORdescBool = False           # 标记变量,为False表示升序排序
        elif ascORdesc == "2":  # 按降序排序
            ascORdescBool = True          # 标记变量,为True表示降序排序
        else:
            print("您的输入有误,请重新输入!")
            sort()  
        mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):")
        if mode == "1":  # 按英语成绩排序
            student_new.sort(key=lambda x: x["English"], reverse=ascORdescBool)
        elif mode == "2":  # 按Python成绩排序
            student_new.sort(key=lambda x: x["Python"], reverse=ascORdescBool)
        elif mode == "3":  # 按C语言成绩排序
            student_new.sort(key=lambda x: x["C语言"], reverse=ascORdescBool)
        elif mode == "0":  # 按总成绩排序
            student_new.sort(key=lambda x: x["English"] + x["Python"] + x["C语言"], reverse=ascORdescBool)
        else:
            print("您的输入有误,请重新输入!")
            sort()
        show_student(student_new)  # 显示排序结果
    

    统计学生总数代码如下所示:
    定义total函数操作统计学生总数。这里用len(student_old))统计学生列表的长度。

    ''' 6 统计学生总数'''
    
    
    def total():
        if os.path.exists(filename):  # 判断文件是否存在
            with open(filename, 'r') as rfile:  # 打开文件
                student_old = rfile.readlines()  # 读取全部内容
                if student_old:
                    print("一共有 %d 名学生!" % len(student_old))
                else:
                    print("还没有录入学生信息!")
        else:
            print("暂未保存数据信息...")
    

    显示所有学生信息代码如下所示:
    定义show()函数操作显示所有学生信息。

    ''' 7 显示所有学生信息 '''
    
    
    def show():
        student_new = []
        if os.path.exists(filename):  # 判断文件是否存在
            with open(filename, 'r') as rfile:  # 打开文件
                student_old = rfile.readlines()  # 读取全部内容
            for list in student_old:
                student_new.append(eval(list))  # 将找到的学生信息保存到列表中
            if student_new:
                show_student(student_new)
        else:
            print("暂未保存数据信息...")
    

    显示在列表中的学生信息代码如下所示:
    定义show_student函数操作将保存在列表中的学生信息显示出来。这里先提前定义输出文件的格式,包括科目名字(format_title)还有成绩的格式(format_data)。最后str(info.get(""))方法输出数据。

    # 将保存在列表中的学生信息显示出来
    def show_student(studentList):
        if not studentList:
            print("  对不起,无数据信息! \n")
            return
        format_title = "{:^6}{:^15}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"
        print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩"))
        format_data = "{:^6}{:^9}\t{:^10}\t{:^16}\t{:^8}\t{:^15}"
        for info in studentList:
            print(format_data.format(info.get("id"), info.get("name"), str(info.get("English")), str(info.get("Python")),
                                     str(info.get("C语言")),
                                     str(info.get("English") + info.get("Python") + info.get("C语言")).center(12)))
    
    if __name__ == "__main__":
        main()
    

    4.实验结果

    录入学生信息功能展示如下所示:
    在这里插入图片描述
    信息输入错误时显示如下所示
    在这里插入图片描述
    查找学生信息功能展示如下所示:
    分别用学生ID查询和学生姓名查询
    在这里插入图片描述
    删除学生信息功能展示如下所示:
    在这里插入图片描述
    在这里插入图片描述
    修改学生信息功能展示如下所示:
    在这里插入图片描述
    排除功能展示如下所示:
    在这里插入图片描述
    统计学生总人数功能展示如下所示:
    在这里插入图片描述
    显示所有学生信息功能展示如下所示:
    在这里插入图片描述

    5.总结和展望

    5.1系统的总结

    学生信息管理系统的特点鲜明,通过把学生字典放在列表当中提取存储,实现信息管理,还提供了给学生成绩排序、修改的功能,大大提高了工作效率。
    即使说是利用了计算机管理学生信息系统,但这只是大型系统的雏形,开发人员少,开发系统的时间短,所以系统做得还不齐全,后面还会再补充更多的功能。而且,我在后面还能再添加登录的功能,这样更能做到信息的保密。也可以优化整个系统的界面,让功能与功能之间的转换更加流畅。总之,学生信息管理系统还有很大的成长空间。

    5.2我的展望

    在这次系统的开发中,由于我是第一次接触到python方面的知识,所以在开发方面的经验还存在不足,而且对学生管理的整个流程还不够熟悉。因此,这个系统还存在一些缺陷和不足,在需求分析时不能完全满足用户的需求。
    在以后,我会补充更多的python知识,用来完善这个学生信息管理系统。在开发设计系统的过程中,我遇到难点也不会轻易放弃,换一个项目重头开始,而是会上网搜素,这对于我以后工作有了很大的帮助。在工作中遇到卡顿的时候也可以换个方向去思考,正所谓条条马路通罗马。

    展开全文
  • vb学生信息管理系统(自己写的论文与原程序代码)毕业论文答辩,给广大后生使用
  • 基于ASP.NET的学生信息管理系统(源代码含数据库+毕业论文+答辩PPT)源代码+论文全套了
  • 【实战】javaweb学生信息管理系统

    万次阅读 多人点赞 2018-04-15 21:10:00
    javaweb学生信息管理系统总的来说整个项目通过Maven来管理jar包,实现了学生信息管理系统的登录,增删改查等基本操作,然后不喜写css样式,页面有点丑,但是代码中的逻辑基本正确。项目下载链接csdn下载链接github...

    javaweb学生信息管理系统

    总的来说整个项目通过Maven来管理jar包,实现了学生信息管理系统的登录,增删改查等基本操作,然后不喜写css样式,页面有点丑,但是代码中的逻辑基本正确。项目下载链接 csdn下载链接  github地址

    一、项目架构

     

     

    二、数据库的设计操作

    1.user表

     

    2.student表

     

     

    三、登录界面(动态生成验证码、提示账号or密码or验证码输入有误)

     

    四、登录的主界面

     

    五、查询界面(查询数据库表中的数据,并且右上角有登录的账号)

     

    六、增加界面

     

    七、修改学生界面(会填入修改学生的信息)

     

    八、删除界面

     

    九、退出登录(会返回登录界面)

     

    十、过滤器(如果没有登录,直接访问后台界面会被重定向到登录界面)

    展开全文
  • 基于python的学生信息管理系统

    千次阅读 多人点赞 2020-11-25 20:39:44
    学生管理系统主要包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数、显示学生信息,这几项功能。其中录入学生的信息包括学号、姓名、英语成绩、python成绩、数学成绩、总...

    最近在学python,用了几天跟着网上的视频学完基础知识之后,做了一个学生管理系统,写的比较普通,没太大亮点,希望可以给初学者一些参考经验,另外,如有不恰当的地方还请各位指正。

    学生管理系统主要包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数、显示学生信息,这几项功能。其中录入学生的信息包括学号、姓名、英语成绩、python成绩、数学成绩、总成绩;查询学生信息分为按学号和按姓名查找两种;删除学生信息是输入学号进行查找,查找到学生信息之后,对学生信息进行删除;修改学生信息是输入学号后,查询到学生信息之后,对学生信息进行修改;排序学生信息的排序方式可选择升序和降序,可选择按英语、python、数学成绩以及总成绩进行排序;统计学生总数 就是输出信息管理系统中有几个学生的信息。

    首先,运行结果部分截图如下图所示:

     

    下面开始介绍代码,我把主要的代码处都给出了详细注释,如若有不懂的地方,请在评论区留言。

    1、主界面函数代码部分,此函数主要就是使用print打印出主界面。

    def show_choose():
        print("==========================学生信息管理系统==========================")
        print()
        print("-----------------------------功能菜单------------------------------")
        print()
        print("                         1.录入学生信息")
        print("                         2.查找学生信息")
        print("                         3.删除学生信息")
        print("                         4.修改学生信息")
        print("                         5.排序学生信息")
        print("                         6.统计学生总数")
        print("                         7.显示学生信息")
        print("                         0.退出信息管理系统")
        print()
        print("------------------------------------------------------------------")

    2、录入学生信息函数代码部分,在这个函数中实现的功能是录入学生信息,包括学号、姓名、英语成绩、python成绩、数学成绩、总成绩等,并将其写入文件中,每一行为一个学生的信息存储。

    # 录入学生信息
    # 录入学生的信息包括学号、姓名、英语成绩、python成绩、数学成绩、总成绩
    def input_info():
        infile_info = open('infile.txt', 'a')  # 以追加的方式向文件中写入数据,如果文件不存在就创建一个文件
        flag = 'y'
        # 向文件中录入学生信息,每一个学生的信息单独占一行
        while flag == 'y' or flag == 'Y':
            stu_id = input("请输入学生学号(如2020001):")
            stu_name = input("请输入学生姓名:")
            stu_score_eng = input("请输入学生英语成绩:")
            stu_score_py = input("请输入学生Python成绩:")
            stu_score_math = input("请输入学生数学成绩:")
            stu_sum_score = int(stu_score_eng) + int(stu_score_py) + int(stu_score_math)
            stu_info = stu_id + '\t' + stu_name + '\t' + stu_score_eng + '\t' + stu_score_py + '\t' + \
                       stu_score_math + '\t' + str(stu_sum_score) + '\n'
            infile_info.write(stu_info)
            flag = input("是否继续添加学生信息?y/n")
        print("信息录入完毕!!!")
        infile_info.close()

    3、查询学生信息函数代码部分,此函数主要功能是查询时分为按学号和按姓名查询两种,若查无此人则输出提示信息。

    # 查询学生信息
    # 查询时分为按学号和按姓名查找两种
    def find_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0
            m = 0  # 定义m,n是为了用作判断文件中是否有此人信息的标记
            findfile_info = open('infile.txt', 'r')  # 以可读方式打开文件
            line_info = findfile_info.readlines()
            find_nid = input("按学号查找请输入1,按姓名查找请输入2:")  # 查询方式分为按学号和按姓名
            if find_nid == '1':
                find_id = input('请输入学生学号:')
                for line in line_info:
                    if find_id in line:
                        print(line)
                        n = n + 1
                if n == 0:
                    print("没有查询到学生信息,无数据显示!!!")
            if find_nid == '2':
                find_name = input('请输入学生姓名:')
                for line in line_info:
                    if find_name in line:
                        print(line)
                        m = m + 1
                if m == 0:
                    print("没有查询到学生信息,无数据显示!!!")
            findfile_info.close()
            flag = input("是否继续查询学生信息?y/n")

    4、删除学生信息函数代码部分,此函数主要功能是执行删除操作,输入学号进行查找,查找到学生信息之后,对学生信息进行删除。

    # 删除学生信息
    # 输入学号进行查找,查找到学生信息之后,对学生信息进行删除
    def del_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0  # 用以查无此人时的标记
            defile_info1 = open('infile.txt', 'r')  # 以可读方式打开文件
            line_info = defile_info1.readlines()  # 将文件的信息按行全部读取出来,此时line_info是一个列表,每一行是一个元素
            defile_info2 = open('infile.txt', 'w')  # 以可写方式打开文件,用来将删除后的信息写入文件
            del_id = input("请输入要删除的学生的学号:")
            for line in line_info:  # 如果要删除的学生学号在文件存储的信息中,就将后面的信息向前移动覆盖这条信息
                if del_id in line:
                    continue
                defile_info2.write(line)
                n = n + 1
            if n == len(line_info):
                print("无此学生信息,请核对后再操作!!!")
            else:
                print("学号为{0}的学生信息已被删除!!!".format(del_id))
            defile_info1.close()
            defile_info2.close()
            flag = input("是否继续删除学习信息?y/n")

    5、修改学生信息函数代码部分,此函数的主要功能是对学生信息进行修改,当输入学号后,查询到学生信息之后,对学生信息进行修改。

    def mod_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0  # 用以查无此人时的标记
            mod_id = input("请输入要修改的学生学号:")
            modfile_file1 = open('infile.txt', 'r')  # 以可读方式打开文件,读取到line_info中,每一行就是一个列表的元素
            line_info = modfile_file1.readlines()
            modfile_file2 = open('infile.txt', 'w')  # 用以写入修改后的数据
            for line in line_info:  # 遍历列表
                if mod_id in line:  # 如果修改的学生信息存在,就重新写入学生信息
                    print("已找到学生,请修改信息!")
                    mod_name = input("请输入姓名:")
                    mod_score_eng = input("请输入英语成绩:")
                    mod_score_py = input("请输入python成绩:")
                    mod_score_math = input("请输入数学成绩:")
                    mod_sum_score = int(mod_score_eng) + int(mod_score_py) + int(mod_score_math)
                    mod_stu_info = mod_id + '\t' + mod_name + '\t' + mod_score_eng + '\t' + mod_score_py + '\t' + \
                                   mod_score_math + '\t' + str(mod_sum_score) + '\n'
                    modfile_file2.write(mod_stu_info)
                    print("修改成功!!!")
                    continue
                modfile_file2.write(line)  # 由于w方式打开的文件重新后会覆盖原有数据,所以需要将原有数据写入
                n = n + 1
            if n == len(line_info):
                print("无此学生信息,请核对后再操作!!!")
            else:
                print("学号为{0}的学生信息已修改!!!".format(mod_id))
            modfile_file1.close()
            modfile_file2.close()
            flag = input("是否继续修改学习信息?y/n")

    6、排序学生信息函数部分,此函数功能是对学生信息进行排序,排序方式可选择升序和降序,排序条件可选择按英语、python、数学成绩以及总成绩进行排序。

    # 排序学生信息
    # 排序方式可选择升序和降序
    # 可选择按英语、python、数学成绩以及总成绩进行排序
    def sort_info():
        flag = 'y'
    
        # 此方法用来排序,返回列表的2,3,4,5的元素,也就是分别依据英语、python、数学、总成绩进行排序
        # 例如列表[['1','2','3'],['1','2','3'],['1','2','3']]
        # 则take_eng就是以每个列表的第三个元素为依据排序,也就是3,2,1
        def take_eng(elem):
            return int(elem[2])
    
        def take_py(elem):
            return int(elem[3])
    
        def take_math(elem):
            return int(elem[4])
    
        def take_sum(elem):
            return int(elem[5])
    
        # 此方法用来进行排序后的输出操作
        def output_sort(sort_list):
            for m in sort_list:
                for n in m:
                    print("%+10s" % n, end=' ')
                print()
    
        while flag == 'y' or flag == 'Y':
            sortfile_info = open('infile.txt', 'r')  # 可读方式打开文件,并读取信息line_info中
            line_info = sortfile_info.readlines()
            # 定义列表,用来将读取出来的字符串信息,转化为列表
            # 例如['2020001\t李一一\t75\t86\t89\t250\n', '2020002\t王大伟\t85\t96\t99\t280\n']
            # 转化为[['2020001', '李一一', '75', '86', '89', '250'], ['2020002', '王大伟', '85', '96', '99', '280']]
            lst = []
            for i in range(0, len(line_info)):
                lst.append('lst' + str(i))
            i = 0
            for line in line_info:  # 遍历列表,将信息转化为单独的列表,并去掉\t和\n,方便接下来的排序比较
                line = line.replace('\n', '')
                lst[i] = line.split('\t')
                i = i + 1
    
            sort_up_down = input("请选择(0升序,1降序):")
            print("1.按英语成绩排序,2.按python成绩排序")
            print("3.按数学成绩排序,4.按学生总成绩排序")
            sort_term = input("请选择:")
            if sort_up_down == '0':  # 升序
                if sort_term == '1':
                    lst.sort(key=take_eng, reverse=False)  # 以英语成绩升序排序
                if sort_term == '2':
                    lst.sort(key=take_py, reverse=False)
                if sort_term == '3':
                    lst.sort(key=take_math, reverse=False)
                if sort_term == '4':
                    lst.sort(key=take_sum, reverse=False)
                output_sort(lst)
            if sort_up_down == '1':  # 降序
                if sort_term == '1':
                    lst.sort(key=take_eng, reverse=True)  # 以英语成绩降序排序
                if sort_term == '2':
                    lst.sort(key=take_py, reverse=True)
                if sort_term == '3':
                    lst.sort(key=take_math, reverse=True)
                if sort_term == '4':
                    lst.sort(key=take_sum, reverse=True)
                output_sort(lst)
            flag = input("是否继续排序信息?y/n")

    7、统计学生总数函数代码部分,此函数主要是输出信息管理系统中有几个学生的信息。

    # 统计学生总数
    # 输出信息管理系统中有几个学生的信息
    def sum_info():
        sumfile_info = open('infile.txt', 'r')
        line_info = sumfile_info.readlines()
        sum_stu = len(line_info)  # 写出列表中的元素个数
        print("一共有{0}名学生。".format(sum_stu))
        sumfile_info.close()

    8、显示学生信息函数代码部分,此函数是将文件存储的学生信息全部显示出来。

    # 显示学生信息
    def show_info():
        print("学号", end='\t\t')
        print("姓名", end='\t\t')
        print("英语成绩", end='\t\t')
        print("Python成绩", end='\t\t')
        print("数学成绩", end='\t\t')
        print("总成绩", end='\t\t')
        print('\n')
        showfile_info = open('infile.txt', 'r')
        line_info = showfile_info.readlines()
        for line in line_info:  # 遍历列表,输出各个元素
            print(line)
        showfile_info.close()

    以上就是每个功能函数的代码,完成这些函数的编写之后,需要进行调用才能够执行,所以主函数代码如下。

    def main():
        show_choose()
        choose_menu = input("请选择:")
        while choose_menu != '0':
            if choose_menu == '1':
                input_info()
            if choose_menu == '2':
                find_info()
            if choose_menu == '3':
                del_info()
            if choose_menu == '4':
                mod_info()
            if choose_menu == '5':
                sort_info()
            if choose_menu == '6':
                sum_info()
            if choose_menu == '7':
                show_info()
            choose_menu = input("请选择:")
    
        print("欢迎您再次使用!!!")

    最后,需要在程序末尾执行main(),完成后运行函数,就可以正常执行了。

    下面是全部的代码,一共250行,不算简洁,也不是太冗余,复制后直接可用,如有瑕疵和bug请指正,谢谢。

    # 开发者:杨健林
    # 开发日期:2020/11/24 19:02
    # 学生管理系统,包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数、显示学生信息。
    
    # 录入学生信息
    # 录入学生的信息包括学号、姓名、英语成绩、python成绩、数学成绩、总成绩
    def input_info():
        infile_info = open('infile.txt', 'a')  # 以追加的方式向文件中写入数据,如果文件不存在就创建一个文件
        flag = 'y'
        # 向文件中录入学生信息,每一个学生的信息单独占一行
        while flag == 'y' or flag == 'Y':
            stu_id = input("请输入学生学号(如2020001):")
            stu_name = input("请输入学生姓名:")
            stu_score_eng = input("请输入学生英语成绩:")
            stu_score_py = input("请输入学生Python成绩:")
            stu_score_math = input("请输入学生数学成绩:")
            stu_sum_score = int(stu_score_eng) + int(stu_score_py) + int(stu_score_math)
            stu_info = stu_id + '\t' + stu_name + '\t' + stu_score_eng + '\t' + stu_score_py + '\t' + \
                       stu_score_math + '\t' + str(stu_sum_score) + '\n'
            infile_info.write(stu_info)
            flag = input("是否继续添加学生信息?y/n")
        print("信息录入完毕!!!")
        infile_info.close()
    
    
    # 查询学生信息
    # 查询时分为按学号和按姓名查找两种
    def find_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0
            m = 0  # 定义m,n是为了用作判断文件中是否有此人信息的标记
            findfile_info = open('infile.txt', 'r')  # 以可读方式打开文件
            line_info = findfile_info.readlines()
            find_nid = input("按学号查找请输入1,按姓名查找请输入2:")  # 查询方式分为按学号和按姓名
            if find_nid == '1':
                find_id = input('请输入学生学号:')
                for line in line_info:
                    if find_id in line:
                        print(line)
                        n = n + 1
                if n == 0:
                    print("没有查询到学生信息,无数据显示!!!")
            if find_nid == '2':
                find_name = input('请输入学生姓名:')
                for line in line_info:
                    if find_name in line:
                        print(line)
                        m = m + 1
                if m == 0:
                    print("没有查询到学生信息,无数据显示!!!")
            findfile_info.close()
            flag = input("是否继续查询学生信息?y/n")
    
    
    # 删除学生信息
    # 输入学号进行查找,查找到学生信息之后,对学生信息进行删除
    def del_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0  # 用以查无此人时的标记
            defile_info1 = open('infile.txt', 'r')  # 以可读方式打开文件
            line_info = defile_info1.readlines()  # 将文件的信息按行全部读取出来,此时line_info是一个列表,每一行是一个元素
            defile_info2 = open('infile.txt', 'w')  # 以可写方式打开文件,用来将删除后的信息写入文件
            del_id = input("请输入要删除的学生的学号:")
            for line in line_info:  # 如果要删除的学生学号在文件存储的信息中,就将后面的信息向前移动覆盖这条信息
                if del_id in line:
                    continue
                defile_info2.write(line)
                n = n + 1
            if n == len(line_info):
                print("无此学生信息,请核对后再操作!!!")
            else:
                print("学号为{0}的学生信息已被删除!!!".format(del_id))
            defile_info1.close()
            defile_info2.close()
            flag = input("是否继续删除学习信息?y/n")
    
    
    # 修改学生信息
    # 输入学号后,查询到学生信息之后,对学生信息进行修改
    def mod_info():
        flag = 'y'
        while flag == 'y' or flag == 'Y':
            n = 0  # 用以查无此人时的标记
            mod_id = input("请输入要修改的学生学号:")
            modfile_file1 = open('infile.txt', 'r')  # 以可读方式打开文件,读取到line_info中,每一行就是一个列表的元素
            line_info = modfile_file1.readlines()
            modfile_file2 = open('infile.txt', 'w')  # 用以写入修改后的数据
            for line in line_info:  # 遍历列表
                if mod_id in line:  # 如果修改的学生信息存在,就重新写入学生信息
                    print("已找到学生,请修改信息!")
                    mod_name = input("请输入姓名:")
                    mod_score_eng = input("请输入英语成绩:")
                    mod_score_py = input("请输入python成绩:")
                    mod_score_math = input("请输入数学成绩:")
                    mod_sum_score = int(mod_score_eng) + int(mod_score_py) + int(mod_score_math)
                    mod_stu_info = mod_id + '\t' + mod_name + '\t' + mod_score_eng + '\t' + mod_score_py + '\t' + \
                                   mod_score_math + '\t' + str(mod_sum_score) + '\n'
                    modfile_file2.write(mod_stu_info)
                    print("修改成功!!!")
                    continue
                modfile_file2.write(line)  # 由于w方式打开的文件重新后会覆盖原有数据,所以需要将原有数据写入
                n = n + 1
            if n == len(line_info):
                print("无此学生信息,请核对后再操作!!!")
            else:
                print("学号为{0}的学生信息已修改!!!".format(mod_id))
            modfile_file1.close()
            modfile_file2.close()
            flag = input("是否继续修改学习信息?y/n")
    
    
    # 排序学生信息
    # 排序方式可选择升序和降序
    # 可选择按英语、python、数学成绩以及总成绩进行排序
    def sort_info():
        flag = 'y'
    
        # 此方法用来排序,返回列表的2,3,4,5的元素,也就是分别依据英语、python、数学、总成绩进行排序
        # 例如列表[['1','2','3'],['1','2','3'],['1','2','3']]
        # 则take_eng就是以每个列表的第三个元素为依据排序,也就是3,2,1
        def take_eng(elem):
            return int(elem[2])
    
        def take_py(elem):
            return int(elem[3])
    
        def take_math(elem):
            return int(elem[4])
    
        def take_sum(elem):
            return int(elem[5])
    
        # 此方法用来进行排序后的输出操作
        def output_sort(sort_list):
            for m in sort_list:
                for n in m:
                    print("%+10s" % n, end=' ')
                print()
    
        while flag == 'y' or flag == 'Y':
            sortfile_info = open('infile.txt', 'r')  # 可读方式打开文件,并读取信息line_info中
            line_info = sortfile_info.readlines()
            # 定义列表,用来将读取出来的字符串信息,转化为列表
            # 例如['2020001\t李一一\t75\t86\t89\t250\n', '2020002\t王大伟\t85\t96\t99\t280\n']
            # 转化为[['2020001', '李一一', '75', '86', '89', '250'], ['2020002', '王大伟', '85', '96', '99', '280']]
            lst = []
            for i in range(0, len(line_info)):
                lst.append('lst' + str(i))
            i = 0
            for line in line_info:  # 遍历列表,将信息转化为单独的列表,并去掉\t和\n,方便接下来的排序比较
                line = line.replace('\n', '')
                lst[i] = line.split('\t')
                i = i + 1
    
            sort_up_down = input("请选择(0升序,1降序):")
            print("1.按英语成绩排序,2.按python成绩排序")
            print("3.按数学成绩排序,4.按学生总成绩排序")
            sort_term = input("请选择:")
            if sort_up_down == '0':  # 升序
                if sort_term == '1':
                    lst.sort(key=take_eng, reverse=False)  # 以英语成绩升序排序
                if sort_term == '2':
                    lst.sort(key=take_py, reverse=False)
                if sort_term == '3':
                    lst.sort(key=take_math, reverse=False)
                if sort_term == '4':
                    lst.sort(key=take_sum, reverse=False)
                output_sort(lst)
            if sort_up_down == '1':  # 降序
                if sort_term == '1':
                    lst.sort(key=take_eng, reverse=True)  # 以英语成绩降序排序
                if sort_term == '2':
                    lst.sort(key=take_py, reverse=True)
                if sort_term == '3':
                    lst.sort(key=take_math, reverse=True)
                if sort_term == '4':
                    lst.sort(key=take_sum, reverse=True)
                output_sort(lst)
            flag = input("是否继续排序信息?y/n")
    
    
    # 统计学生总数
    # 输出信息管理系统中有几个学生的信息
    def sum_info():
        sumfile_info = open('infile.txt', 'r')
        line_info = sumfile_info.readlines()
        sum_stu = len(line_info)  # 写出列表中的元素个数
        print("一共有{0}名学生。".format(sum_stu))
        sumfile_info.close()
    
    
    # 显示学生信息
    def show_info():
        print("学号", end='\t\t')
        print("姓名", end='\t\t')
        print("英语成绩", end='\t\t')
        print("Python成绩", end='\t\t')
        print("数学成绩", end='\t\t')
        print("总成绩", end='\t\t')
        print('\n')
        showfile_info = open('infile.txt', 'r')
        line_info = showfile_info.readlines()
        for line in line_info:  # 遍历列表,输出各个元素
            print(line)
        showfile_info.close()
    
    
    def show_choose():
        print("==========================学生信息管理系统==========================")
        print()
        print("-----------------------------功能菜单------------------------------")
        print()
        print("                         1.录入学生信息")
        print("                         2.查找学生信息")
        print("                         3.删除学生信息")
        print("                         4.修改学生信息")
        print("                         5.排序学生信息")
        print("                         6.统计学生总数")
        print("                         7.显示学生信息")
        print("                         0.退出信息管理系统")
        print()
        print("------------------------------------------------------------------")
    
    
    def main():
        show_choose()
        choose_menu = input("请选择:")
        while choose_menu != '0':
            if choose_menu == '1':
                input_info()
            if choose_menu == '2':
                find_info()
            if choose_menu == '3':
                del_info()
            if choose_menu == '4':
                mod_info()
            if choose_menu == '5':
                sort_info()
            if choose_menu == '6':
                sum_info()
            if choose_menu == '7':
                show_info()
            choose_menu = input("请选择:")
    
        print("欢迎您再次使用!!!")
    
    
    main()
    

     

     

     

     

    展开全文
  • 学生成绩信息管理系统(源码+论文+文献综述+外文翻译),全面、经典、完美。
  • 学生信息管理系统--毕业论文

    万次阅读 多人点赞 2009-12-10 19:55:00
    计算机的应用已在社会的各个领域深入开来,无论是在商业,工业还是政府部门都早已普及,如今就连教育行业也把计算机应用到各个方面的工作中,本次毕业设计就是把计算机应用到学校学生信息管理中的范例。本设计采用...

      

    计算机飞速发展的今天,计算机的应用已在社会的各个领域深入开来,无论是在商业,工业还是政府部门都早已普及,如今就连教育行业也把计算机应用到各个方面的工作中,本次毕业设计就是把计算机应用到学校学生信息管理中的范例。

    本设计采用Microsoft SQL Server 2005作为数据库,利用C#作为开发工具,针对教育系统中学生信息的数字化管理而开发。本系统可使教职员工减轻工作压力,比较系统的对教务、教学上的各项服务和信息进行管理,同时,可以减轻劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。本系统有较好的兼容性。本系统力求系统全面性、通用性,它可适用于不同的教育机构。

    关键词

    学生信息管理     三层结构   角色   Web服务


      

    第一章 学生信息管理系统概述... 1

    1.1 系统的主要功能... 1

    1.2 设计方法概述... 1

    1.3 学生信息管理系统的现状分析... 2

    1.3.1 学生信息管理系统应用的现状... 2

    1.3.2 管理系统开发的目的... 2

    第二章 系统开发平台... 3

    2.1 数据库系统的选择... 3

    2.2 系统开发工具的选择... 3

    第三章 系统框架设计... 4

    3.1 系统开发梗概... 4

    3.2 系统开发的步骤... 4

    3.3 系统的逻辑体系结构... 4

    第四章 系统概要和数据库设计... 6

    4.1 系统功能模块图... 6

    4.2 功能的说明... 6

    5.1 数据库及表的设计... 7

    5.2 数据库中的数据库关系图... 8

    5.3 数据库中存储过程的设计... 9

    5.3.1 存储过程的含义... 9

    5.3.2 存储过程的应用... 9

    第五章 系统详细设计及实现... 11

    5.4 系统模块设计... 11

    5.4.1 主窗口的设计... 11

    5.4.2 查询... 11

    5.4.3 密码修改... 12

    5.4.4选修课选课... 13

    第六章 开发系统遇到的问题和获得的经验... 14

    6.1 系统开发过程中遇到的问题... 14

    6.1.1 数据库连接... 14

    6.1.2 数据库中的表设计... 14

    6.1.3用户权限问题... 14

    6.2 从系统开发中获得的经验... 14

    第七章 系统评价... 15

    7.1 系统的特点... 15

    7.2 系统的缺点... 15

    7.3 系统总结... 15

    7.4 将来可能提出的要求... 16

      ... 17

    参考文献... 17


        

    学生信息管理系统(Student Information Management System,以下简称SIMS,是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System)。它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率。随着科学技术的不断提高,计算机科学日渐成熟, 使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。用计算机制作的学生信息管理系统还可以通过功能强大的Internet网及时的向学生的家长传递该生在校的最新成绩,有助于学校与家长的信息互动,为更好地把握学校的教育方针起到了一定的促进作用!因此,开发这样一套管理软件成为很有必要的事情。


    第一章 学生信息管理系统概述

    1.1 系统的主要功能

    学生信息管理系统具有以下功能:

    学籍管理:对学生的信息档案进行管理,主要包括学生档案信息的修改、删除、添加、档案查询及档案输出等,其中档案查询可以根据学号、姓名查询需要的信息;档案输出可以输出学生档案、成绩、课程表等。学生档案记录主要包括:学号、姓名、出生日期、年龄、性别、政治面貌、入学时间、个人简介、照片、家庭住址、邮编、所在系别以及所学专业等字段。

    成绩管理:对学生的成绩进行管理,主要就是成绩查询,成绩查询可以按学号、姓名进行查询。成绩记录主要包括:学期、学号、姓名、课程号以及成绩字段等。

    课程管理:学生可以通过该模块进行课程表查看、打印课程表。

    选修课选择:对学生报选修课进行管理,学生可以对自己喜爱的课程进行选择。

    系统维护:教师对学生的密码进行管理,主要包括增加新用户和用户修改。其中用户修改可以实现对学生的密码修改和学生用户名的删去。

    系统辅助工具:通过该模块用户可以打开一些辅助工具,如记事本和记事本。

    退出系统:离开本学生信息管理系统。

    1.2 设计方法概

    本学生信息管理系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个表单、类、报表以及一个主菜单组成,有项目管理器统一管理全部程序的编写和调试。用户可以通过主菜单或总表单调用系统的各项功能。

    1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。

    2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。

    3、类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。

    4、面向对象设计的核心是类的设计。

    5、设计的学生信息管理系统也是建立在一系列类基础之上的,其编程的思想是:先根据一定的需要创建一系列的子类或直接调用PB提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的封装性,这样就可利用派生出的对象像搭积木一样来设计自己的程序。打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造好的模具生产出所需的零件,所有这些做完后,剩下的就只是如何把这些零件组装起来,这样一台机器就很容易制造出来了。实际编程也是如此。每个表单都是由一定数量的对象按某一种方式组合在一起的,程序编制的核心是类的设计。

    1.3 学生信息管理系统的现状分析

    1.3.1 学生信息管理系统应用的现状

    随着我国国民经济建设的蓬勃发展和社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。而各大高校对学生信息管理也面临着同样严峻的形势。学生信息管理作为高校内部的一种学生基本档案管理也是如此,由于高校的在校人数较多,每一位学生的具体实际情况也不尽相同,如果没有一个完整的管理系统去完成,将使工作变得复杂冗烦,并且对于工作的效率也将使一个致命的打击,使无论如何也无法适应现代社需要的。

    1.3.2 管理系统开发的目的

    为了适应现代化社会的发展,管理系统就应运而生了,目的很简单就使为使现代管理中排除复杂和不准确性,并且适应现代发展。系统开发后,可以对工资进行管理、查询、打印等一系列的功能的实现。便于工作效率的提高。


    第二章 系统开发平台

    2.1 数据库系统的选择

    数据库选择的原则很简单,主要目的就是为了系统做服务的,当然最简单的任务就是简单易于操作,且要具有可以随时修改的功能,最重要的一点就是数据库要对数据的操作要准确,还要尽可能的精确。这些都是数据库选择的最基本要求。因此本系统选择了SQL作为系统的数据库。SQL数据库是在大学期间学习的最为透彻的数据库之一,并且也符合上述的条件,因此,工资管理系统选择此数据库作为系统数据库。

    2.2 系统开发工具的选择

    纵观现今市场上的一大批的开发工具,可以说另人眼花缭乱,很难做出取舍,有些易于操作,但不是很适合工资管理系统,有些适合,但是开发起来较为复杂和困难。因此开发工具的选择也是同样的重要,要选择便于上手操作容易的开发工具。C#虽然现在不多使用,但是,对于工资管理系统来说,不可以说不是个很好的开发工具。因为它具备一系列的功能,简单、易操作,并且不失大方。作为工资管理系统毕竟不是供娱乐的软件,因此不可以做得太过于花哨,更应该接近于朴实大方。所以,工资管理系统利用C#开发是再好不过的工具了。


    第三章 系统框架设计

    3.1 系统开发梗概

    学生信息管理系统顾名思义,就是对学生信息的管理,其实所要实现的功能就是对学生信息进行管理,要实现的功能就是对学生有关信息的录入、查询、修改,数据的备份。每个过程都是需要精密的设计。

    3.2 系统开发的步骤

    1)系统的构思。基于以上的原因,所以对系统进行构思,目的就是利于社会发展,符合工作的需要。

    2)系统的设计。鉴于系统所要实现的功能,产生了学生信息的录入、查询、修改,数据备份,以及相关信息的打印。

    3)数据库的建立。根据系统需要,需要建立学生信息表、成绩信息表、课程信息表、管理员密码表、选修课信息表等。

    4)各个窗体的建立。窗体又很多,登陆窗口,主窗口,各个查询、修改窗口,数据初始化、备份窗口。

    5)系统的测试。当把系统完成后,要对系统进行测试,测试是否可用和是否存在错误。

    6)系统的维护。如果测试结果没有出现问题,那么就是系统产生后的维护问题了。系统维护是很重要的方面,当系统出现问题时就要利用系统维护来维护数据了。这个包括数据初始化和数据备份。

    系统开发步骤从大体上可以分为这些,以上进行的是对开发步骤的简要分析,开发过程中肯定要比这个所说的要细,因为根据不同的需要要进行一些改变,如果不改变是不适应实际应用中的要求的,每个单位大小能力都不同,自然需要根据自己的能力来进行不同的开发。

    3.3 系统的逻辑体系结构

    本系统采用当前流行的B/S设计模式,基于Windows.NET平台构建Web应用程序,把系统划分为数据层、业务逻辑层和表示层。逻辑体系结构如(图31)所示:

    表示层

    业务逻辑组件层

    数据层

    SQL Server

    31

    3.4 三层结构

    (1) 表示层:即用户接口层,是由ASP.NET技术的Web窗体和Web用户控件组合起来构成的。表示层运行在客户端浏览器上,产生用户视图。在业务逻辑层发生变化时通过改变表示层的组合以及做一些简单的调整就可以很好地适应新的业务逻辑层。

    (2) 业务逻辑层:这一层是从整个系统功能设计中抽取大量具有共性的模块,把它们统一设计成为系统公共的可重用的组件。由COM+组件服务管理器统一配置管理组件。

    (3) 数据层:用来管理和存储数据,实现数据访问功能,设计数据库,定义数据表结构、表的索引、数据表之间的关联,定义数据库中的视图以及操作数据的存储过程,设计数据库的安全等等。该层由数据库管理系统如SQL Server来管理和控制。


    第四章 系统概要和数据库设计

    4.1 系统功能模块图

    系统首页

    系统维护

     

    退出系统

    密码验证

    主表单

    退出系统

    学籍管理

    成绩管理

    选修课选择择

    系统辅助工具

    文本框: 增加新用户文本框: 学生信息增加文本框: 学生信息删去文本框: 学生信息修改文本框: 用户修改文本框: 按学号管理文本框: 成绩打印文本框: 成绩查询文本框: 成绩录入文本框: 按姓名管理文本框: 计算器文本框: 记事本

    41

    以上( 41)为功能模块图,各个部分的功能在功能模块介绍中将介绍.

    4.2 功能的说明

    登陆窗口的功能是让使用者选择进入系统,学生和教师进入的系统是不同的。学生登陆系统只能进行学号、姓名查询,选课;教师登陆可以对学生的有关信息进行删去、修改、录入。

    教师进入系统后可以看到菜单上显示录入、查询、修改、打印、数据初始化、数据备份、退出。录入菜单是对员工信息、员工工资以及员工密码的录入。查询,包括对员工信息和员工工资的查询。修改中包括对员工信息和员工工资的修改,还有对管理员和员工密码的修改,以及对工龄的修改。打印菜单的功能是打印工资,其中可以对打印进行设置。数据初始化是针对新的使用者,可以初始化系统中的演示数据。数据备份,对系统中已经存在的数据进行备份,以防不测事件发生。数据初始化和数据备份是系统的维护方面的功能。

    员工进入系统后,输入自己的编号和密码后进入查询系统,毕竟员工不是管理员,只可针对自己的信息进行查询、修改,查询可以查询两个方面,一个是查询信息,一个是查询工资,另一个功能就是可以对自己的密码进行修改,这个功能就类似于现在很多服务窗口行。

    5.1 数据库及表的设计

    数据库是所有系统设计中的灵魂部分,没有数据库的系统是毫无价值的,是个残废的系统,所以,数据库是个很重要的部分。下面就详细介绍数据库的设计。

    首先看学生信息表(图 51

    51

    可以看出,学生信息表里其他都可以为空,但是学生序列(考号)不可为空,因为学生序列是主键,主键不可以为空。

    其次看用户密码表(图 52

    52

    在用户密码表中用户编号、用户名、密码、用户角色都不可以为空,因为这两个在数据库中都是起到关键的作用,所以,不可以为空。

    第三,学生成绩信息表(图53

    53

    从此表中可以看出,虽然很多信息不是主键,但是,同样是不可以为空的,因为为空之后,学生信息成绩将不准确,因此同样也不可以为空。

    第四,学生课程表信息表(图54

    54

    表中的“xingqi”即星期,“one”即1-2节课,“two”即3-4节课,“three”即5-6节课,“four”即7-8节课,其中除星期外都可以为空。

    第五、选修课信息表(图55

    55

    系统中所以到的其他的表都与以上的表设计类似,这里就不作详细的介绍了。

    5.2 数据库中的数据库关系图

    数据库关系图是数据库中对象的图形表示。数据库关系图可以是数据库结构的整体或部分图片;它包括表的对象、表所包含的列和它们之间的关系。

    创建一个SQL表关系图会得到许多好处。 因为数据库关系图的最重要的好处是保护数据的完整性,这样,数据库中的信息数据就不可以随便被删去了。 除了数据库,还有另一个巨大的好处:SQL表关系图使用许多对象/关系映射器,创建一个结构化的对象模型。通过数据库关系图,我们能更清楚地掌握数据库中各个表之间的关系和约束。本系统的数据库关系图如下(图56)所示。

    56

    5.3 数据库中存储过程的设计

    5.3.1 存储过程的含义

    当开发一个应用程序时,为了易于修改和扩充,经常会将负责不同功能的语句集中起来而且按照用途分别独立放置,以便能够反复调用,而这些独立放置且拥有不同功能的语句,即是“过程”(Procedure)。SQL Server 2005的存储过程包含一些Transact-SQL语句并以特定的名称存储在数据库中(存储过程也是一种数据库对象)。可以在数据库中声明对象、有条件的执行以及其他各项强大的程序设计功能。

    5.3.2 存储过程的应用

    本系统应用一些存储过程来实现对学生信息的增加、删去、修改。如对学生学号的增加、删去、修改,见(图57)、(图58)和(图59)。

    57

    58

    59

     


    第五章 系统详细设计及实现

    5.4 系统模块设计

    5.4.1 主窗口的设计

    主窗口也就是工资管理系统登陆进入的敞口,其上附着主菜单,想要实现功能通过对菜单的操作实现,也就相当于所有功能的汇总。

    在主窗口中还体现着整个系统的功能和架构。如下(图5-10)所示:

    510

    5.4.2 查询

    查询菜单中包括学生学号查询、学生姓名查询和查询成绩和课程表图。现只例举学号查询,见(图5-11)。

    5-11

    在(图5-11)中可以查询莫一个学生的信息,莫个班级的学生信息,甚至整个系别的学生信息,可以查询到的基本信息有考号、班级、学号、姓名、性别。若要查看其他的信息,则可以通过单击“查看基本信息”,弹出(图5-12)所示的窗体。

    5-12

    此窗体有权限设置,老师可以对学生的基本信息进行增加、删去、修改,而学生不可以对信息进行修改。若是以学生身份登陆则窗体中的菜单是灰色不可用。其中“导入excell”菜单按钮可以将“datagridview控件”中数据信息导入excell表格中,导出后如(图5-13)所示。

    5-13

    5.4.3 密码修改

    此系统的教师登陆身份就相当于其他系统中的管理员身份,他可以对其他用户的用户名和密码进行修改,他也可以增加用户和删去用户。学生可以通过注册获得权限登录系统,但学生不可以对已经注册过的信息自己进行修改,只能在老师的指导下进行修改。如(图5-14)所示。

    5-14

    5.4.4选修课选课

    此功能是学生的特权。只有学生可以选课,在选课过程中,每一位学生最多只能选修四门课程,若超出了这个规定则会跳出错误提示消息框,要求你重新选课。若你选课已经完毕,可以查看到你所选课的课目。见(图5-15

    5-15


    第六章 开发系统遇到的问题和获得的经验

    6.1 系统开发过程中遇到的问题

    6.1.1 数据库连接

    打开SQL Server 2005是,连接到服务器的一些参数为:服务器类型为“数据库引擎”,服务器名称“.”,身份验证“windows 身份验证”,点击链接后,进入microsoft SQL Server Management Studio,在安全性/登陆名,打开sa的属性,修改SQL Server身份验证的密码,此密码设置和C#中与数据库连接的属性一致。关闭microsoft SQL Server Management Studio,重新打开,选择“SQL Server身份验证”的身份验证,登录名为“sa”,密码为刚才设置的密码,点击链接即可。

    6.1.2 数据库中的表设计

    一开始,我在设计数据库中表时,设计了两张不同的表:xuehaoname,在表示层分别对学生的学号和姓名进行查询并进行修改。但是后来,我发现这样的设计并不合理,因为,若要增加一名学生信息,则要在学号查询窗体和姓名查询窗体里都要增加才能实现对此学生信息的增加成功。这样就大大增加了对学生信息的管理难度,且这样的操作完全是徒劳。后来,我把这两张表整合到一张xuehao表里了,即在表xuehao里添加所需的字段,姓名查询窗体中的datagridview控件数据源也选择表xuehao。这样,在其中一个窗体中对学生信息进行修改后,在另一个窗体中进行查看都是一致的,确保系统的严密性性和一致性。

    6.1.3用户权限问题

    此系统用户登陆一共有两个角色:学生和教师,即是一般用户和管理员用户。若以学生身份登陆则只可以进行查询操作,只有教师身份才可以对学生的信息进行增加、删去、修改操作。但是,我在获得用户登录权限是遇到了困难,输入过代码后,系统在运行过程中并不能区别学生和教师的权限。这个问题我思考了一段时间但没能解决,后在老师的辅导下,我攻克了这个难题。之后,我掌握了问题的解决方法。在用户登陆的时候,获得一个角色,这个角色要一个窗体一个窗体的传递到后面的窗体才可以使用。

    6.2 从系统开发中获得的经验

    若想开发一个比较成功的系统,系统开发出来可以将它投入使用,能实现它的开发价值,那在系统开发前要对系统的结构和数据库中的表、存储过程作认真周密的思考与规划。在开发过程中要认真和细心,因为每一个再小的环节可能导致整个系统无法正常运行。在遇到问题的时候要镇定,冷静的思考胜过一切徒劳。擅于运用网络资源。寻求他人的帮助也未尝不可。


    第七章 系统评价

    7.1 系统的特点

    学生信息管理系统的特点很鲜明,就是利用计算机来管理学生信息系统,并且还具备了学生自主查询的功能,更加大大较快了工作效率,而且在系统中还具备了,初步的系统维护。

    学生信息管理系统利用一系列的功能实现了学生信息的增加、删去、修改,学生信息的查询、用户密码修改、学生选课、课程表查询等功能。

    虽然这些功能很简单,但是,在毕业设计过程中却也是要花一番功夫的,并不是很简单就可以完成的。所以,学生信息管理系统还是有可取之处的。

    7.2 系统的缺点

    学生信息管理系统虽然说是利用了计算机管理学生信息系统,但是,这只是大型系统的雏形,而且开发人员少,周期短等各方面因素造成系统的维护方面并不是很好,而且这个系统只能给较小学校作为管理系统,并不是很适应大高校,因为高校的要求更高,而且要求的方面要更加精准,不可以存在什么漏洞,此次开发的学生信息管理系统必然存在漏洞或者是没有考虑全面的方面。而且,系统界面做的并不是很美观,有些地方很不适合学生信息管理系统。可是,总得来说,还是可以说是一个完整的系统吧。

    而且学生信息管理系统的保密措施并不是很好,像管理员密码只要能看到谁都可以输入,这在学生信息管理中并不是很好的方面,按道理应该是处理的更好些,要不系统其实就没有什么安全系数的。

    7.3 系统总结

    在本系统的开发过程中,由于本人是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。虽然网络在学生管理系统中的应用不是很多,但是未来的发展方向,在本次开发过程由于硬件的限制,未能实现网络功能,因此在以后的系统更新过程中可能会造成一些不必要的数据损失。

    尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本学生管理系统是一套学校在日常管理中必不可少的管理软件,通过开发这个系统,我掌握了开发项目的过程,了解了基本知识,巩固了我对Visual studio 2005SQL Server 2005的学习,但在这次毕业设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。

    7.4 将来可能提出的要求

    上面也分析了,因为开发系统时各方面的原因,在将来可能会提出进一步晚上系统,将可能发生的问题缩减到最小,并且进一步开发系统,使系统适应各种类型、各种方面的公司,并且吧系统做到最完美,界面舒服大方。

    以上也说了,学生信息管理系统的安全系数并不是很高,可以任由人进入,因此还是有待于要完善的,比如说,可以增加一个登陆口令,或者是声音识别,再或者是指纹识别。这些功能在以前看起来遥不可及,但是,现在想要实现这些功能也不是不可能的。一旦实现这些功能之后,将会更适应现代各行业的需求,所以,在这方面可以多下点功夫。

    虽然这些可能提出的要求说起来很简单,但是,实施中还使会遇到很多问题,这有待于充实自身的知识之后才可以完成的目标,当然,还使会希望自己把系统做的更好,更合理。


     

    在论文即将完成之际,回顾紧张但又充实的学习和开发过程,我在此向所有关心我的及帮助我的老师和同学们致以最真诚的感谢。

    在本次毕业设计中,我从指导老师——郑友庆老师,身上学到了很多东西。他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写论文阶段,郑老师几次审阅我们的论文,提出了许多宝贵意见,没有他的指导,我们就不能较好的完成课题设计的任务。

    另外,我还要感谢在这几年来对我有所教导的老师,特别是胡佩祥老师,他们孜孜不倦的教诲不但让我学到了很多知识,而且让我掌握了学习的方法,更教会了我做人处事的道理,在此表示感谢。同时,在系统开发过程中还有同组的同学也给了我不少帮助,这里一并表示感谢。

     

    参考文献

    [1] 邵鹏鸣主编.C#面向对象程序设计》【M.1.北京:清华大学出版社,2008年,P127—454

    [2] 周奇主编,《SQL Server 2005数据库基础及应用技术教程与实训》【M.1.北京:北京大学出版社,2008年,P88—168

    [3] 陆丽娜主编,《软件工程》【M.1.北京:经济科学出版社,2000年,P41—163

    [4] 丁亚涛主编,《C言语程序设计》【M.2.北京:高等教育出版社,2006年,P114—181

     

     

     

    展开全文
  • 【python毕业设计】Django框架实现学生信息管理系统

    万次阅读 多人点赞 2019-08-10 16:39:01
    Django框架实现学生信息管理系统 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。 如果一切信息填写正确无误,调用STMP...
  • 数据结构课程设计论文--学生信息管理系统 1.学生成绩分析问题 (1)问题描述。录入并保存一个班级学生多门课程的成绩,并对成绩进行分析。 (2)基本要求。a)通过键盘输入各学生的多门课程的成绩,建立...
  • 基于C语言的学生信息管理系统

    千次阅读 2019-04-29 21:11:52
    基于C语言的学生信息管理系统 一、系统需求与功能分析 1.1 系统需求分析 (1) 能完成学生信息的录入,插入、修改、删除、输出、查询等功能; (2)采用单链表存储结构实现; (3) 所有数据以外部文件方式保存。 ...
  • 大学学生信息管理系统

    千次阅读 2018-07-13 13:28:01
    大学学生信息管理系统项目源码:https://download.csdn.net/download/pizilii/10539271 一、软件开发必要性 在21世纪的科技时代,科学技术突飞猛进,计算机已经不仅是在科技上应用,而且在生活中也是同样得到了广泛...
  • ASP.NET学生成绩信息管理系统
  • 基于SSM的学生信息管理系统(选课)

    万次阅读 多人点赞 2019-04-15 19:40:52
    https://github.com/fuzui/StudentInfo 百度网盘下载:https://pan.baidu.com/s/1ZFNuOCNx775KVUvEff57eg 提取码:edob 推荐github下载,百度网盘更新不及时=-= 配套论文:基于JavaEE的学生信息管理(选课)系统论文 ...
  • 基于JavaEE的学生信息管理(选课)系统论文

    千次阅读 多人点赞 2020-06-05 01:43:46
    本篇论文为毕业设计论文,源码已开源,相关博文:基于SSM的学生信息管理系统(选课) 文章目录摘要Abstract第一章 绪论1.1 设计背景1.2 目的和意义1.3 国内外进展1.3.1 国外进展1.3.2 国内进展1.4 本文工作主要内容第...
  • 学生成绩管理系统+论文毕业设计

    热门讨论 2009-05-30 15:35:14
    系统从功能上划分可分为以下几大模块:功能模块管理,组权限管理,学生信息管理,课程信息管理,学生成绩管理,授课信息管理,学生信息查询,学生成绩统计等几大模块。以下将对各子模块进行说明。 功能模块管理:将系统...
  • 基于Java的学生信息管理系统

    千次阅读 2019-07-18 16:21:45
    学生信息管理系统 描述:通过java语言,设计一个学生信息管理系统。 要求: 1. 实现基本的增删改查功能 2. 采用面向对象思维 3. 在考虑到代码的可读性的前提下,尽可能多的实现封装 4. 设计初始化交互界面 一...
  • 学生信息管理系统报告

    千次阅读 2020-09-17 19:12:58
    沈 阳 工 程 学 院 课 程 设 计 设计题目: 学生信息管理系统 院 系 信息学院 班级 计算机B191 学生姓名 陈力源 冯帅 学号 30 29 指导教师 关 颖...
  • Java_web期末课程设计学生信息管理系统   一、系统开发的意义 随着计算机和网络的普及,学生信息从纸质类变为电子信息类,管理电子类信息变得尤为重要。学生信息管理系统是学校内部重要的工具之一,不仅可以提高...
  • 一个已经成形的毕业设计学生成绩管理系统,里面包含源码、论文、文献综述、外文翻译、开篇报告,系统基于asp.net平台开发,数据库采用sqlserver。
  • 题目:基于链表的学生信息管理系统 要求:   (1)插入节点:输入学生信息后,生成节点并插入链表中;   (2)删除节点:根据给定的学生姓名或学号删除该学生节点;   (3)查找节点:根据给定的学生姓名或学号...
  • Javaweb学生信息管理系统(源码)

    万次阅读 多人点赞 2019-09-01 12:47:15
    1.项目名称:学生成绩管理系统 主要管理学生信息及成绩、教师信息、考试信息等。 2.系统环境: 系统环境:Windows 开发工具:Eclipse Java版本:JDK 1.8 服务器:tomcat 7.0 数据库:MySQL 5.1 系统采用技术...
  • python实现学生信息管理系统

    千次阅读 多人点赞 2020-12-04 22:48:33
    学生信息管理系统用python实现。 是跟着娟姐学python里面的,视频链接请点击:代码视频讲解 需求分析 系统设计 python代码实现 import os fileName = 'student.txt' def main(): while True: menu() ...
  • 基于python的大学学生信息管理系统

    千次阅读 2018-10-07 10:10:15
    root.title('学生信息管理系统 ') # 设置窗口大小 center_window(root, 800, 600) root.maxsize(1200, 800) root.minsize(300, 240) root.iconbitmap('1.png') # 添加学员 upload_label_1 = ttk.Label(root...
  • (一)逻辑篇 一、系统设计 二、数据库设计 ...1.数据库需求分析:无非是增删改查四大块:添加信息、删除信息、修改信息、查找信息。...2.数据库概念结构设计:四大实体:学生、...四、学生管理系统主窗体 1.创建...
  • 基于SSM搭建的学生信息管理系统

    千次阅读 热门讨论 2020-07-04 21:36:07
    基于SSM搭建的学生信息管理系统目录1.为什么要编写学生信息管理系统2.编写学生信息管理系统的过程3.从项目实战中获取到的经验1.1编写项目的起因:疫情在家,每天足不出户,想着说捣鼓些玩意,因为这个学期学校开设了Java...
  • 基于ASP的学生信息档案管理系统毕业论文及源码

    千次下载 热门讨论 2007-06-08 12:20:16
    总体框架 8 第三节 详细功能 8 第四节 系统功能模块设计 9 第三章 系统数据库设计 10 第四章 详细设计 12 第一节 用户浏览页面 12 第二节 用户登陆模块 12 第三节 学生信息管理模块 ...
  • 查询学生信息8. 添加学生信息9. 编辑学生信息10. 删除学生信息11. Bootstrap介绍12. AJAX添加班级信息13. AJAX编辑班级信息14. AJAX删除班级信息15. 数据库操作代码复用16. AJAX添加学生信息17. AJAX编辑学生信息18...
  • 摘 要: 本文介绍了LAMP组合及它的发展状况,在了解了PHP开发原理和流程的基础上,对基于PHP的学生管理系统的开发进行了可行性分析,并对开发过程中可能会用到的工具进行了概括和简介。 目 录 1 绪 论 1 2 LAMP组合...
  • 学生信息管理系统之C语言版

    千次阅读 2020-04-28 14:11:17
    这是我在大一时候与室友写得学生信息管理系统,现在倒腾出来差不多都忘记了。发给大家瞧瞧。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <Windows.h> //控制台...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,582
精华内容 7,832
关键字:

学生信息管理系统论文