草庐IT

Python程序设计之 —— 简易学生信息管理系统

Enovo_飞鱼 2023-04-09 原文

大家好,我是 Enovo飞鱼,今天分享一个 Python程序设计之 —— 简易学生信息管理系统 ,小白或者正在学习Python的小伙伴推荐阅读,加油💪。

目录

前言 

Python 简介

Python 特点

一、项目来源及背景 

二、功能设计

三、步骤分析

四、需求实现

五、具体代码

功能界面部分:

主要部分代码:

4.1 添加学生信息

4.2 删除学生信息

4.3 查询学生信息 

4.4 统计学生总人数

4.5 显示所有学生信息

排序 (以总成绩分数)

五、运行效果

六、完整代码

获取源码?私信?关注?点赞?收藏?


 

Java程序设计之(一)MySQL的交互-学生信息成绩管理系统:

http://t.csdn.cn/JKoQIhttp://t.csdn.cn/JKoQI


前言 

Python 简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 特点

  • 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

  • 2.易于阅读:Python代码定义的更清晰。

  • 3.易于维护:Python的成功在于它的源代码是相当容易维护的。

  • 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

  • 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

  • 6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

  • 7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

  • 8.数据库:Python提供所有主要的商业数据库的接口。

  • 9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。

  • 10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。


一、项目来源及背景 

学生信息管理系统是学生在每学年记录学生升学,转学,退学等的主要应用,具有较强的实用性,贴近实际,便于完成系统的分析与设计,适用于多用户。

 


二、功能设计

实现一个学生信息的管理系统:主要功能有:

  1. 添加学生信息

  2. 删除学生信息

  3. 查询学生信息

  4. 统计学生总人数

  5. 显示所有学生信息

  6. 排序(以总成绩分数)

  7. 退出学生信息管理系统

 


三、步骤分析

  1. 显示功能界面

  2. 用户输入功能序号

  3. 对不同序号的功能实现具体函数

                3.1 定义函数

                3.2 调用函数

 


四、需求实现

  1. 显示功能界面 menu()

  2. 用户输入程序指令 choice = int(input('请输入您的程序指令:'))

  3. 按照用户输入的功能序号,执行不同的功能(函数)

  4. 添加学生信息 insert()

  5. 删除学生信息 delete()

  6. 查询学生信息 search()

  7. 统计学生总人数 total()

  8. 显示所以学生信息 show()

  9. 排序(以总成绩分数)sort()

  10. 退出学生信息管理系统  if choice == 0:

 


五、具体代码

系统功能进行循环使用,直到用户输入0,退出系统。

功能界面部分:

def menu():
    print('==============================学生信息管理系统==============================')
    print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽')
    print("*" * 74)
    print("******", " " * 60, "******")
    print("******\t    1.添加学生信息", " " * 18, "4.统计学生总人数\t\t    ******")
    print("******\t    2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t    ******")
    print("******\t    3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t    ******")
    print("******\t    0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******")
    print("******", " " * 60, "******")
    print("*" * 74)
    print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')


def save(lst):
    stu_txt = open(fileName, 'a', encoding='utf-8')
    for item in lst:
        stu_txt.write(str(item) + '\n')
    stu_txt.close()

主要部分代码:

# 定义函数main()
def main():
    while True:
        menu()
        choice = int(input('请输入您的程序指令:'))
        if choice in [0, 1, 2, 3, 4, 5, 6]:
            if choice == 0:
                print("您确定要退出吗?yes/no")
                answer = input()
                if answer == 'yes':
                    print('感谢您的使用!!!')
                    break  # 终止
                else:
                    continue  # 中止
            elif choice == 1:
                insert()
            elif choice == 2:
                delete()
            elif choice == 3:
                search()
            elif choice == 4:
                total()
            elif choice == 5:
                show()
            elif choice == 6:
                sort()
        else:
            print('输入的指令不在范围内,请重新输入!!!')

那么根据上面的代码,需要实现具体的功能函数,主要功能代码部分如下:


4.1 添加学生信息

