最新软件工程选修课 学生选课系统程序设计(5篇)

小编: 笔尘

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。相信许多人会觉得范文很难写?下面是小编为大家收集的优秀范文,供大家参考借鉴,希望可以帮助到有需要的朋友。

软件工程选修课 学生选课系统程序设计篇一

1、系统的意义与目标

网络的飞速发展深刻地影响了人们的日常生活和商业运作方式。社会的方方面面渗透着互连网的应用,使得一向烦琐的手工程序变得方便,快捷,而学校网上选课系统正是基于这一思想而发展起来的。传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成系统登录、选修课的申请和查询,而学校也可以方便地对系统进行管理和控制,提高工作效率。

2、系统的用户需求

用户的需求具体体现在各种学习成绩的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构及数据处理的流程,组成一份详尽数据字典,为后面的具体设计打下基础。学生选课管理系统的设计为选课及成绩管理提供了一个良好的工具,此系统基本实现的设计要求有:

(1)用户登录系统

提供良好的用户登录界面,输入用户名,密码进行登录。

(2)学生的需求

网上选课、选课情况查询、成绩查询。

(3)管理员

(录入、查询、修改和删 除)学生、课程基本资料。

(4)教师的需求

(录入、查询、修改和删除)学生所选课程成绩,统计每个学生的总分、平均分以及排名等功能。

3、系统经费概算

初步估算使用经费15万元,包括硬件资源、技术资料、开发费用、培训费用等。其中,开发开发期间约需9万员,调试与运行期间约需6万元。

4、系统开发计划

本系统开发计划由开发小组用10个月完成。具体时间安排计划如下:

(1)系统调研、系统分析:3个月。

(2)系统设计:2个月。

(3)系统程序设计:3个月。

(4)系统调试:1.5个月。

(5)系统试运行:1.5个月。

软件工程选修课 学生选课系统程序设计篇二

学 年 设 计

