选课系统-课设报告
选课系统实验报告
选课系统实验报告选课系统实验报告一、引言选课系统是现代教育管理中不可或缺的一部分,它为学生提供了便捷的选课方式,同时也为学校提供了高效的课程管理工具。
本实验旨在探讨选课系统的设计与实现,以及其在教育管理中的作用和影响。
二、选课系统的设计与实现1. 系统需求分析在设计选课系统之前,我们首先进行了系统需求分析。
通过与学生、教师和管理员的访谈,我们了解到他们对选课系统的期望和需求。
学生希望能够方便地浏览和选择课程,教师希望能够快速发布和管理课程信息,管理员则需要一个高效的管理平台。
2. 数据库设计选课系统的核心是数据库设计。
我们根据需求分析结果,设计了学生、课程和选课记录等主要数据表。
通过合理的关系模型设计和索引优化,提高了系统的数据查询和操作效率。
3. 界面设计为了提供良好的用户体验,我们注重选课系统的界面设计。
通过采用直观的图形界面和友好的交互方式,使学生、教师和管理员能够轻松地使用系统,并快速完成各项操作。
4. 功能实现选课系统的功能主要包括课程浏览、选课、退课、成绩查询等。
我们通过编写相应的程序代码,实现了这些功能,并保证了系统的安全性和稳定性。
三、选课系统在教育管理中的作用和影响1. 提高选课效率传统的选课方式需要学生亲自到选课办公室进行登记,耗费时间和精力。
而选课系统的出现,使得学生可以在任何时间和地点进行选课,大大提高了选课的效率。
2. 优化课程安排选课系统可以根据学生的选课情况和课程容量,自动进行课程安排。
这样一来,可以避免课程冲突和资源浪费,优化学校的课程安排。
3. 提升教务管理水平选课系统可以实时记录学生的选课情况和成绩,为教务管理提供了重要的数据支持。
通过对选课数据的分析和挖掘,学校可以更好地了解学生的兴趣和需求,进而优化教学计划和教学资源配置。
4. 促进教学改革选课系统的使用,使得学校能够更好地了解学生对不同课程的需求和反馈。
这为教学改革提供了宝贵的参考意见,促进了教学质量的提升。
学生选课系统实验报告
一、实验目的1. 熟悉数据库的基本概念和操作方法。
2. 掌握SQL语言的基本语法和应用。
3. 了解并掌握Java编程语言在数据库应用中的基本操作。
4. 提高学生选课系统的设计与实现能力。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 开发工具:Eclipse IDE4. 编程语言:Java三、实验内容1. 数据库设计2. 系统模块设计3. 系统实现4. 系统测试四、实验步骤1. 数据库设计(1)创建数据库在MySQL中创建名为“student_course”的数据库。
(2)创建数据表在“student_course”数据库中创建以下数据表:- 学生表(students):包含学生ID、姓名、性别、出生日期、班级等字段。
- 课程表(courses):包含课程ID、课程名称、学分、上课时间、上课地点等字段。
- 选课表(enrollments):包含学生ID、课程ID、选课时间等字段。
(3)建立数据表之间的关系- 学生表和选课表通过学生ID建立一对一的关系。
- 课程表和选课表通过课程ID建立一对一的关系。
2. 系统模块设计(1)登录模块- 用户输入用户名和密码,系统验证用户身份。
- 验证成功后,进入系统主界面。
(2)选课模块- 查询课程信息:学生可以查看所有课程信息,包括课程名称、学分、上课时间、上课地点等。
- 选课:学生可以选择感兴趣的课程,并提交选课请求。
- 查看选课结果:学生可以查看自己的选课结果,包括已选课程、未选课程等信息。
(3)退课模块- 查看选课结果:学生可以查看自己的选课结果,包括已选课程、未选课程等信息。
- 退课:学生可以申请退课,并提交退课请求。
(4)管理员模块- 添加课程:管理员可以添加新的课程信息。
- 删除课程:管理员可以删除课程信息。
- 修改课程:管理员可以修改课程信息。
3. 系统实现(1)使用Java编程语言实现各个模块的功能。
(2)使用JDBC连接MySQL数据库,实现数据操作。
网上选课系统课程设计
网上选课系统课程设计一、课程目标知识目标:1. 了解网上选课系统的基本概念、功能模块及其操作流程;2. 掌握运用信息技术进行网上选课的方法,包括查询、筛选、确认等步骤;3. 认识到数据安全与个人信息保护在网上选课系统中的重要性。
技能目标:1. 学会使用网上选课系统进行自主选课,提高信息检索与筛选能力;2. 培养学生团队协作能力,通过小组讨论、分享经验,解决网上选课过程中遇到的问题;3. 学会对网上选课系统的操作进行评价,提出改进意见,提升系统使用体验。
情感态度价值观目标:1. 培养学生主动参与网上选课的积极性,认识到自主选择课程的重要性;2. 增强学生对信息技术的兴趣和信心,树立正确的信息素养观念;3. 培养学生遵守网络道德规范,尊重他人隐私,维护网络安全。
课程性质:本课程为实践性较强的信息技术课程,注重培养学生的实际操作能力和信息素养。
学生特点:学生具备一定的计算机操作基础,对新鲜事物充满好奇,喜欢探索与挑战。
教学要求:结合学生的特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,提高他们的实际操作能力。
通过课程学习,使学生能够熟练运用网上选课系统,培养自主选课的能力,提升信息素养。
在教学过程中,关注学生的情感态度价值观培养,使他们在掌握技能的同时,树立正确的价值观。
最终将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 网上选课系统的基本概念:介绍网上选课系统的定义、作用及其在学校教育中的应用。
2. 网上选课系统的功能模块:详细讲解系统的主要功能模块,如课程查询、课程筛选、课程确认、选课结果查询等。
3. 网上选课操作流程:指导学生了解并掌握网上选课的操作步骤,包括登录系统、查询课程、选择课程、确认选课、查看选课结果等。
4. 数据安全与个人信息保护:强调在网上选课过程中注意个人信息保护,介绍相关的网络安全知识。
5. 教学大纲制定:- 第一周:网上选课系统的基本概念与功能模块介绍;- 第二周:网上选课操作流程讲解与实操演示;- 第三周:数据安全与个人信息保护知识学习;- 第四周:学生进行实际操作,教师辅导并解答疑问;- 第五周:总结与评价,提出改进意见。
选课系统课设报告
选课系统课设报告全文共四篇示例,供读者参考第一篇示例:选课系统课设报告一、引言随着教育领域的不断发展,高校教学管理系统也在不断完善,选课系统作为高校教学管理系统的一个重要组成部分,对学生和教师的教学生活起着至关重要的作用。
本报告将针对选课系统进行设计与开发,以提高选课效率、方便学生和教师的教学活动。
二、系统需求1. 学生端需求:(1)学生能够浏览课程信息,包括课程名称、授课老师、上课时间等;(2)学生能够进行选课操作,包括添加课程、删除课程等;(3)学生能够查看自己的选课情况,并进行调整;(4)学生能够进行退课操作,包括退选已选的课程;(5)学生能够查看课程成绩、考试信息等。
三、系统设计1. 系统架构设计:(1)选课系统采用B/S架构,即浏览器/服务器结构,学生和教师都可以通过浏览器访问系统;(2)系统后台采用MySQL数据库进行数据存储;(3)系统前台使用HTML、CSS、JavaScript进行开发。
2. 模块设计:(1)课程信息模块:包括课程的发布、浏览、修改和删除等功能;(2)选课模块:包括学生的选课和退课功能;(3)成绩管理模块:包括教师对学生成绩的录入和统计分析功能;(4)反馈模块:学生和教师可以在系统内进行交流和反馈。
3. 功能设计:(1)学生注册登录:学生需要先注册账号并登录系统才能进行选课操作;(2)选课流程优化:学生可以根据自己的兴趣和实际情况进行选课,并进行灵活调整;(3)成绩统计分析:教师可以根据系统提供的成绩统计功能,对学生成绩进行全面分析;(4)平台信息推送:系统可以根据学生和教师的需求,进行相关信息推送,如课程变更、考试安排等。
四、系统实现1. 系统开发工具:(1)后台开发:使用Spring Boot进行后台服务开发;(2)前端开发:使用Vue.js进行前端界面开发;(3)数据库管理:使用MySQL进行数据管理。
2. 系统测试:(1)功能测试:测试系统的各项功能是否正常运行;(2)兼容性测试:测试系统在不同浏览器和设备上的兼容性;(3)性能测试:测试系统的性能是否稳定;3. 系统部署:系统部署在高校的教学管理平台上,学生和教师可以通过互联网访问系统进行选课操作。
Android选课系统课程设计
Android选课系统课程设计一、课程目标知识目标:1. 学生能理解Android选课系统的基本原理和功能模块。
2. 学生掌握使用Android Studio进行移动应用开发的基本操作和技巧。
3. 学生了解SQLite数据库在Android应用中的使用方法,能实现数据的增、删、改、查功能。
技能目标:1. 学生能独立完成Android选课系统的需求分析,设计出合理的技术方案。
2. 学生通过实践操作,掌握Android开发环境搭建,能编写规范的代码实现选课系统的功能。
3. 学生学会运用所学知识解决实际项目中遇到的问题,具备一定的调试和优化能力。
情感态度价值观目标:1. 培养学生对移动开发领域的兴趣和热情,激发创新意识。
2. 培养学生团队合作精神,提高沟通协调能力。
3. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
本课程旨在帮助学生在掌握Android移动应用开发技术的基础上,结合实际项目需求,独立设计并实现一个选课系统。
课程内容充分考虑了学生的年级特点,注重知识深度和实用性,旨在提高学生的实际操作能力和解决问题的能力。
通过本课程的学习,使学生能够在实践中不断提高自身的技术水平和综合素质。
二、教学内容1. Android基础知识回顾:介绍Android系统架构,回顾Activity、Fragment、Intent等基本概念。
2. Android Studio开发环境搭建:指导学生安装配置Android Studio,熟悉开发工具的使用。
- 章节关联:教材第1章 Android开发基础3. 需求分析与设计:讲解如何进行选课系统的需求分析,设计系统功能模块。
- 章节关联:教材第2章 软件需求与分析4. 界面设计与实现:教授UI设计原则,指导学生使用XML布局文件设计美观易用的界面。
- 章节关联:教材第3章 Android界面设计5. SQLite数据库操作:介绍SQLite数据库的使用,实现选课系统中数据的存储与管理。
学生选课系统设计报告
大理学院数学与计算机学院《数据库系统设计》课程设计报告班级:2012级计算机科学与技术1班学号:201211514姓名:刘秀珍系统名称:学生选课系统总分:实验报告内容及撰写要求:一、需求分析程序的主要功能描述,可以用文字、框图、用例等方式。
参考《数据库系统设计任务书》附录中的内容来进行设计报告的撰写。
主要应当包含分析的过程及分析后得到的数据流图和数据字典。
二、数据库设计2.1 数据库概念设计实体关系模型设计,创建分ER图和总体ER图,并描述总体E-R图合并时的问题解决。
2.2数据库的逻辑设计根据概念设计结果,创建数据库的逻辑模型,建立在具体DBMS下(SQL SERVER 2005)的表结构,并根据规范化理论对表结构进行优化调整。
同时,根据应用需求,创建数据库系统所需的外模式(视图)、模式和内模式(索引)等,此外,应当根据需求,建立数据完整性约束(实体完整性,参照完整性和用户自定义完整性)。
三、系统实现3.1 数据库访问1)数据访问类及实现代码2)SQL语句3.2 业务逻辑层类及代码描述业务流程、数据处理功能的模块代码3.3表示层的实现可以用界面截图及其实现类及核心代码描述四、总结一、需求分析1.1背景全校性选修课开设的目的在于扩大学生的知识面、加强学生素质教育、培养复合型高级人才,具有不可替代的重要性。
随着教育改革的不断深入和素质教育的加强,学分制的实施,选修课在一个学生的培养计划中占的比重将越来越大。
网上选课系统的出现使同学们能够更加自主、便捷、准确的进行选课。
但是,由于一般高校中的学生都比较多,因此带来了诸多如信息管理等问题,鉴于需要将学生信息、选课信息等信息数字化以便于管理维护,我们便想到了利用数据库能够比较良好地解决此类问题,由此下面我将设计出一个学生选课系统以供参考。
1.2系统设计要求:设计出一个学生选课数据库系统的简要要求如下:1)设计要求①建立相应的数据库及相关的表、属性、约束、规则、默认等;②输入相应的记录(每个表不少于20条记录);③编写进行数据管理的存储过程。
课程设计报告--学生选课管理系统
数据库课程设计报告学生选课管理系统班级:10软件本2成员:常东亚 100913010彭红明 100913028章鑫 100913050目录一、课程设计任务和目的 (2)二、需求描述 (2)三、系统总体设计 (3)1.系统架构设计 (3)2.功能模块设计 (3)3.数据库设计(概要设计) (5)(1)E-R图 (5)(2)关系模式 (5)(3)数据库管理系统 (6)(4)数据库命名 (6)(5)数据库表 (6)四、系统界面设计 (11)1、用户登录账号和密码 (11)2、窗体功能描述 (12)3、页面/窗体关系结构图 (16)五、系统实现技术小结 (16)六、课程设计体会 (19)七、系统主要源程序清单 (20)一、课程设计任务和目的完成学生选课管理系统的开发并掌握SQL数据库的建立和使用。
二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。
三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境: windows XP 、jdk1.6(3)开发环境:硬件平台:CPU:P41.8GHz内存:256MB以上软件平台:windows XP SP3 、jdk1.6操作系统:WindowsXP数据库:SQL Server 2000、SQLServer SP4补丁开发工具:Eclipse 3.3分辨率:1024*7682.功能模块设计各模块功能:● 登录界面:登录界面是有帐号,密码两个JTextField ,管理员帐号一字母A开头,教师帐号一字母T 开头,学生帐号以字母S 开头,登录帐号或密码输入错误会弹出相应的提示对话框。
学生选课管理系统课程设计报告报告
学生选课管理系统东北大学**分校**:*国锋**:3090908指导教师:朱世敏日期:2022 年06 月19 日目录0一、总体说明1二、功能模块构造图2三、变量说明(公有、私有、本地变量3四、数据库、表的设计及描述41.数据库:42. 〔1〕管理员表:4〔2〕学生根本信息表:4〔3〕课程表:4〔4〕学生成绩表:4〔5〕密码表:4五、操作说明4六、各模块代码及结果图6封面:6登录:7主界面:8可选课程信息表单:8学生选课记录查询8记录修改下的表单:9学生选课信息:9课程信息修改表单:9报表:9密码修改:10菜单:10七、课程设计总结:11总体功能介绍:1、在学生选课信息管理系统中,先打**面,两秒后自动关闭并跳转至登录界面;2、首先输入用户名和密码等登录信息,点击确定登录进入主界面,点击退出登录,退出系统;3、登陆成功,进入主界面以后,有以下模块“数据查询〞、“记录修改〞、“报表〞、“密码安全〞。
在“数据查询〞中,包含“课程查询〞;在“记录修改〞中包含“课程和学生选课修改〞和“学生选课〞;在“报表〞中包含以下两项子菜单:“学生选课情况〞,“可选课程〞;在“密码安全〞中有“密码修改〞子菜单。
4、进入主界面1、在“数据查询〞下的“课程查询〞在其中输入中输入相应课程名称可以显示已将选课的内容,早课程信息上边的框中输入相应的课程名称可以查询该门课的课程信息;也可以在“数据查询〞中的“选课记录查询〞中可以通过按照“**〞对学生的选课记录发展统计;2、在“记录修改〞的下拉菜单中的“课程和学生选课修改〞中可以对课程信息发展修改,主要包括添加、删除、和退出等;在该下拉菜单下的“学生选课〞子菜单中可以添加选课信息和删除选课信息;3、“报表〞的下拉菜单中有“学生选课情况〞和“课程信息〞的报表,通过这两*报表可以查看和打印学生的选课情况,以及所有的课程信息内容,并可以按照**、班级、系别显示学生的选课情况;4、在“密码安全〞下拉菜单中有“密码修改〞通过“密码修改〞可以使原用户还可通过密码修改来不定期修改自己的原始密码,保证了数据的真实性和安全性。
学生选课系统概要设计分析报告
学生选课系统概要设计分析报告学院:数学计算机学院组长:马琴组员:许慕霄、伏敏润、王佩军1.引言1.1编写目的每学期的课程都是学校安排的,学生没有选择的自由,而且课程的安排由于各方面诸多的原因经常有不适之处,尤其是先行课的问题。
另外,每学期考完试,同学们都要一次又一次的往系里跑,大家挤在一个小小的布告栏前面,在几张A4纸上寻找自己的名字和成绩。
虽然从去年开始,全学校也改成了“学分制”,但整个选课过程的管理从我们学生的角度来看,变得更加混乱。
同学们不知道每学期有什么课可以选,哪些是选修,哪些是必修,哪些是专业课;也不确定每门课多少学分,自己已经修了多少学分;更不用说考虑一下哪门课要先学,哪门课要后学,哪些课属于一系列。
所以说,大部分同学都是为了“选课”而选课,完全没有实现鼓励同学发展个性,学各自之所爱的效果。
不仅如此,每当选课的时候,同学们忙,老师更忙,学校和系里都需要投入大量的人力、物力对整个选课过程进行管理。
随着科学技术的发展,计算机已经是日常生活中不可或缺的工具,将学生选课系统从人工管理方式转变成为计算机软件控制。
具有检索迅速、查找方便、可靠性高、存储量达、保密性好、寿命长、成本低等巨大优点。
如今,学生选课系统已成为日常教学工作中必不可少的管理软件,可对学生信息、选修课程、科目成绩进行各方面的管理,为用户提供充足的信息和快捷的查询、修改手段。
选课管理系统。
既面向教务处,又面向教师和学生。
不同的人,不同的身份操作的权限也不同。
作为教师,他可以向教务处申请增加、删除、修改课程信息,并随时了解选修本课的学生名单,还可以输入并分析考试成绩。
作为教务处管理员,它的权限是最宽的。
他可以对教师提出的课程设置申请进行审批,同时对教学进行安排(包括时间和教室分配、选课结果管理)。
作为学生,他可以查询可以选什么课,已有多少学分,还差多少学分。
最后进行选课,在学期末还可以随时进行成绩查询。
现筹划一学生选课系统管理软件以代替人工管理方式,最大程度的满足各方面用户的需求。
学生选课系统数据库设计报告
学生选课系统数据库设计报告学生选课系统数据库设计报告数据库设计是学生选课系统的关键部分,它的设计需要考虑到系统的需求和功能,以确保数据的一致性、完整性和安全性。
下面是学生选课系统数据库设计报告的详细内容。
1. 数据库需求分析首先,我们需要分析学生选课系统的需求,明确系统的功能和数据结构。
根据需求分析,学生选课系统的主要功能包括:- 学生管理:包括学生信息的录入、修改和删除;- 课程管理:包括课程信息的录入、修改和删除;- 选课管理:包括学生选课和退课的功能;- 成绩管理:包括学生成绩的录入和查询。
2. 数据库设计基于上述需求分析,我们可以设计学生选课系统的数据库结构。
数据库包含以下几个主要的表格:- 学生表(students):用于存储学生的基本信息,如学生ID、姓名、性别、年龄等;- 课程表(courses):用于存储课程的信息,如课程ID、课程名称、授课教师等;- 成绩表(grades):用于存储学生的成绩信息,包括学生ID、课程ID、成绩等;- 选课表(enrollments):用于存储学生的选课信息,包括学生ID、课程ID等。
3. 数据库表格设计根据上述需求和数据库结构设计,我们可以详细定义每个表格的字段和属性。
下面是每个表格的设计:- 学生表(students):包括学生ID(primary key)、姓名、性别、年龄等字段;- 课程表(courses):包括课程ID(primary key)、课程名称、授课教师等字段;- 成绩表(grades):包括学生ID(foreign key)、课程ID(foreign key)、成绩等字段;- 选课表(enrollments):包括学生ID(foreign key)、课程ID (foreign key)等字段。
4. 数据库关系设计学生表、课程表、成绩表和选课表之间存在一定的关系,可以用关系模型来表示。
下面是数据库关系设计的具体描述:- 学生表(students)和选课表(enrollments)之间是一对多的关系,一个学生可以选修多门课程,一个课程也可以被多个学生选修;- 学生表(students)和成绩表(grades)之间是一对多的关系,一个学生可以有多条成绩记录,一门课程也可以有多个学生的成绩记录;- 课程表(courses)和成绩表(grades)之间是一对多的关系,一门课程可以有多个学生的成绩记录。
学生选课系统_课程设计
学生选课系统_课程设计一、课程目标知识目标:1. 学生能够理解学生选课系统的基本概念和功能,掌握系统操作的基本流程。
2. 学生能够描述选课系统的结构,了解不同课程分类和课程设置的原则。
3. 学生能够掌握运用选课系统进行课程查询、选择、评价的基本方法。
技能目标:1. 学生能够独立完成选课系统的登录、个人信息维护等基本操作。
2. 学生能够利用选课系统进行有效的课程筛选,提高选课效率。
3. 学生能够通过选课系统与其他同学进行交流、分享课程心得,提升信息获取和处理能力。
情感态度价值观目标:1. 培养学生对课程选择的责任感和自主性,激发学生主动参与课程学习的兴趣。
2. 培养学生尊重他人选择、合作分享的精神,提高团队协作能力。
3. 培养学生关注教育信息化发展,树立正确的信息观念,增强网络安全意识。
课程性质:本课程为实用技能类课程,结合学生年级特点和实际需求,以提高学生选课效率和自主学习能力为目标。
学生特点:学生处于信息时代,具备一定的计算机操作能力,对新鲜事物充满好奇,但部分学生可能对课程选择存在依赖心理。
教学要求:教师应注重启发式教学,引导学生主动探索选课系统,关注学生个体差异,提供有针对性的指导,确保课程目标的实现。
通过本课程的学习,使学生能够具备独立、高效地使用学生选课系统的能力,为后续学习打下坚实基础。
二、教学内容1. 选课系统概述:介绍选课系统的定义、作用和重要性,使学生了解选课系统在现代教育中的应用。
- 教材章节:第一章 走进选课系统2. 选课系统的结构及功能:讲解选课系统的模块划分、功能特点,指导学生掌握系统操作方法。
- 教材章节:第二章 选课系统的结构与功能3. 选课操作流程:详细讲解如何登录系统、查询课程、选择课程、提交选课结果等步骤,培养学生独立操作选课系统的能力。
- 教材章节:第三章 选课操作流程4. 课程分类与评价:介绍课程分类原则、评价方法,帮助学生更好地进行课程选择。
- 教材章节:第四章 课程分类与评价5. 选课策略与技巧:分享选课过程中的经验和技巧,提高学生选课效率。
学生选课系统《软件工程》课程设计很详细的!
详细版!目录一、问题定义 (5)1.1问题的定义 (5)1.2 系统要解决的问题 (5)二、可行性研究 (6)2.1 引言 (6)2.1.1目的 (6)2.1.2背景及功能 (6)2.1.3 参考资料 (6)2.2 可行性研究的前提 (7)2.2.1 要求 (7)2.2.2 目标 (7)2.2.3 条件、假定和限制 (7)2.2.4 进行可行性研究的方法 (7)2.3 所建议的系统 (8)2.3.1 对所建议系统的说明 (8)2.3.2 处理流程和数据流程 (8)2.3.3 工作负荷 (9)2.3.4技术条件方面的可行性 (10)2.4 社会因素方面的可行性 (10)2.4.1 法律方面的可行性 (10)2.4.2 使用方面的可行性 (10)2.5 经济可行性 (10)2.6 结论 (10)三、项目开发计划 (11)3.1 引言 (11)3.1.1 编写目的 (11)3.1.2 背景 (11)3.1.3 参考资料 (11)3.2 项目概述 (11)3.2.1 工作内容 (11)3.2.2 产品 (12)3.2.4 完成项目的最迟期限 (13)3.2.5 关键问题及支持的系统条件 (13)3.3 支持条件 (13)四、需求分析 (14)4.1 系统需求 (14)4.2. 功能需求 (14)4.3业务流程图 (14)五、概要设计 (16)5.1 基本设计概念和处理流程 (16)5.2. 系统层次模块图 (16)5.3. 系统层次模块图 (16)5.4. 模块设计 (17)六、数据库设计 (18)6.1 引言 (18)6.1.1 编写目的 (18)6.1.2 背景 (18)6.1.3 定义 (18)6.1.4 参考资料 (19)6.2 外部设计 (20)6.2.1 标识符和状态 (20)6.2.2 使用它的程序 (20)6.2.3 约定 (20)6.2.4 专门指导 (20)6.2.5 支持软件 (20)6.3 结构设计 (21)6.4 运用设计 (25)6.4.1 数据字典设计 (25)6.4.2 安全保密设计 (25)七、详细设计 (26)7.1 引言 (26)7.1.1 编写目的 (26)7.1.2 背景 (26)7.1.3定义 (26)7.1.4 参考资料 (26)八、测试报告 (27)8.1 引言 (27)8.1.1 编写目的 (27)8.1.2 定义 (27)8.1.3 参考资料 (27)8.2 测试概要 (28)8.3 测试结果及发现 (31)8.3.1 测试具体实施 (31)8.4 对软件功能的结论 (32)8.4.1 用户登录模块 (32)8.5 分析摘要 (32)8.5.1 能力 (32)8.5.2 评价 (32)8.6 测试资源消耗 (32)九、用户手册 (33)9.1 引言 (33)9.1.1 编写目的 (33)9.1.2 定义 (33)9.1.3 参考资料 (33)9.2 用途 (33)9.2.1 功能 (33)9.2.2 性能 (34)9.2.3 安全保密 (34)十、附录 (36)10.1 数据库的封装代码DB.java (36)10.2 选课系统登陆界面代码Login.java (37)10.3 选课系统学生选课界面代码Student.java (41)10.4 学生选课情况查询代码Query.java (45)10.5 学生用户登录密码的修改代码Modify.java (48)10.6 教师查询学生选课的情况代码Teacher.java (51)10.7 超级管理员查询学生选课的情况代码Administrator.java (53)一、问题定义1.1问题的定义学生选课系统:也称学生课程选修制,即允许学生对学校所开设的课程有一定的选择自由,包括选择课程、任课教师和上课时间,选择适合自己的学习量和学习进程。
学生选课系统设计与实现开题报告
在开发过程中,我们将遵循瀑布模型进行迭代开发,确保每个阶段的代码质量和功能完整性。在测试阶段,我们将进行单元测试、集成测试和系统测试,确保系统的稳定性和安全性。
技术路线
一、前端技术栈
Vue.js是一个用于构建用户界面的JavaScript框架,具有响应式数据绑定和组件化开发的特点。它提供了直观的模板语法和组件系统,使得开发者能够更高效地构建用户界面。在选课系统中,Vue.js将用于构建用户界面,如课程列表展示、选课操作等。
模块三:选课管理模块
学生选课的功能,包括选课确认和取消功能
显示已选课程的功能,以便管理员查看学生选课情况
模块四:系统管理模块
管理员的登录和权限管理功能
日志记录和数据分析功能,用于监控系统运行状况和性能
[IV、数据库设计]
设计数据库表结构,包括用户表、课程表、选课表等
描述表之间的关系和数据流路径
考虑数据的安全性和性能优化问题
三、社会可行性
从社会可行性方面来看,学生选课系统能够为学生、教师和管理者提供便利。首先,学生可以通过该系统了解课程信息、选择课程,这将大大提高选课的效率和透明度。其次,教师可以通过该系统发布课程信息、管理课程资料,这将提高教学效率和质量。最后,管理者可以通过该系统进行课程管理、学生管理、成绩管理等,这将提高管理效率和质量。此外,该系统的推广和应用还有助于推动教育信息化的发展,提高教育资源的利用率和共享度。
3. 使用的数据库:MySQL
4. 前端技术:Vue.js
5. 环境:开发环境为Windows或Linux,运行环境为Web服务器(如Tomcat)。
6. 开发工具:Eclipse、IntelliJ IDEA等Java开发工具。
7. 运行平台:可在任何支持Java的平台上运行该系统。
软件工程课程设计报告--学生选课系统
1.概述1.1课题题目:学生选课系统1.2系统的主要目标:本系统目标是实现选课系统所需的各种基本功能,包括学生选课、退课功能和教师查看选修课程、提交课程成绩功能以及管理员添加学生、维护学生信息、成绩管理、添加教师、维护教师信息、维护选修课程,还有公用的修改密码等功能。
1.3 系统的开发环境及运行环境:操作系统:Windows XP Pro SP2建模工具:Rational Rose 2003数据库系统:SQL Server2000开发工具:Visual Studio 2005Web服务器:IIS+ 2.0平台2.系统需求分析学生选课系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户,也即是三类用户角色。
(1)学生用户是主要的需求者,主要需求功能是查询可选课程、查看自己选课情况及进行选课、退课操作等;(2)教师用户主要需求功能是查看自己所教授的课程、课程有哪些学生选修、以及利用本系统提交学生的成绩;(3)管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。
在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。
在教师管理子模块中,实现对教师信息的添加、修改、删除、查询等操作。
在课程管理子模块中,实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。
本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。
通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。
2.1用例图图2-1 学生选课系统用例图用例图说明:(1)系统的外部角色有:学生用户、教师用户和管理员。
学生选课系统课程设计报告
学生选课系统课程设计报告学生选课管理系统学生选课管理系统摘要随着社会的发展,学生的人数和课程的种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,为此,我们开发了学生选课管理系统。
本人结合学生选课管理的实际需要,完成了对学生选课管理系统的需求分析、功能模块划分、数据库模式分析等,并由此设计了后台数据库以及前台应用程序。
文中首先对课题背景,数据库基础理论和SQL语言进行了简单的讨论;接着,对系统前台开发工具PowerBuilder9.0,学生选课管理系统进行了详细分析,划分了具体的功能模块;最后,给出了学生选课系统应用程序的设计过程,以及每个功能模块的核心代码。
系统可以实现学生选课的一些重要功能,如:课程的添加、删除,信息查询、选课、生成课表,以及学生选课管理人员、用户个人信息的维护等。
关键词管理系统;数据库;PowerBuilder9.0;SQL Server 2000目录摘要 (I)ABSTRECT ..................................... 错误!未定义书签。
1 绪论 (3)1.1 课题的背景 ........................................... 3 1.2 课题的设计 ........................................... 2 1.3 本文的结构 (2)I学生选课管理系统2 相关知识基础 (3)2.1 数据库的基础知识 .................................... 3 2.2 关系型数据库 ......................................... 5 2.3 PowerBuilder9.0开发工具简介 ....................... 7 2.4 SQL概述 .............................................. 8 2.5 本章小结 ............................................ 11 3 系统分析 (13)3.1 系统分析 (13)3.1.1 用户要求 ........................................ 13 3.1.2 业务流程分析 .................................... 13 3.1.3 系统实体E-R图分析 (14)3.2本章小结 ............................................. 15 4 系统实现 (16)4.1 创建一个工作空间和应用程序对象 ................... 16 4.2创建数据库表 ........................................ 16 4.3创建主窗口 ........................................... 17 4.4 创建主菜单 .......................................... 18 4.5系统管理模块的实现 (19)4.5.1创建课程查询窗口 ................................. 19 4.5.2 创建添加选课窗口 ................................ 21 4.5.3 创建生成课表窗口 ................................ 25 4.5.4 创建个人信息窗口 ................................ 27 4.5.5 生成课表窗口的设计 .............................. 28 4.5.6 创建登录窗口 .................................... 30 4.5.7 splash界面的实现 (31)结束语 ....................................................... 33 致谢 ....................................... 错误!未定义书签。
学生选课管理系统设计
学生选课管理系统设计课程设计选题考虑到学生选课这个时间与我们大学生活是如此贴近,兵器额在我们平时选课时也经常出现一些不足,所以我选择“学生选课管理系统”这个课题。
除了他比较贴近生活之外,这个项目也会让我对数据库有更新一步的认识与巩固,对身边的各种选课系统有一个更直观的了解。
项目背景随着科技的发展,高科技技术的不断开发,数据的处理在我们的生活中尤为重要。
教育的不断改革和素质教育的不断加强,学分制的实施,选修课在一个学生的培养计划中的比重越来越大。
现在我们选课以及成绩查询都是在网上进行的,这个对于学生来说更加的自主、便捷。
但是由于一般高校的学生比较多,因此就带来的诸多如信息管理等问题。
鉴于需要将学生信息、选课信息等信息数字化以便于维护管理,我们便想到了利用数据库更加准确的解决此类问题。
所以我决定设计一个适用于高校学生选课系统一共参考并且更进一步的了解高校选课的流程以及数据的保存。
课设报告编写目的无纸化办公的模式现在已经普遍存在,信息自动化处理以及网络式信息交互方式已经普及并且被人们广泛应用,计算机管理学生信息在各大高校都在积极进行,也是高校管理工作的重要内容之一。
网上选课与传统的选课方式相比更加的智能便捷并且节约资源,也增加了学生学习过程中的自主权。
学生选课系统无疑是一个比较现代化的教学技术,并且受到人们的重视,是学校管理中不可获取额的一部分。
有了学生选课可系统不仅方便了学生、教师,更重要的是学校在管理数据方面会更加的方便以及准确。
学生选课系统使选课管理工作规范化、系统化、程序化,避免数据丢失,提高信息处理的速度,能够准确及时的查询及更改学生的选课情况。
编写课设报告的目的就在于将学生选课管理系统的设计与实现以及管理维护等工作更加有条理的呈现出来,对开发设计学生选课系统的过程进行记录并且概括,帮助更好的理解、操作、运用学生选课系统。
课设报告的组织课设报告从学生选课系统的需求分析到数据库的设计,包括逻辑设计、物理设计等,在倒最后的实现与维护一一呈现出来,包括最初的设计理念,数据库具体觉得建立以及数据的输入、管理及更新。
选课系统课设报告
选课系统课设报告全文共四篇示例,供读者参考第一篇示例:选课系统课设报告一、引言选课系统是一个学校管理的重要组成部分,它能够帮助学生根据自己的兴趣和需求选择适合自己的课程,同时也能够有效地帮助学校管理课程资源和教学计划。
本课设报告将详细介绍我们设计的选课系统,包括系统的功能设计、架构设计、数据库设计等方面,旨在帮助学校更好地管理和组织课程资源。
二、系统的功能设计1. 学生模块(1)学生登录:学生可以通过输入账号和密码登录选课系统,以便查看课程信息和进行选课操作。
(2)课程查询:学生可以通过系统查询课程信息,包括课程名称、教师、上课时间等详细信息。
(3)选课操作:学生可以根据自己的需求选择适合自己的课程,并进行选课操作。
(4)课程评价:学生可以对已修课程进行评价,包括教学质量、课程内容等方面。
2. 教师模块(2)课程管理:教师可以管理自己的课程信息,包括添加课程、修改课程内容等操作。
(3)学生成绩:教师可以查看学生的成绩情况,以便及时调整教学计划。
3. 管理员模块(3)学生管理:管理员可以管理所有学生的信息,包括添加新学生、删除学生信息等操作。
4. 系统设置(1)个性化设置:学生和教师可以根据自己的需要进行个性化设置,如修改密码、更改头像等。
(2)通知功能:系统可以向学生、教师发送通知信息,包括选课通知、考试通知等。
我们选用了B/S架构设计选课系统,即浏览器/服务器架构。
用户通过浏览器访问系统,系统通过后台服务器进行数据处理和相应操作。
这种架构有以下优点:1. 用户友好性:B/S架构模式简单直观,用户只需通过浏览器即可访问系统,无需安装额外的客户端软件。
2. 数据安全:系统的数据都存储在后台服务器上,避免了数据泄露和信息丢失的风险。
3. 维护方便:B/S架构可以集中管理后台服务器,对系统的维护和更新更加方便快捷。
我们设计了以下几张数据库表来存储系统的数据信息:1. 学生表:用来存储学生的基本信息,包括学号、姓名、性别、年龄等字段。
学生选课管理系统课程设计报告
学生选课管理系统课程设计报告一、引言学生选课管理系统是现代高校管理系统中不可或缺的一部分,它为学生提供了方便、高效的选课流程,并为学校管理者提供了便捷的课程管理工具。
本文将介绍一个基于Web的学生选课管理系统的设计与实现。
二、系统概述学生选课管理系统主要包括学生信息管理、课程管理、选课管理和成绩管理等模块。
学生可以通过系统查询课程信息、选课、查看成绩等功能,教师可以管理课程、录入成绩等操作。
三、需求分析1. 功能需求•学生注册登录:学生通过注册信息登录系统;•课程信息管理:管理员发布课程信息,包括课程名称、授课教师、开课时间等;•选课管理:学生可以根据个人需求选择课程;•成绩管理:教师录入学生成绩;•系统管理:管理员管理用户信息和系统设置。
2. 非功能需求•安全性:用户信息加密存储,确保数据安全;•可靠性:系统稳定、可靠;•界面友好:用户操作简单、界面友好。
四、系统设计1. 数据库设计•学生表:包括学生ID、姓名、密码等字段;•课程表:包括课程ID、名称、教师等字段;•选课表:记录学生选课信息。
2. 系统架构•前端:使用HTML、CSS、JavaScript实现用户界面;•后端:使用Java语言、Spring框架实现系统逻辑;•数据库:使用MySQL数据库存储数据。
五、系统实现1. 学生注册登录学生填写注册信息,系统验证信息并存储用户信息,用户登录时验证身份。
2. 课程信息管理管理员发布课程信息,包括课程名称、授课教师、上课时间等。
3. 选课管理学生登录系统后可以查看课程信息,选择感兴趣的课程进行选课。
4. 成绩管理教师录入学生的成绩并保存到数据库,学生可以查看个人成绩。
六、系统测试系统测试主要包括功能测试、性能测试、安全性测试等,确保系统能够正常运行,并符合需求和非功能要求。
七、总结与展望通过本次学生选课管理系统的设计与实现,实现了学生选课、教师录入成绩等基本功能。
未来可以进一步完善系统的功能,提高系统的可扩展性和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************实践教学*******************兰州理工大学计算机与通信学院2011年春季学期C程序设计课程设计题目:学生选课系统专业班级:软件一班姓名:黄锋学号:10240506指导教师:王连相成绩:摘要学生选课系统是C语言应运的一个简单实例,它能实现选课信息的输入、删除、查找、保存等功能。
该系统由七个模块组成,各模块的完成分别由指针、数组、链表等实现,最后通过主函数将各个模块加以联结组成此简单的学生选课管理系统。
该系统有查找方便、可靠性高、存储量大、保密性好等优点,是一个教育单位不可缺少的部分。
关键词:C语言;学生;信息;选课目录一、需求分析 (1)二、总体设计 (2)三、详细设计 (3)1、数据定义 (3)2、算法流程图 (4)四、编码 (7)五、测试 (9)六、设计总结 (9)致谢 (14)参考文献 (15)一、需求分析经过简单的调研分析,可以基本确定学生选课系统主要用来实现对选课信息的输入、删除、保存、查找等功能。
1·录入课程信息教务系统对课程进行安排。
2·课程管理用户可以查看新增课程和已删除课程。
3·录入学生信息学生可以输入自己的基本信息。
4·学生信息管理系统可以对学生输入的信息进行管理,同时用户也可以进行自我信息更改。
5·学生选课学生可以查询已选课程和可选课程,然后进行选课。
6·系统信息查看及及存储用户可以查看课程信息和学生信息以及及存储自己信息。
7·退出系统用户完成在学生成绩管理系统的一系列操作后要离开,则就需退出系统。
二、总体设计课程管理学生选课系统录入课程信息录入学生信息学生选课学生信息管理系统信息查看退出系统三、详细设计1、数据定义struct couse * head1;struct student * head2;struct couse//课程信息结构体{int num1;char name1[20];int score;int nelepeo;//课程已选人数int Melepeo;//课程人数上限struct couse * next;};struct student//学生信息结构体{int num2;char name2[20];int nelenum[50];//已选课程编号int nelen;//已选课程数量struct student * next;}; FILE *fp; //文件指针变量int i,j // 定义变量i,jchar name[4],code[7];//定义数组变量2、算法流程图1)保存函数Save()的算法流程图FILE *fp;(fp=fopen(outfile,"wprintf("can not openprintf("\nSavingp!=NULLfwrite(p,sizeof(SALARfclose(fp);保存函数Save()的算法流程图如图2所示注:out 为输出函数。
图2 查找的算法流程图2)载入函数load 流程图find 函数out 函数输入i 的值sep 函数J=-1输出date is notfind输出姓名,学号,成绩是否图3 load 函数的流程图load 函数用“rb”方式打开“stu_list”文件fread(&stu[i],sizeof(struct student_type))out 函数关闭文件i<SIZE否是四、编码第一步:分析问题根据课题,调研分析此程序要实现那些功能。
并确定程序的总体设计方案。
第二步:画出程序的基本轮廓根据程序的总体设计方案画出程序的流程图,把一个较为复杂的问题拆分,也使程序的功能较为直观的呈现出来。
第二步:实现该程序把整个问题拆分为若干个子模块,然后确定每个模块一个子功能。
五、测试程序的主界面·录入课程界面课程管理界面录入学生信息界面学生信息管理界面学生选课界面系统信息查看及存储界面六、设计总结本期课设终于完成了,也许是第一次做课设,经验不足的缘故吧,总的感觉就是难。
课设前期无从下手,经过知道老师的讲解才对这次课设有了初步的了解。
课设虽然完成,但其中还有许多缺陷,比如源代码编写较短,因而系统功能简单;还有就是虽然有查找功能,但其中有漏洞,不能确定的查找出某个学生的信息,查找只是一个大体的范围。
这些都是本次课设的不足之处。
当然通过这次课设,我收获还是很大的,虽然这次的课设,程序不是完全由我们自己编写的,只是通过把一个相似的例子加以修改得到的。
这些程序看起来比较容易,但要程序实现要求的几个功能却不容易。
而且要看懂每一个函数也不是十分容易的。
当然在修改程序的过程中也收获了许多以前忽略的东西。
在修改的过程中巩固了基础,认识了自己以前常犯的错误,也发现了自己的不足之处。
当然通过这次课程设计,也增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识。
在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。
通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
致谢紧张又忙碌的课设学习终于结束了,在本次课设中我们也取得了很大的成就。
在此衷心感谢学院安排这次课设,让我们又多了一次交流学习的机会,更好的巩固了所学知识,拓展了知识面。
本次课设能取得成功,要感谢学院老师的帮助以及张墨逸老师的热心指导。
在课设期间,指导老师帮助我们分析思路,查找错误,修正不足,才使得我们的系统做得更加完善。
其次是要感谢和我同组的同学,感谢他们对我学习的帮助,对我在期间工作的指导与支持。
参考文献1.姜灵芝,余健. C语言课程设计案例精编.北京:清华大学出版社,2008 2.王新,孙雷. C语言课程设计.北京:清华大学出版社,20093.游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.北京:清华大学出版社,20114.王连相.C/C++程序设计上机指导与测试. 北京:中国铁道出版社,2006 5.C语言函数手册,机械工业出版社,1999附录:#include<stdio.h>#include<stdlib.h>int N1,N2,kk1,kk2,kk3;struct couse * head1;struct student * head2;struct couse//课程信息结构体{int num1;char name1[20];int score;int nelepeo;//课程已选人数int Melepeo;//课程人数上限struct couse * next;};struct student//学生信息结构体{int num2;char name2[20];int nelenum[50];//已选课程编号int nelen;//已选课程数量struct student * next;};void Ms(){for(kk1=0;kk1<1100;kk1++)for(kk2=0;kk2<1200;kk2++)for(kk3=0;kk3<1200;kk3++);}void keyboardc()//录入课程子函数(从键盘录入){struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse));printf("课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo); p1->nelepeo=0;head1=NULL;while(p1->num1!=0){N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse));scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);p1->nelepeo=0;}p2->next=NULL;}void filec()//录入键盘子函数(从文件录入){FILE * fp;char filepath[20];struct couse *p1,*p2;N1=0;printf("输入要读入的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(struct couse*)malloc(sizeof(struct couse));fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); head1=NULL;while(!feof(fp)){N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse));fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo); }p2->next=NULL;}void inputc()//录入课程主函数{int i;printf("\t\t\t录入课程信息\n");printf("\n1.从键盘录入\n");printf("2.从文件录入\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboardc();break;case(2):filec();break;case(3):break;}}void insertc(struct couse *incouse)//课程管理子函数(增加课程) {struct couse *p0,*p1,*p2;p1=head1;p0=incouse;if(head1==NULL){head1=p0;p0->next=NULL;}else{while((p0->num1 > p1->num1) && (p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num1 <= p1->num1){if(head1==p1) head1=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N1=N1+1;}void delc(int num1)//课程管理子函数(删除课程)struct couse *p1,*p2;if(head1==NULL){printf("\n没有课程,无法删除!\n");goto end;}p1=head1;while(num1!=p1->num1 && p1->next!=NULL){p2=p1;p1=p1->next;}if(num1==p1->num1){if(p1==head1) head1=p1->next;else p2->next=p1->next;printf("已删除该编号课程!\n");N1=N1-1;}else printf("无该编号的课程!\n");end:;}void managementc()//课程管理主函数{struct couse * incouse;int i,num1;printf("\t\t\t课程管理\n");printf("1.新增课程\n");printf("2.删除课程\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct couse *)malloc(sizeof(struct couse));printf("课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo); incouse->nelepeo=0;break;}case(2):{printf("请输入要删除课程的编号:\n");scanf("%d",&num1);delc(num1);break;}case(3):break;}}void keyboards()//录入学生信息子函数(从键盘录入) {int i;struct student *p1,*p2;N2=0;p1=p2=(struct student *)malloc(sizeof(struct student)); printf("学生学号\t学生姓名\n");scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;head2=NULL;while(p1->num2!=0){N2=N2+1;if(N2==1)head2=p1;else p2->next=p1;p2=p1;p1=(struct student * )malloc(sizeof(struct student)); scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;}p2->next=NULL;}void files()//录入学生信息子函数(从文件录入){int i=0;FILE * fp;char filepath[20];struct student *p1,*p2;printf("输入要读入的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"r"))==NULL){printf("找不到%s文件!\n",filepath);exit(0);}p1=p2=(struct student*)malloc(sizeof(struct student));fread(p1,sizeof(struct student),1,fp);head2=NULL;while(!feof(fp)){i=0;N2=N2+1;if(N2==1)head2=p1;else p2->next=p1;p2=p1;p1=(struct student * )malloc(sizeof(struct student));fread(p1,sizeof(struct student),1,fp);}p2->next=NULL;}void inputs()//录入学生信息主函数{int i;printf("\t\t\t录入学生信息\n");printf("\n1.从键盘录入\n");printf("2.从文件录入\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboards();break;case(2):files();break;case(3):break;}}void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息) {struct student *p0,*p1,*p2;p0=incouse;if(head2==NULL){head2=p0;p0->next=NULL;}else{while((p0->num2 > p1->num2) && (p1->next!=NULL)) {p2=p1;p1=p1->next;}if(p0->num2 <= p1->num2){if(head2==p1) head2=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N2=N2+1;}void dels(int num2)//学生信息管理子函数(删除学生信息) {struct student *p1,*p2;if(head2==NULL){printf("\n没有该学生信息,无法删除!\n");goto end;}p1=head2;while(num2!=p1->num2 && p1->next!=NULL){p2=p1;p1=p1->next;}if(num2==p1->num2)if(p1==head2) head2=p1->next;else p2->next=p1->next;printf("已删除该学生信息!\n");N2=N2-1;}else printf("无该学号的学生!\n");end:;}void managements()//学生信息管理主函数{struct student * incouse;int i,num2;printf("\t\t\t学生信息管理\n");printf("1.新增学生信息\n");printf("2.删除学生信息\n");printf("3.返回主菜单\n");printf("请选择(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct student *)malloc(sizeof(struct student)); incouse->nelen=0;incouse->nelenum[0]=0;printf("学生学号\t学生姓名\n");scanf("%d%s",&incouse->num2,incouse->name2); inserts(incouse);break;}case(2):{printf("请输入要删除学生的学号:\n");scanf("%d",&num2);dels(num2);break;}case(3):break;}}void elect(struct student * s)//选课struct couse * p;int num1,i;printf("请输入要选课的编号:\n");scanf("%d",&num1);for(i=0;s->nelenum[i]!=0;i++);s->nelenum[i]=num1;(s->nelen)++;p=head1;while(p->num1!=num1) p=p->next;(p->nelepeo)++;}void cheak()//学生选课子函数(查询可选课程){char e;struct couse * c;struct student * s;int num2,i,j=0,t=0;printf("请输入你的学号:");scanf("%d",&num2);s=head2;while(s->num2!=num2 && s->next!=NULL) s=s->next;if(s->num2!=num2){printf("不存在你的信息,请进入主菜单录入你的信息!\n"); goto end;}c=head1;printf("你的可选课程编号:\n");while(c!=NULL){for(t=0,i=0;s->nelenum[i]!=0;i++){if(c->num1==s->nelenum[i]) t=1;}if(t==0 && (c->nelepeo!=c->Melepeo)){printf("%d\n",c->num1);j++;}c=c->next;}if(j==0)printf("你已选完所有课程,无法再多选!\n");goto end;}printf("选课(y/n)?:\n");getchar();e=getchar();i=0;while(e=='y'){elect(s);printf("继续选课(y/n)?:\n");getchar();e=getchar();}end:;}void back(struct student * p)//退课{struct couse * p1;int num1,i,j;printf("请输入你要退掉的课程编号:\n");scanf("%d",&num1);p1=head1;while(p1->num1!=num1) p1=p1->next;for(i=0;p->nelenum[i]!=num1;i++);for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1]; p->nelenum[--j]=0;(p1->nelepeo)--;printf("退课成功!\n");}void hcheak()//学生选课子函数(查询已选课程){char c;struct couse * p0;struct student * p;int num2,i,f=0;printf("请输入学号:\n");scanf("%d",&num2);p=head2;while(p->num2!=num2 && p!=NULL) p=p->next;if(p==NULL){printf("不存在你的信息,请回主菜单录入信息:\n"); goto end;}printf("已选课程编号:\n");if(p->nelenum[0]==0){printf("你还没选课!\n");goto end;}for(i=0;p->nelenum[i]!=0;i++){printf("%d\n",p->nelenum[i]);p0=head1;while(p0->num1!=p->nelenum[i]) p0=p0->next;f=f+p0->score;}printf("总学分:%d\n",f);printf("是否进行退课(y/n)?");getchar();c=getchar();while(c=='y'){back(p);printf("继续退课(y/n)?");getchar();c=getchar();(p->nelen)--;}end:;}void elective()//学生选课主函数{int i;printf("\t\t\t学生选课\n");printf("1.查询可选课程\n");printf("2.查询已选课程\n");printf("3.返回主菜单\n");printf("请输入(1~3):\n");scanf("%d",&i);switch(i)case(1):cheak();break;case(2):hcheak();break;case(3):break;}}void listc()//输出课程信息{struct couse * p;p=head1;printf("课程编号课程名称学分课程已选人数课程人数上限\n");while(p!=NULL){printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo); p=p->next;}}void lists()//输出学生信息{struct student * p;p=head2;printf("学生学号学生姓名已选课程数量\n");while(p!=NULL){printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);p=p->next;}}void intoc()//存储课程信息{FILE * fp;struct couse * p;char filepath[30];printf("输入课程信息要保存的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");exit(0);}p=head1;while(p!=NULL)fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo); p=p->next;}fclose(fp);printf("课程信息已保存在%s中!\n",filepath);}void intos()//存储学生信息{FILE * fp;struct student * p;char filepath[30];printf("输入学生信息要保存的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,"w"))==NULL){printf("\n保存失败!");exit(0);}p=head2;while(p!=NULL){fwrite(p,sizeof(struct student),1,fp);p=p->next;}fclose(fp);printf("学生信息已保存在%s中!\n",filepath);}void into()//存储信息{int i;printf("1.存储课程信息\n");printf("2.存储学生信息\n");printf("3.返回主菜单\n");printf("请输入(1~3)\n");scanf("%d",&i);switch(i){case(1):intoc();break;case(2):intos();break;case(3):break;}}void store()//信息主函数{int i;printf("\t\t系统信息查看及存储\n"); printf("1.查看课程信息\n");printf("2.查看学生信息\n");printf("3.存储信息\n");printf("4.返回主菜单\n");printf("请输入(1~4):\n");scanf("%d",&i);switch(i){case(1):listc();break;case(2):lists();break;case(3):into();break;case(4):break;}}int main()//主函数{int i;start:printf("\n\t\t\t欢迎使用学生选课系统!\n"); printf("菜单:\n");printf("1.录入课程信息\n");printf("2.课程管理\n");printf("3.录入学生信息\n");printf("4.学生信息管理\n");printf("5.学生选课\n");printf("6.系统信息查看及存储\n");printf("7.退出系统\n");printf("\n请输入菜单选项(1~7):\n"); scanf("%d",&i);if(i<1 || i>7){printf("输入错误,请重输:\n");goto start;}switch(i){case(1):{system("cls");inputc();goto start; break;}case(2):{system("cls"); managementc(); goto start; break;}case(3):{system("cls"); inputs();goto start; break;}case(4):{system("cls"); managements(); goto start; break;}case(5):{system("cls"); elective();goto start; break;}case(6):{system("cls"); store();goto start; break;}case(7):{system("cls");printf("感谢使用本系统!\n\n再见!\n"); }}return(0);}。