# 录入学生信息
def insert():
    global phone
    student_list = []
    while True:
        id = input('请输入学号: ')
        if not id:
            break
        name = input('请输入姓名: ')
        if not name:
            break
        sex = input('请输入性别: ')
        if not sex:
            break
        # phone = input('请输入手机号: ')
        # if not phone:
        count = 0
        for i in range(1, 4):
            phone = input("请输入你的手机号: ")
            # 利用正则表达式进行限定
            tel = re.match(r"^1[3456789]\d{9}$", phone)
            if tel:
                print("输入成功!")
                break
            if tel != phone:
                count += 1
            if (count == 3):
                print("录入失败,请30秒后重试!")
            if (count != 3):
                print("录入错误,请核对你的手机号!")
        try:
            # 智育分满分70分,德育分满分20分,体育分满分10分
            zyf = int(input('请输入你的智育分:'))
            dyf = int(input('请输入你的德育分:'))
            tyf = int(input('请输入你的体育分:'))
        except:
            print('请您输入数字成绩!')
            continue
        # 将录入的学生信息保存到字典中
        student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf}
        # 将学生信息添加到列表中
        # 可删!!!!!
        student_list.append(student)
        answer = input('是否继续添加?yes/no\n')
        if answer == 'yes':
            continue
        else:
            break
    # 保存学生信息
    save(student_list)  # 封装
    print('学生信息录入完毕!!!')

 

4.2 删除学生信息