课程名称:学年设计(论文(软件工程 实验项目:学生选课系统 姓 名:xxx 专 业:计算机科学与技术 班 级:xx 班 学 号:xxx 指导教师 xxx 计算机科学与技术学院 实验教学中心 xxxx 年 xx月 xx日 目 录

1.项目概述 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 1.1开发背景

„„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 1.2 开发目的 „„„„„„„„„„„„„„„„„„„„„„„„„„ 3 1.3 开发运行境 „„„„„„„„„„„„„„„„„„„„„„„„„„ 3

1.4 系统功能 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 3

2.需求分析 „„„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 2.1 系统需求

„„„„„„„„„„„„„„„„„„„„„„„„„„„ 3 2.2 功能需求 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 3

2.3 业务流图 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 3

3.总体设计 „„„„„„„„„„„„„„„„„„„„„„„„„„„„ 4 3.1 基本设计概念和处理流程 „„„„„„„„„„„„„„„„„„„„ 4 3.2 系统层次模图 „„„„„„„„„„„„„„„„„„„„„„„„„ 4 3.3系统层次模块图 „„„„„„„„„„„„„„„„„„„„„„„„ 4

3.4模块设计 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 5

4.数据库计 „„„„„„„„„„„„„„„„„„„„„„„„„„„„ 5 4.1 数据库的逻辑设计 „„„„„„„„„„„„„„„„„„„„„„„ 5

4.2数据库的配置„„„„„„„„„„„„„„„„„„„„„„„„„„ 6

5.详细设计 „„„„„„„„„„„„„„„„„„„„„„„„„„„ 8 5.1 学生登录模块的设计与实现 „„„„„„„„„„„„„„„„„„„ 8 5.2 学生注册模块的设计与实现 „„„„„„„„„„„„„„„„„„„ 9 5.3 学生查询模块的设计与实现„„„„„„„„„„„„„„„„„„„ 9

5.4 学生选课模块的设计与实现„„„„„„„„„„„„„„„„„„„ 10 6 测试及提交 „„„„„„„„„„„„„„„„„„„„„„„„„„ 10 1.项目概述 1.1 开发背景

internet 的飞速发展深刻地影响了人们的日常生活和商业运作方式。人们打 开网页浏览当天的新闻,发电子邮件给远方的朋友,使用搜索引擎查找资料, 进入网上商城购买商品 —— 这一切都是在使用 internet。社会的方方面面渗透着 互连网的应用,使得一向烦琐的手工程序变得方便,快捷,而学校网上选课系 统正是基于这一思想而发展起来的。

1.2 开发目的

传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不 变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的 限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工 作效率。

1.3 开发运行环境 : 开发工具 :java语言

开发环境 :jdk 1.4 系统功能:(1 登录、注册功能.(2 选课功能(3 查询功能 2.需求分析 2.1 系统需求

用户的需求具体体现在各种学习成绩的提供、保存、更新和查询方面,这 就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结 构及数据处理的流程,组成一份详尽数据字典,为后面的具体设计打下基础。

2.2 功能需求

通过系统功能分析,针对一般的网上选课系统,总结出如下的需求信息:(1 学生的需求:网上选课、选课情况查询;(2 本系统主要实现学生信息管理和选课查询。学生信息包括学号、姓名、班级;课程信息包括课程名;2.3 业务流程图 3.总体设计

3.1 基本设计概念和处理流程

互联网技术的飞速发展, java 等设计工具的方便实用,以及数据库技术的 发展给本系统的设计和实现提供了技术上的支持。

系统基本的流程是:用户登录->主界面->选择各项子系统。3.2 系统层次模块图 3.3系统层次模块图

3.4模块设计

(1 用户注册模块:填写用户名、密码、确认密码

(2 用户登录模块:填写已注册的用户名称,填写正确的密码,进入主控 制页面。(3 用户选课模块:。

(4 用户查询模块:可以进行查看所选课程的操作。4.数据库设计

4.1 数据库的逻辑设计

我们选用了 microsoft access 2000。

数据通信接口采用 odbc。odbc 是微软开发的一套读取数据库的解决方 案,它的目的是将所有对数据库的底层操作全部隐藏在 odbc 的驱动程序内核 里。对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的 应用程序编程接口实现对数据库的读写。目前 odbc 驱动已经提供了对大多数 常见类型数据库的支持,包括 dbase , informix , access , sql server和 oracle 等。也包括了对其它类型的数据库的支持,如文本, excel 电子表格等的支持。根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可 以列出以下数据项和数据结构: 1.名称:用户信息表

2.名称:课程信息表

4.2数据库的配置

一个真正的、完整的站点是离不开数据库的。odbc 为应用程序提供了一 种标准方法来操作相关的数据库:管理器根据数据源提供的数据库的位置、数 据库类型及 odbc 驱动程序等信息,建立起 odbc 与具体数据库的联系。这 样,只要应用程序将数据源名提供给 odbc , odbc 就能建立起与相应数据库 的连接。

按如下步骤可以建立一个新的系统数据源。

首先,在控制面板中双击 odbc 图标,打开“ odbc 数据源管理器”对话 框,选择“系统 dsn ”选项卡,单击“添加”按钮。如下图所示。

在“创建新数据源”对话框中,选择“ driver do microsoft access(*.mdb”作为数据库驱动程序并单击“完成”按钮。如下图所示。

在“ odbc microsoft access安装”对话框中,数据源名称填写为

“ student ”,这是程序中将要引用的。单击“选择 … ”按钮,从弹出的文件窗 口中选择 文件所在的位置。如下图所示。

然后单击“确定”按钮,这样就完成了 access 数据库的 odbc 数据源设 置。以上步骤,通过 odbc 管理器注册了一个名字为 student 的数据源,并且指 定了数据库的驱动程序。

5.详细设计

5.1 学生登录模块的设计与实现 5.1.1.登录模块

功能:本模块主要用于对用户身份进行鉴别。用户通过表单提供用户名和 密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。如果身份 合法,则将用户导向系统的选课页面。

输入:用户名、密码 处理:(1 输入用户的登录信息:在页面提供的表单出输入用户的用户名和密码信 息,点击“登录”按钮提交表单信息到身份验证页面。或点击“重置”按钮, 重新输入。

(2 用户身份进行验证:连接数据库,打开用户数据表 login ,检验用户登 录信息。以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存 在。如果存在,继续检验输入的密码是否正确。密码和用户名都正确,则进入 选课页面;如果用户名不存在或密码不正确,则给出登录失败的提示框。输出:学生选课页面

5.1.2.学生登录页面图如下图所示:

5.2 学生注册模块的设计与实现 5.3 学生查询模块的设计与实现

5.4 学生选课模块的设计与实现

软件工程选修课 学生选课系统程序设计篇三

配电网工程设计软件 概况介绍:

《配电网工程设计软件》根据国家电网公司《配电网标准化设计系统功能规范》、南方电网公司v1.0标准以及地方电力集团进行开发;该软件基于自主cad平台、功能强大、设计效率高、使用范围广同时符合设计标准,并能实时配网设计与造价的一体化;能满足城网设计、农网改造设计、电缆线路设计以及户表设计工作的计算机辅助设计软件。

1.国内首创的不用画图自动出图技术:

配网工程具用项目多工程小的特点,设计工作量非常大,为了提高设计工作效率,我们调查及归纳了以往的设计经验,创新性的提出不用画图也能出设计图纸的数学模型并结合最新的软件技术,真正的实现设计的智能化。

用户只需要通过录入基本信息、气象区、测量数据,软件就可以自动根据设计规则自动进行杆型选型,并根据设计标准对杆进行结构验算,从而实现设计合理、结构安全并帮助客户一键生成设计图纸及统计材料,最终一键生成设计成果、设计说明书及计算工程造价。

通过此功能创新大大提高工作效率及设计标准,受到了广大设计人员的信赖。

2.专业的线路设计:

为了满足设计绘图需要,软件可以支持多种测量数据导入、自动平断面绘制、自动生成导线弧垂表、自动绘制地下电缆、自动排杆、排杆校核、自动连线、自动布杆、自动布拉线、自动金具选型、杆上设备绘制、手工绘制线路、批量绘制线路、高低压共杆设计、智能识别图纸等功能。

绘图模式我们通过多项功能创新,通过软件解决绘图有规律的画法,实现绘图的自动化,从而让绘图更专业、更高效。

3.平断面设计: 软件采用平断面设计功能专业,可以满足10kv以上线路的设计要求,软件支持导入测量数据及手工添加数据两种模式,并自动生成平断面图。

在平断面设计中提供插入布杆、自动布杆、自动生成地下电缆、绘制悬链线、排杆校核、自动计算埋深、呼称高、自动计算对地距离。

4.杆型组装设计: 软件根据规则库以及杆高、条件、排列方式、气象区、耐张类型、档距自动进行杆型设计并生成杆型、杆头,最后组装成对应材料。

5.电缆工程设计: 城网工程以电缆线路为主,为了满足城网设计需要,软件采用地形图模式进行绘图,用户只需根据地形图进行电缆的设计,通过电缆井、电缆沟、电缆敷设、电缆头绘制,并结合线路优化算法实现材料及工程量的自动统计。

6.户表工程设计: 在农网改造中,需要进行户表设计,如进行一户一表的设计,设计的工程量很大,为了提高工作效率,软件提供导入excel数据实现自动绘制户表功能,同时通过接户线绘制、户表绘制、墙担绘制、电线绘制实现自动生成户表明细表、自动标注表箱等功能。关键特性:

该软件可以进行10kv线路设计、0.4.22kv线路设计、户表设计、电缆设计以及电气设计并可以根据设计成果一键生成预算成果,是一款符合cad操作习惯、功能专业、操作方便、设计安全性好、符合设计标准的配网设计软件。

★更智能:

配网工程项目多,时间紧,设计人员重复劳动多,同样技经人员编制预算也是工作量很大,这也是配网与主网的最大差别;为了提供设计的标准化及效率,软件提供自动布杆、自动连线、自动布拉线、自动接地、自动金具选型、自动绘制户表等多项功能。★更简单:

在设计过程中所有数据采用可视化设计、可视可改,直接明了;如选中批量修改、批量修改属性、批量修改组件材料、批量修改材料。

★更方便: 线路设计出图是很麻烦的事,为了让用户可以高效出图,软件提供自动生成标注功能、批量缩放图块、批量生成组装图以及提供按线路走向分幅、选择分幅、布局分幅功能。

同时提供插入图例、设计说明、图例、坐标表、统计表等功能,让我们的设计图更专业。

★更高效: 配网工程项目多,用户可以按工程进行报表统计,也可以按项目批次进行统计。

★更容易: 软件可以根据导入测量数据自动进行绘图,也可以打开已有dwg文件进行自动识图。

★更专业: 软件可以自动生成各种格式的杆塔明细表、材料统计表、工程量统计表、一户一表、现场材料清查表、电缆工程量表、杆型统计表等。

软件界面:

本产品适用于承担20kv及以下电压等级设计的供电局市、区、县设计室(生技部,基建部,农电部)以及电力设计院(输配电线路设计室,电力设计室,变配电设计室)工程施工单位;承担线路检修维护任务的线路工区、农电工区等。★自主cad平台:

自主、开放的cad设计平台,全面兼容autocad2002—2010,用户可以进行设计数据的管理同时也解决了客户的cad正版化问题。

★实现设计与造价一体化:

配网设计成果与配网造价模块实现一键生成,数据准确性高达98%,真正实现预算不用管,造价软件专业、强大,好用。

★开放的设计平台: 典设标准只是一个标准,但配网设计需要根据工程特点、地区、使用习惯进行适当的修改;所以不可能一成不变, 所以软件采用开放的设计平台。

用户可以自行进行数据维护及定义,软件提供图块库、组件维护、物料库维护、绘图设置、线材库、气象区维护。

★提供vip服务(标准化产品+二次开发+现场实施): 5年多各大设计院使用经验、5年的客户案例积累、铸就国内最实用最专业的配网设计软件。

本产品免费为每个客户提供进行二次开发及15天的现场实施服务,保证每个客户的成功上线。

提供免费建库、免费设计报表、免费修改功能等vip服务。

★国内使用成功率最高的设计软件: 本产品已在江西省电力公司、广西水利电业集团、陕西省地方电力集团、云南电网、四川省、内蒙古、浙江省广泛使用。

软件工程选修课 学生选课系统程序设计篇四

学生选课系统可行性分析报告

学院:数学计算机学院组长:马琴

组员:许慕霄、伏敏润、王佩军

1.引言

1.1编写目的每学期的课程都是学校安排的,学生没有选择的自由,而且课程的安排由于各方面诸多的原因经常有不适之处,尤其是先行课的问题。另外,每学期考完试,同学们都要一次又一次的往系里跑,大家挤在一个小小的布告栏前面,在几张a4纸上寻找自己的名字和成绩。虽然从去年开始,全学校也改成了“学分制”,但整个选课过程的管理从我们学生的角度来看,变得更加混乱。同学们不知道每学期有什么课可以选,哪些是选修,哪些是必修,哪些是专业课;也不确定每门课多少学分,自己已经修了多少学分;更不用说考虑一下哪门课要先学,哪门课要后学,哪些课属于一系列。所以说,大部分同学都是为了“选课”而选课,完全没有实现鼓励同学发展个性,学各自之所爱的效果。不仅如此,每当选课的时候,同学们忙,老师更忙,学校和系里都需要投入大量的人力、物力对整个选课过程进行管理。

随着科学技术的发展,计算机已经是日常生活中不可或缺的工具,将学生选课系统从人工管理方式转变成为计算机软件控制。具有检索迅速、查找方便、可靠性高、存储量达、保密性好、寿命长、成本低等巨大优点。如今,学生选课系统已成为日常教学工作中必不可少的管理软件,可对学生信息、选修课程、科目成绩进行各方面的管理,为用户提供充足的信息和快捷的查询、修改手段。选课管理系统。既面向教务处,又面向教师和学生。不同的人,不同的身份操作的权限也不同。作为教师,他可以向教务处申请增加、删除、修改课程信息,并随时了解选修本课的学生名单,还可以输入并分析考试成绩。作为教务处管理员,它的权限是最宽的。他可以对教师提出的课程设置申请进行审批,同时对教学进行安排(包括时间和教室分配、选课结果管理)。作为学生,他可以查询可以选什么课,已有多少学分,还差多少学分。最后进行选课,在学期末还可以随时进行成绩查询。现筹划一学生选课系统管理软件以代替人工管理方式,最大程度的满足各方面用户的需求。

1.2 项目背景

项目名称:学生选课系统软件。

项目提出者:宁夏大学

项目开发者:开发小组

用户:宁夏大学

1.3 定义

sql:结构化查询语言

eclipse:开发源代码的、基于java的可扩展开发平台。

1.4 参考资料

《软件工程》

2.可行性研究的前提

2.1 要求

主要功能:教师对学生资料、成绩以及所选课程进行修改管理;学生可通过查询自身成绩,自主选择相关课程;管理员(教务处)统管所有学生、教师的相关信息。

性能要求:所有数据实时更新保持同步,且定时备份。

输出要求:简单、快捷、实时。

输入要求:及时的修改和更新学生、教师和课程的信息。

安全与保密要求:系统本身配备一定的安全机制,保证各项数据的完整、正确。

每类用户进入系统时,均需输入唯一的用户名和密码;教师有权对学生所选课程成绩进行录入、查询和修改;学生有权对选修课程进行修改;管理员有权对学生信息、所选课程、科目成绩进行管理、修改。

2.2目标

近几年来,我们宁夏大学一直都在扩招学生,外地生源的比例也比以前大了许多,而且还有日益增多的外国留学生,在管理上更增加了管理人员的劳动量,如此多的档案资料,以原有的工作人员数量要管理好实在不容易,但如果增加工作人员,管理成本必然也会增加,得不偿失,而我们这套系统这时就会发挥出它大大的作用,让实用这领会到它的优越之处,帮助老师轻轻松松管理好学生各方面的资料,无论学生是多是少,一切都会被管理得井井有条。节省更多的人力与设备,让学生选课管理成为一项很直接人性化的管理。

2.3条件、假定何限制

运行环境:windows98/2000/xp/vista/7,与windows office软件高度兼容。硬件环境:奔4以上计算机。

开发环境:sql server、eclipse等。

该系统预期寿命五年。

2.4决定可行性的主要因素

学生选课系统软件满足各方用户需求。

成本/效益分析结果:效益>成本。

3.对现有系统的分析

3.1处理流程和数据流程

教师登录:可上传、修改、管理学生选课和成绩的查询。

学生登录:;学生可通过查询自身成绩,自主选择相关课程,查询各科成绩。学校登录:可查询、管理所有信息。

3.2工作负荷

当前系统负担全校将近20000余名教师、学生的日常选课管理工作。

3.3人员

当前系统需要4位管理员,对其专业技术要求不高,熟悉基本的电脑操作即可。

3.4设备

一台服务器,两台pc机。

3.5局限性

由于当前系统开发技术过于老旧,稳定性、安全性能尤为不佳,致使系统频繁遭遇恶意攻击。系统反应过慢,运行效率低。由此分析得出,需要开发新的学生选课系统软件。

4.技术可行性

我们身为首都经济贸易大学信息系的学生,最骄傲的就是拥有令其他系羡慕、向往的系机房。因特尔奔腾四的中央处理器,40g大容量的硬盘,加上256m的内存,配上经久耐用、定位准确的光电鼠标,这都为系统的开发与运行提供了良好的硬件环境,就是这样一台台先进傲人的电脑躺在机房里供我们随时使用,便利程度真是如此了得啊!

身为计算机科学与技术专业大三的学生,通晓一些计算机软件知识是肯定的,运用软件编写程序的能力也是必备的。当然,我们毕竟还是学生,能力还是有限的,但我们计算机系最不缺乏的就是计算机人才,向知识渊博、诲人不倦的郑小玲老师必会给我们以极大的帮助。更何况,俗语说的好:三个臭皮匠赛过诸葛亮。我们组有4个人,起码也顶两个诸葛亮呢。相信通过我们大家的集思广益,相得益彰,我们的系统将会以最完美的姿态展现在大家的面前。

我校自建校至今已有几十年的历史,各种课程比较齐备,且比较有条理。学分制度也比较完善。教师整体水平较高。这使我们开发这一对我们来说比较复杂的系统成为可能。虽然有如此好的客观条件,但始终没有一套完善简单易用的管理系统。现行系统虽然拥有了比较规范、科学的管理方法,并积累了大量的数据信息,具有一定的可行性,但是并不能掩盖其工作量大,管理不够系统的缺点。而我们的系统将充分利用学校为我们提供的宝贵信息,在继承其优点的基础上,开发出一套更为可行的学生管理系统。这套学生选课管理系统在今后的应用中再经过不断的修正与改进,将会使我学生选课更加完善、尽美。

5.经济可行性

成本方面,关于各种软、硬件及辅助设备的购置、调试、机房及辅助设施(电源等)以及系统维护,内务开销这些费用都可以忽略不计,因为我们有自己的电脑。

学生选课管理系统省去了老师为学生展示学校为学生提供的选修课程,并作介绍,考试后把分数抄录多次以做备案和公告这些大量繁杂而由单一枯燥的劳动,可以让老师把精力放在教学和组织教学等更重要更具创造性的事情上,这就显著的提高了他们的工作效率。

取消了抄录成绩后,学校里也不会再出现残破的成绩单一层盖一层的贴在公告栏或黑板上的情景,校园环境也会因此而变得更整洁,而且也为学校省下了大量的纸张,虽然数量并不是很多,但将来系统扩展到整个学校也将是很可观的。况且,在资源日益缺乏的今天,节省纸张已不仅仅是为学校减少办公费用这一单纯的意义。

众所周知,学校的的学生多,管理起来非常困难。相应的也加大了老师的工作量,又因为教学制度的不断变动和改革,因此,总能及时统计出一份内容清晰,条理性强的学籍学分选课分析报表对老师来说真是难于登天。但如果缺少这份报表,同学们就无法清楚了解自己的学分情况,盲目选课,打乱了学习计划,加重了课业负担,而那些基本顺从课程安排的同学则浪费了许多去学习有用知识的时间,甚至临毕业时却发现未修够学分而毕不了业。这个关系到每个人命运的问题绝对马虎不得。不能再坐以待毙了,我们这套学生选课管理系统将提供一份完整的学分选课报表,并会利用管理系统的易修改性及时进行更新,让同学们在选择课程,计算学分中更加游刃有余。

近几年来,我们宁夏大学一直都在扩招学生,外地生源的比例也比以前大了许多,而且还有日益增多的外国留学生,在管理上更增加了管理人员的劳动量,如此多的档案资料,以原有的工作人员数量要管理好实在不容易,但如果增加工作人员,管理成本必然也会增加,得不偿失,而我们这套系统这时就会发挥出它大大的作用,让实用这领会到它的优越之处,帮助老师轻轻松松管理好学生各方面的资料,无论学生是多是少,一切都会被管理得井井有条。

6.社会可行性

经过我们的调查,绝大部分的任课老师,行政人员和校领导都为现行系统的繁琐和冗杂的工作量所深深困扰着。在得知我们开发这套系统的计划后,他们都有一种守得云开见月明的感觉,并表示非常愿意在系统的开发过程中给予全力支持以及积极的配合。

我们这套学生选课管理系统不仅能够让老师更清晰的掌握自己学生的信息,同时也让学生自己更容易的知道如何准确的选课,如何计算学分及尽早得知自己的考试成绩。这就大大的为老师提供了便利。比如,在每学期期末考试后,大多数学生都已回到家中,如果为了获取考试成绩又不得不再返回学校的话,既费时

又费力,学生牢骚满腹,老师也不能提早放假休息。而我们的系统可以提供网上查分,同学们在家中只需要上网就可以在第一时间知道自己的成绩。还有,学生们也可通过我们的系统进行选课来凑够学分完成学业。在系统中会显示出个门课程的性质(如必修、限选、任选),其所占学分及任课老师的资料,其应用性之强得到充分发挥。

我们学校的电脑普及率已达到了很高的水平,尤其是我们系拥有设备先进管理完善的系机房,而学院的老师和学生们对电脑的操作也是驾轻就熟。因此,只要我们这套学生选课系统操作简单,实用,合理,大家肯定是乐于接受并积极响应和支持的。对于这一点,我们是很有信心的。随着信息时代的来临,学籍学分 选课等信息管理的自动化,一体化正是大势所趋。

7.其他可供选择的方案

暂无

软件工程选修课 学生选课系统程序设计篇五

题目

一、学生选课管理系统

第一部分:课程设计名称、目的、要求

第二部分:程序总体设计思路

第三部分:程序功能划分、图示及流程图

第四部分:程序设计数据、运行结果

第五部分:程序的优缺点

第六部分:心得体会

第七部分:附录(源程序)

第八部分:附录(参考文献)

目录

..............................................................................第一部分:课程设计名称、目的、要求

名称:学生选修课程系统设计

目的:运用c语言提高解决实际问题的能力 实验环境:microsoft visual c++ 6.0 内容:

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】

系统以菜单方式工作

课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出

查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项)

第二部分:程序总体设计思路

由于c语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。

具体的设计思路如下:

程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。

整个程序的设计思路到此结束。

第三部分:程序功能划分、图示及流程图

【功能模块划分及其流程图】

本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:

1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()

5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分; main()

总体设计:

学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数

系统功能模块图

部分函数流程图:

1、课程选择函数:

开始输入要选择的课程的编号j=0;j

2、课程查询函数

开始输入要查询的课程的编号j=0;j

3、课程增加函数

开始输入要增加的课程的编号j=0;j

4、课程删除函数

开始输入要删除的课程的编号nj=0;j

本程序是一款应用软件,故数据设计、程序运行结果应在程序的

运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】

1、程序开始界面如下:

选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面:

2、再选择所要进行的操作,如进行课程增加,结果如下:

下面可以进行继续增加课程或者退出:

3、选择课程浏览,可以分页查看相应的课程信息: 第一页:

第二页:

4、课程查询

查找结果:

4、管理员课程删除操作:

删除后可以进行浏览,观察删除后的结果:

可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法:

1、学生登陆界面:

2、选择学生选课选项:

3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。

第五部分:程序的优缺点

【程序的优点】

算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。

[算法上的优点]主要体现在以下三点:

1.程序采用main主函数方式设计,程序的主体的功能大都由该功能

完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。

2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。

3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。

[功能上的优点] 主要体现在以下两点:

1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。

【程序的缺点】 主要表现在以下两点:

1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。

2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。

第六部分:心得体会

选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。

本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。

通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用c语言进行程序设计的能力。

程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。

对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual c中调试的工具有很大的帮助。

总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。

第七部分:附录

一、参考文献:

1、李丽娟主编,c语言程序设计教程(第二版),人民邮电出版社

2、严蔚敏主编,数据结构(c语言),清华大学出版社

3、崔单主编,c语言程序设计案例精粹,电子工业出版社

4、谭浩强主编,程序设计(第三版),清华大学出版社

二、源程序

#include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h”

void index();//首页 void login();void bye_sys();//退出界面

void stu_login();//学生登录菜单

void c_select();void c_view();//课程浏览

void c_add();//增加课程 void c_delete();void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数

struct course//定义课程结构体

{

int c_num;

char c_name[20];

int c_score;

int c_nelepeo;//课程已选人数

int c_melepeo;//课程人数上限 };struct student { char s_number[10];

char s_password[10];};struct manager { char m_name[10];char m_password[10];};

void index()//首页 {

char input;

printf(“nnttt*****************************n”);

printf(“ttt

湖南大学学生选课系统n”);

printf(“ttt*****************************nnn”);

printf(“ttt*****************************nnn”);

printf(“ttt*****************************nnn”);

printf(“ttt*****************************nnn”);

printf(“ttt**********设计者:刘晓斌******nnn”);

input=getchar();

system(“cls”);} void login()//登陆界面

{

void stu_login();

void man_login();

void bye_sys();

int input;

do

{

system(“cls”);

printf(“nnnt1.学生登录n”);

printf(“t2.管理员登陆n”);

printf(“t3.退出本系统n”);

printf(“t请选择服务类别:”);

scanf(“%d”,&input);

if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面

{

printf(“nt输入出错!请重新选择~n”);

printf(“nt按任意键返回选择页面~nt”);

getchar();getchar();

system(“cls”);

}

if(input==3)//如果输入3退出系统

{

bye_sys();

}

}while(input!=1&&input!=2&&input!=3);

switch(input)

{

case 1:stu_login();break;

case 2:man_login();break;

} }

void bye_sys()//退出界面 { exit(0);}

void man_login(){

void c_add();

void c_delete();

void c_view();

void c_searchm();

int in;

do

{

system(“cls”);

printf(“nnt1.新增课程n”);

printf(“t2.删除课程n”);

printf(“t3.课程浏览n”);

printf(“t4.课程查询n”);

printf(“t5.退出n”);

printf(“nnt请选择服务种类:”);

scanf(“%d”,∈);

if(in!=1&∈!=2&∈!=3&∈!=4&∈!=5)

{

printf(“nt没有这项服务t按任意重新选择”);

getchar();getchar();

}

}while(in!=1&∈!=2&∈!=3&∈!=4&∈!=5);

switch(in)

{

case 1:c_add();break;

case 2:c_delete();break;

case 3:c_viewm();break;

case 4:c_searchm();break;

case 5:login();break;

} }

void stu_login()//学生登录菜单

{

void c_select();

void c_view();

void c_searchs();

void login();

int input;

do

{

system(“cls”);

printf(“nnnt--学生登陆--”);

printf(“nnt1.学生选课n”);

printf(“t2.课程浏览n”);

printf(“t3.课程查询n”);

printf(“t4.退出n”);

scanf(“%d”,&input);

if(input!=1&&input!=2&&input!=3&&input!=4)

{

printf(“nt没有这项服务~n”);

printf(“t按任意键重新选择”);

getchar();

getchar();

}

}while(input!=1&&input!=2&&input!=3&&input!=4);

switch(input)

{

case 1:c_select();break;

case 2:c_views();break;

case 3:c_searchs();break;

case 4:login();break;

} }

void c_select(){

int n,in,i=0,j;int flag=0;

file *fp;

file *fp1;

char input;

struct course courses[10];

if((fp=fopen(“”,“rb”))==null)//判断是否存在课程

{

printf(“nnnt课程不存在nn”);

printf(“t<按任意键返回管理菜单>nt”);

input=getchar();

input=getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

}

printf(“nntt请输入你要选课程的编号:”);

scanf(“%d”,&n);

if((fp1=fopen(“”,“rb”))==null)

{

fp1=fopen(“”,“wb”);

}

else

{

fclose(fp1);

fp1=fopen(“”,“ab”);

}

for(j=0;j

if(courses[j].c_num==n)

flag++;

if(flag==0)

{

printf(“nntt不存在对应课程n”);

printf(“nntt继续选课请按1,退出请按2:n”);

scanf(“%d”,∈);

switch(in)

{

case 1:c_select();break;

case 2:stu_login();break;

default:

printf(“输入错误,将返回登录界面!n”);

login();break;

}

}

else

{

fwrite(&courses[j],sizeof(struct course),1,fp1);

fclose(fp1);

printf(“nntt选课成功t请选择:”);

printf(“nntt1.继续选课”);

printf(“nntt2.退出,返回登录界面!”);

scanf(“%d”,∈);

switch(in)

{

case 1:c_select();break;

case 2:stu_login();break;

default:break;

}

} }

void c_viewm()//课程浏览

{

void stu_login();

void c_view();

int

inp,i=0,n=0;

file *fp;

char input;

struct course courseview[10];

if((fp=fopen(“”,“rb”))==null)//判断是否存在课程

{

system(“cls”);

printf(“nnnt课程不存在nn”);

printf(“t<按任意键返回管理菜单>nt”);

getchar();getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courseview[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

do

{

system(“cls”);

if(i==1)

{

printf(“nnnttt没有记录!n”);

getchar();getchar();

man_login();

}

else

{

printf(“nt------共有%d条记录-------”,i-1);

printf(“nnt课程编号: %dn”,courseview[n].c_num);

printf(“nnt课程名字: %sn”,courseview[n].c_name);

printf(“nnt课程学分: %dn”,courseview[n].c_score);

printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo);

printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo);

printf(“nnt1.上一页t2.下一页t3.回目录”);

printf(“n请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:

{

if(n==0)

{

printf(“nt已到达首页 t按任意键返回”);

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case 2:

{

if(n==i-2)

{

printf(“nt已到达尾页t按人意见返回”);

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case 3:{man_login();break;}

default:

{

printf(“nt操作错误t按任意键返回”);

getchar();getchar();

break;

}

}

}

}while(inp!=3);

} }

void c_views()//课程浏览

{

void stu_login();

void c_view();

int

inp,i=0,n=0;

file *fp;

char input;

struct course courseview[10];

if((fp=fopen(“”,“rb”))==null)//判断是否存在课程

{

system(“cls”);

printf(“nnnt课程不存在nn”);

printf(“t<按任意键返回管理菜单>nt”);

getchar();getchar();

stu_login();//进入学生登陆菜单

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&courseview[i],sizeof(struct course),1,fp);

i=i+1;

}

while(!feof(fp));

fclose(fp);//文件读完后关闭

do

{

system(“cls”);

if(i==1)

{

printf(“nnnttt没有记录!n”);

getchar();getchar();

stu_login();

}

else

{

printf(“nt------共有%d条记录-------”,i-1);

printf(“nnt课程编号: %dn”,courseview[n].c_num);

printf(“nnt课程名字: %sn”,courseview[n].c_name);

printf(“nnt课程学分: %dn”,courseview[n].c_score);

printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo);

printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo);

printf(“nnt1.上一页t2.下一页t3.回目录”);

printf(“n请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:

{

if(n==0)

{

printf(“nt已到达首页 t按任意键返回”);

input=getchar();

input=getchar();

}

else

{

n=n-1;

}

break;

}

case 2:

{

if(n==i-2)

{

printf(“nt已到达尾页t按人意见返回”);

input=getchar();

input=getchar();

}

else

{

n=n+1;

}

break;

}

case 3:{stu_login();break;}

default:

{

printf(“nt操作错误t按任意键返回”);

getchar();getchar();

break;

}

}

}

}while(inp!=3);

} }

void c_searchs(){

void stu_login();

void c_searchs();

int id,i=0,j,inp,k;

int flag=0;

file *fp;

struct course coursesear[10];

if((fp=fopen(“”,“rb”))==null)

//判断课程信息是否存在 {

system(“cls”);

printf(“nnt课程不存在t按任意键返回”);

getchar();getchar();

stu_login();

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&coursesear[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

system(“cls”);

printf(“nnttt请输入你要查询的课程编号:”);

scanf(“%d”,&id);

do//检查输入是否符合要求

{

for(j=0;j

{

if(id==coursesear[j].c_num)

{

flag++;

k=j;

}

}

if(flag==1)

{

system(“cls”);

printf(“nnt课程编号:%dn”,coursesear[k].c_num);

printf(“nnt课程名字:%sn”,coursesear[k].c_name);

printf(“nnt课程学分:%dn”,coursesear[k].c_score);

printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo);

printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo);

getchar();getchar();

printf(“nnt1.回目录继续查询t2.退出查询系统n”);

printf(“请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:c_searchs();

case 2:stu_login();

default:

{

printf(“nt没有这项服务t请按任意键重新输入”);

getchar();getchar();

}

}

}

else

{

system(“cls”);

printf(“nnt不存在对应记录n”);

printf(“nnt1.回目录继续查询t2.退出查询系统n”);

printf(“请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:c_searchs();

case 2:stu_login();

default:

{

printf(“nt没有这项服务t请按任意键重新输入”);

getchar();getchar();

}

}

}

}while(inp!=1);

}

void c_searchm(){

void stu_login();

void c_searchm();

int id,i=0,j,inp,k;

int flag=0;

file *fp;

struct course coursesear[10];

if((fp=fopen(“”,“rb”))==null)

//判断课程信息是否存在 {

system(“cls”);

printf(“nnt课程不存在t按任意键返回”);

getchar();getchar();

stu_login();

}

else//存在的话循环读取文件中的信息直到文件指针到文件尾部

{

do

{

fread(&coursesear[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

system(“cls”);

printf(“nnttt请输入你要查询的课程编号:”);

scanf(“%d”,&id);

do//检查输入是否符合要求

{

for(j=0;j

{

if(id==coursesear[j].c_num)

{

flag++;

k=j;

}

}

if(flag==1)

{

system(“cls”);

printf(“nnt课程编号:%dn”,coursesear[k].c_num);

printf(“nnt课程名字:%sn”,coursesear[k].c_name);

printf(“nnt课程学分:%dn”,coursesear[k].c_score);

printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo);

printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo);

getchar();getchar();

printf(“nnt1.回目录继续查询t2.退出查询系统n”);

printf(“请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:c_searchm();

case 2:man_login();

default:

{

printf(“nt没有这项服务t请按任意键重新输入”);

getchar();getchar();

}

}

}

else

{

system(“cls”);

printf(“nnt不存在对应记录n”);

printf(“nnt1.回目录继续查询t2.退出查询系统n”);

printf(“请选择:”);

scanf(“%d”,&inp);

switch(inp)

{

case 1:c_searchm();

case 2:man_login();

default:

{

printf(“nt没有这项服务t请按任意键重新输入”);

getchar();getchar();

}

}

}

}while(inp!=1);}

void c_add()//增加课程 {

void c_add();

void man_login();

int i=0,j,inp;

file *fp;

struct course course_new;

struct course courses[10];

system(“cls”);

printf(“nntt请输入课程信息”);

printf(“nntt1.课程编号:”);

scanf(“%d”,&course_new.c_num);

printf(“nntt2.课程名字:”);

scanf(“%s”,course_new.c_name);

printf(“nntt3.课程学分:”);

scanf(“%d”,&course_new.c_score);

printf(“nntt4.课程已选人数:”);

scanf(“%d”,&course_new.c_nelepeo);

printf(“nntt5.课程人数上限:”);

scanf(“%d”,&course_new.c_melepeo);

if((fp=fopen(“”,“rb”))!=null)

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

for(j=0;j<=i-1;j++)

if(course_new.c_num==courses[j].c_num)

{

system(“cls”);

printf(“nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单”);

getchar();getchar();

man_login();

break;

}

}

if((fp=fopen(“”,“rb”))==null)

{

fp=fopen(“”,“wb”);

}

else

{

fclose(fp);

fp=fopen(“”,“ab”);

}

fwrite(&course_new,sizeof(struct course),1,fp);

fclose(fp);

printf(“nntt信息输入完毕t按任意键继续”);

getchar();getchar();

do

{

system(“cls”);

printf(“nntt1.继续输入”);

printf(“nntt2.返回管理菜单”);

printf(“nntt请选择”);

scanf(“%d”,&inp);

if(inp!=1&&inp!=2)

{

printf(“输入不符合要求t按任意键重新选择”);

getchar();getchar();

}

}while(inp!=1&&inp!=2);

switch(inp)

{

case 1:c_add();break;

case 2:man_login();break;

} }

void c_delete()//查询后删除 {

file *fp;

int i=0,j,n,k,flag=0;

struct course courses[10];

void c_delete();

void man_login();

printf(“nntt请输入你要删除的课程编号:”);

scanf(“%d”,&n);

if((fp=fopen(“”,“rb”))!=null)

{

do

{

fread(&courses[i],sizeof(struct course),1,fp);

i=i+1;

}while(!feof(fp));

fclose(fp);

}

else

{

printf(“nntt不存在任何课程t按任意键返回”);

getchar();getchar();

man_login();

}

for(j=0;j

{

if(courses[j].c_num==n)

{

flag=1;

fp=fopen(“”,“wb”);

for(k=0;k

fwrite(&courses[k],sizeof(struct course),1,fp);

fclose(fp);

fp=fopen(“”,“ab”);

for(k=j+1;k

{

fwrite(&courses[k],sizeof(struct course),1,fp);

}

printf(“nntt记录已删除!t按任意键返回ntt”);

getchar();getchar();

man_login();

fclose(fp);

}

}

if(flag==0)

{

printf(“nntt不存在对应的课程t按任意键返回”);

getchar();getchar();

man_login();

} // printf(“nntt记录已删除!t按任意键返回ntt”);

}

int main(){

index();login();return 0;}