# 删除学生信息
def delete():
    while True:
        student_id = input('请输入要删除学生的学号:')
        if student_id != '':
            if os.path.exists(fileName):
                with open(fileName, 'r', encoding='utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old = []
            flag = False  # 标记是否删除
            if student_old:
                with open(fileName, 'w', encoding='utf-8') as wfile:
                    d = {}
                    for item in student_old:
                        d = dict(eval(item))  # 将字符串转换为字典
                        if d['id'] != student_id:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'学号为{student_id}的学生信息已经删除')
                    else:
                        print(f'学生表中没有找到学号为{student_id}的学生')
            else:
                print('学生表已中无任何学生个人信息')
                break
            show()  # 重新显示所有学生信息
            answer = input('是否继续删除?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
    print('删除学生信息已结束,请你进行下一步操作!!!')

 

4.3 查询学生信息 

# 查询学生信息
def search():
    while True:
        stu_query = []
        id = ''
        # 判断文件是否存在
        if os.path.exists(fileName):
            # if的使用
            if id == '':
                id = input('请输入要查找的学生学号:')
            else:
                print('您的输入有误,请重新输入!')
                continue
            # 如果文件存在,并且用户输入了正确的查询标号,则打开文件
            with open(fileName, 'r', encoding='utf-8') as rfile:
                students = rfile.readlines()
            # 转换为字典类型
            for item in students:
                d = dict(eval(item))
                if id != '':
                    if id == d['id']:
                        stu_query.append(d)  # 追加
            # 显示查询结果
            show_student(stu_query)
            # 是否继续查询其他学生信息
            answer = input('还要查询其他学生吗?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
        else:
            print('学生信息不存在!')
            return
    print('学生信息查询结束,请进行下一步操作!!!')

 

4.4 统计学生总人数

# 统计学生总人数
def total():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                print('一共有{}名学生'.format(len(students)))
            else:
                print('学生系统中还没有录入学生信息!')
    else:
        print('学生信息不存在!')
        return
    print('学生总人数统计完毕,请进行下一步操作!!!')

 

4.5 显示所有学生信息

# 显示所有学生信息
def show():
    student_list = []
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                for item in students:
                    student_list.append(eval(item))
                # 展示学生信息
                show_student(student_list)
            else:
                print('学生文件中还没有录入学生信息!')
    else:
        print('学生文件不存在!')
        return
    print('学生信息已成功显示,请你进行下一步操作!!!')

 

排序 (以总成绩分数)

# 对总学生成绩进行排序
def sort():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students_list = rfile.readlines()
        students_new = []
        # 判断读取到的学生信息是否为空
        if students_list:
            # 将所有的item加入到students_new中
            for item in students_list:
                d = dict(eval(item))
                students_new.append(d)
                # 利用匿名函数与sort方法进行排序
                # True为降序,False升序
                students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']),
                                  reverse=True)
            # 将排序后的成绩进行输出
            show_student(students_new)
    print('学生信息排序完成并成功显示,请你进行下一步操作!!!')

 


五、运行效果

如上图所示可以看到我们的运行效果,及示例,并且我们输入的信息会存入一个文本文件,那怎么实现的呢?请看下方代码

# 建立一个名为student.text的文本用于保存文件

fileName = 'student.txt'

 


六、完整代码

# 导入模块
import os
import re

# 建立一个名为student.text的文本用于保存文件

fileName = 'student.txt'


# 定义函数main()
def main():
    while True:
        menu()
        choice = int(input('请输入您的程序指令:'))
        if choice in [0, 1, 2, 3, 4, 5, 6]:
            if choice == 0:
                print("您确定要退出吗?yes/no")
                answer = input()
                if answer == 'yes':
                    print('感谢您的使用!!!')
                    break  # 终止
                else:
                    continue  # 中止
            elif choice == 1:
                insert()
            elif choice == 2:
                delete()
            elif choice == 3:
                search()
            elif choice == 4:
                total()
            elif choice == 5:
                show()
            elif choice == 6:
                sort()
        else:
            print('输入的指令不在范围内,请重新输入!!!')


def menu():
    print('==============================学生信息管理系统==============================')
    print('︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽功能菜单︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽︽')
    print("*" * 74)
    print("******", " " * 60, "******")
    print("******\t    1.添加学生信息", " " * 18, "4.统计学生总人数\t\t    ******")
    print("******\t    2.删除学生信息", " " * 18, "5.显示所有学生信息\t\t    ******")
    print("******\t    3.查询学生信息", " " * 18, "6.排序(以总成绩分数) \t    ******")
    print("******\t    0.退出学生信息管理系统", " " * 18, "\t\t\t\t\t******")
    print("******", " " * 60, "******")
    print("*" * 74)
    print('︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾︾')


def save(lst):
    stu_txt = open(fileName, 'a', encoding='utf-8')
    for item in lst:
        stu_txt.write(str(item) + '\n')
    stu_txt.close()


# 录入学生信息
def insert():
    global phone
    student_list = []
    while True:
        id = input('请输入学号: ')
        if not id:
            break
        name = input('请输入姓名: ')
        if not name:
            break
        sex = input('请输入性别: ')
        if not sex:
            break
        # phone = input('请输入手机号: ')
        # if not phone:
        count = 0
        for i in range(1, 4):
            phone = input("请输入你的手机号: ")
            # 利用正则表达式进行限定
            tel = re.match(r"^1[3456789]\d{9}$", phone)
            if tel:
                print("输入成功!")
                break
            if tel != phone:
                count += 1
            if (count == 3):
                print("录入失败,请30秒后重试!")
            if (count != 3):
                print("录入错误,请核对你的手机号!")
        try:
            # 智育分满分70分,德育分满分20分,体育分满分10分
            zyf = int(input('请输入你的智育分:'))
            dyf = int(input('请输入你的德育分:'))
            tyf = int(input('请输入你的体育分:'))
        except:
            print('请您输入数字成绩!')
            continue
        # 将录入的学生信息保存到字典中
        student = {'id': id, 'name': name, 'sex': sex, 'phone': phone, 'zyf': zyf, 'dyf': dyf, 'tyf': tyf}
        # 将学生信息添加到列表中
        # 可删!!!!!
        student_list.append(student)
        answer = input('是否继续添加?yes/no\n')
        if answer == 'yes':
            continue
        else:
            break
    # 保存学生信息
    save(student_list)  # 封装
    print('学生信息录入完毕!!!')


def show_student(lst):
    # 传过来空列表
    if len(lst) == 0:
        print('没有查找到该生信息!')
        return
    # 定义标题显示格式
    format_title = '{:^5}\t{:^23}{:^5}\t{:^11}\t{:^12}\t{:^10}\t{:^10}\t{:^6}\t{:^6}\t'
    print(format_title.format('学号', '姓名', '性别', '手机号', '智育分', '德育分', '体育分', '总成绩', '分数等级'))
    # 定义内容的显示格式
    format_data = '{:^6}\t{:^6}\t{:^6}\t{:^31}{:^3}\t{:^10}\t{:^9}\t{:^12}\t{:^12}\t'
    for item in lst:
        sum = int(item['zyf']) + int(item['dyf']) + int(item['tyf'])
        # grade等级的使用
        grade = ''
        if sum >= 85:
            grade = 'A'
        if 75 <= sum < 85:
            grade = 'B'
        if 65 <= sum < 75:
            grade = 'C'
        if 60 <= sum < 65:
            grade = 'D'
        if sum < 60:
            grade = 'error'
        # sum,grade的输出格式不同
        # format_data.format(sum,grade))
        print(format_data.format(item['id'], item['name'], item['sex'], item['phone'],
                                 item['zyf'], item['dyf'], item['tyf'],
                                 sum, grade))
        print('全部学生信息显示完毕!!!')


# 查询学生信息
def search():
    while True:
        stu_query = []
        id = ''
        # 判断文件是否存在
        if os.path.exists(fileName):
            # if的使用
            if id == '':
                id = input('请输入要查找的学生学号:')
            else:
                print('您的输入有误,请重新输入!')
                continue
            # 如果文件存在,并且用户输入了正确的查询标号,则打开文件
            with open(fileName, 'r', encoding='utf-8') as rfile:
                students = rfile.readlines()
            # 转换为字典类型
            for item in students:
                d = dict(eval(item))
                if id != '':
                    if id == d['id']:
                        stu_query.append(d)  # 追加
            # 显示查询结果
            show_student(stu_query)
            # 是否继续查询其他学生信息
            answer = input('还要查询其他学生吗?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
        else:
            print('学生信息不存在!')
            return
    print('学生信息查询结束,请进行下一步操作!!!')


# 删除学生信息
def delete():
    while True:
        student_id = input('请输入要删除学生的学号:')
        if student_id != '':
            if os.path.exists(fileName):
                with open(fileName, 'r', encoding='utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old = []
            flag = False  # 标记是否删除
            if student_old:
                with open(fileName, 'w', encoding='utf-8') as wfile:
                    d = {}
                    for item in student_old:
                        d = dict(eval(item))  # 将字符串转换为字典
                        if d['id'] != student_id:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'学号为{student_id}的学生信息已经删除')
                    else:
                        print(f'学生表中没有找到学号为{student_id}的学生')
            else:
                print('学生表已中无任何学生个人信息')
                break
            show()  # 重新显示所有学生信息
            answer = input('是否继续删除?yes/no\n')
            if answer == 'yes':
                continue
            else:
                break
    print('删除学生信息已结束,请你进行下一步操作!!!')


# 统计学生总人数
def total():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                print('一共有{}名学生'.format(len(students)))
            else:
                print('学生系统中还没有录入学生信息!')
    else:
        print('学生信息不存在!')
        return
    print('学生总人数统计完毕,请进行下一步操作!!!')


# 显示所有学生信息
def show():
    student_list = []
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            # 判断读取到的学生信息是否为空
            if students:
                for item in students:
                    student_list.append(eval(item))
                # 展示学生信息
                show_student(student_list)
            else:
                print('学生文件中还没有录入学生信息!')
    else:
        print('学生文件不存在!')
        return
    print('学生信息已成功显示,请你进行下一步操作!!!')


# 对总学生成绩进行排序
def sort():
    # 判断文件是否存在,如果存在则打开文件,读取信息
    if os.path.exists(fileName):
        with open(fileName, 'r', encoding='utf-8') as rfile:
            students_list = rfile.readlines()
        students_new = []
        # 判断读取到的学生信息是否为空
        if students_list:
            # 将所有的item加入到students_new中
            for item in students_list:
                d = dict(eval(item))
                students_new.append(d)
                # 利用匿名函数与sort方法进行排序
                # True为降序,False升序
                students_new.sort(key=lambda x: int(x['zyf']) + int(x['dyf']) + int(x['tyf']),
                                  reverse=True)
            # 将排序后的成绩进行输出
            show_student(students_new)
    print('学生信息排序完成并成功显示,请你进行下一步操作!!!')


if __name__ == '__main__':
    main()

 


上述内容就是我们,Python学生信息管理系统 的全部内容了,希望可以得到大家的支持!

以上就是课程实践作业—— 学生信息管理系统 的全部程序设计分析及相关代码,供大家学习使用,希望可以帮助到大家!如果各位有疑问的话,欢迎私信,发现错误,也希望可以指出,共同改进学习,加油💪!


 

获取源码?私信?关注?点赞?收藏?

  👍+✏️+⭐️+🙇‍

有需要源码的小伙伴可以 关注下方微信公众号 " Enovo开发工厂 ",回复 关键词 " python-m1 " 

 

有关Python程序设计之 —— 简易学生信息管理系统的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  5. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  6. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  9. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  10. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

随机推荐