c++学生选课系统设计报告

合集下载

c语言课程设计学生选课系统

c语言课程设计学生选课系统

c语言课程设计学生选课系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计学生选课系统。

具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。

2.技能目标:学生能够运用C语言编写简单的程序,具备一定的编程能力,能够独立设计并实现学生选课系统的核心功能。

3.情感态度价值观目标:学生通过本课程的学习,能够培养对计算机编程的兴趣和热情,提高解决问题的能力,培养团队协作和自主学习的意识。

二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。

2.函数:包括函数的定义、声明、调用等。

3.数组和字符串:包括一维数组、多维数组、字符串的基本操作等。

4.指针:包括指针的基本概念、指针与数组、指针与函数等。

5.结构体和文件:包括结构体的定义和使用、文件的读写操作等。

6.学生选课系统的设计与实现:包括系统需求分析、系统设计、核心功能实现等。

三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,让学生掌握C语言的基础知识。

2.案例分析法:通过分析实际的学生选课系统的案例,让学生了解并掌握系统的设计与实现方法。

3.实验法:让学生通过动手编写程序,巩固所学知识,提高编程能力。

4.小组讨论法:分组让学生讨论并解决问题,培养团队协作和自主学习的意识。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。

2.参考书:提供相关的C语言编程参考书籍,供学生自主学习。

3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。

4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。

五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。

c学生选课系统-课程设计报告

c学生选课系统-课程设计报告

2016-2017学年第二学期《高级语言程序设计》课程设计报告题目:学生选课系统专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:代美丽成绩:计算机学院2017 年4月25 日目录一需求分析 (1)三详细设计 (2)1.数据定义 (2)2.算法流程图 (2)四函数 (5)五测试 (6)六设计总结 (9)七参考文献 (10)八源程序 (10)一需求分析数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。

选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。

二总体设计系统由哪几个功能模块构成,给出功能模块图。

C中模块化的工具是函数根据上面的需求分析,可以将这个系统的设计分为如下七大模块:选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。

三详细设计1.数据定义2.算法流程图(1)录入课程信息表(2)课程管理(3)录入课程信息(4)学生信息管理(5)学生选课(6)系统信息及查看系统(7)退出系统、四函数1.struct couse * head1;结构2. void keyboardc()//录入课程子函数(从键盘录入)3. void filec()//录入键盘子函数(从文件录入)4. void inputc()//录入课程主函数5. void insertc(struct couse *incouse)//课程管理子函数(增加课程)6. void delc(int num1)//课程管理子函数(删除课程)7. void elect(struct student * s)//选课8. void cheak()//学生选课子函数(查询可选课程)9. void back(struct student * p)//退课10. void hcheak()//学生选课子函数(查询已选课程)11.void elective()//学生选课主函数12.void listc()//输出课程信息13.void lists()//输出学生信息14.void intoc()//存储课程信息15.void intos()//存储学生信息16.void into()//存储信息17.void store()//信息主函数18. int main()//主函数五测试1.主菜单2.录入课程信息3.从键盘输入4.从文件输入5.学生选课菜单6.学生信息管理7.管理员输入课程信息界面六设计总结问题一:无法读取文txt文件。

学生选课系统分析报告

学生选课系统分析报告

学生选课系统分析报告题目:学生选课系统班级:电子商务094 组员:魏红秀蒋汉玉胡燕杜梅潘小凤董梦云指导教师:王召义日期: 2011-5-22目录一、系统分析背景魏红秀蒋汉玉 (3)二、选课系统功能分析董梦云杜梅潘小凤 (3)三、系统分析胡燕蒋汉玉魏红秀 (3)(一)管理员用户登录 (4)(二)教师用户登录 (4)(三)学生用户登录 (4)四、业务流程分析蒋汉玉 (4)业务流程图1-1 (5)五、数据流程分析魏红秀 (5)数据流程图1-2 (6)六、分析总结全组组员 (6)学生选课系统分析报告一、系统分析背景在时下这个飞速发展的信息社会中,直到今天仍然没有一套完善可行的学生信息管理系统出现在学校里。

每年,从大专生、本科生到硕士生、博士生,几千人的入学、升学、毕业,全要由教务处和各系老师人工管理。

信息量之巨大,工作量之繁重,是难以想象的。

因此,学校和各个系都要安排多名教师专门负责学生学籍管理,浪费了大量的人力资源。

然而,即使这样,管理仍然谈不上井井有条。

而另一方面,当我们还是高中生的时候就听说大学实行的是“学分制”,也就是说,我们不必再天天按照老师安排的课程去学习,而是可以在一些必修课之外,随意选择我们喜爱和感兴趣的课去学习。

但是,当我们真正步入校园之后才发现,这里仍然是所谓的“学年制”,即每学期的课程都是学校安排的,学生没有选择的自由,而且课程的安排由于各方面诸多的原因经常有不适之处,尤其是先行课的问题。

最后,从社会这方面讲,学校的软件系统也是衡量该学校整体水平的一个重要因素。

我们所追求的是同学坐在家里动一动鼠标,就能查询到自己各方面的资料,包括选课、成绩、个人信息等。

二、选课系统功能分析本选课系统既面向教务处,又面向教师和学生。

不同的人,不同的身份操作的权限也不同。

作为教师,他可以向教务处申请增加、删除、修改课程信息,并随时了解选修本课的学生名单,还可以输入并分析考试成绩。

作为教务处管理员,它的权限是最宽的。

学生选课系统c课程设计

学生选课系统c课程设计

学生选课系统c 课程设计一、教学目标本课程旨在让学生掌握学生选课系统C的基本原理和使用方法。

知识目标包括了解学生选课系统的功能、结构和常用技术,理解面向对象设计的基本概念和方法。

技能目标包括能够使用学生选课系统C进行课程选择和排课,能够进行简单的系统设计和优化。

情感态度价值观目标包括培养学生对编程和计算机科学的兴趣和热情,提高学生解决问题的能力和创新精神。

二、教学内容本课程的教学内容主要包括学生选课系统C的基本原理、系统结构和常用技术,面向对象设计的基本概念和方法,以及学生选课系统C的实践应用。

具体包括以下几个部分:1.学生选课系统C的基本原理:介绍学生选课系统C的定义、功能和特点,让学生了解学生选课系统C的基本概念。

2.学生选课系统C的系统结构:讲解学生选课系统C的组成部分,包括数据库、服务器和客户端等,让学生了解学生选课系统C的架构和运行机制。

3.学生选课系统C的常用技术:介绍学生选课系统C中常用的技术,如SQL、Java等,让学生掌握学生选课系统C的开发和实现方法。

4.面向对象设计的基本概念和方法:讲解面向对象设计的基本原则和方法,如封装、继承和多态等,让学生掌握面向对象设计的思维方式和实际应用。

5.学生选课系统C的实践应用:通过实际操作,让学生学会使用学生选课系统C进行课程选择和排课,培养学生的实际操作能力。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。

包括:1.讲授法:通过讲解学生选课系统C的基本原理、系统结构和常用技术,让学生掌握基本概念和知识。

2.讨论法:通过学生进行小组讨论,引导学生思考和探讨学生选课系统C的实际应用问题和解决方案。

3.案例分析法:通过分析典型案例,让学生了解学生选课系统C的实际应用场景和设计方法。

4.实验法:通过实际操作,让学生学会使用学生选课系统C进行课程选择和排课,培养学生的实际操作能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择合适的教材,为学生提供系统的学习资料。

学生选课信息系统数据库课程设计报告(1)

学生选课信息系统数据库课程设计报告(1)

学生选课信息系统数据库课程设计报告(1)学生选课信息系统数据库课程设计报告一、设计背景学生选课是高校本科教育的重要环节之一,选课过程需要学生、教师和管理员之间的良好合作。

为了方便学生选课,提高教学质量,开发一个适合本校实际需求的学生选课信息系统是非常有必要的。

二、系统需求1. 前台系统学生登录系统后可以进行选课、退课和查询课程信息等操作。

系统提供课程介绍和授课教师信息,方便学生选择。

2. 后台系统管理员需要对系统的课程信息、学生选课信息进行管理,包括添加、删除、修改课程信息,管理选课限制,查询学生选课情况等。

3. 数据库设计系统需要设计数据库,存储学生、教师和课程信息,以及学生选课信息的记录。

三、系统功能1. 学生功能(1)学生登录系统进行选课、退课操作。

(2)学生可以查看选课情况、课程信息和授课教师信息。

2. 教师功能(1)教师登录系统可以查看自己的授课情况和课程信息。

(2)教师可以对自己的课程信息进行修改。

3. 管理员功能(1)管理员登录系统可以添加、删除、修改课程信息。

(2)管理员可以设置课程选课限制,管理学生选课情况和课程信息。

四、系统实现1. 前台系统使用HTML、CSS、JavaScript等技术进行开发,实现学生、教师等用户操作界面。

2. 后台系统使用PHP或Java等技术进行开发,实现管理员对系统各个功能的管理操作。

3. 数据库使用MySQL或Oracle等关系型数据库进行设计,存储学生、教师和课程信息、学生选课记录等。

五、系统优化为了提高系统的性能和可用性,需要对系统进行优化,包括:1. 对数据库进行索引优化,提高查询速度。

2. 在前台系统中进行数据缓存,减少对后台系统的请求次数,提高系统响应速度。

3. 对系统进行安全性优化,防止非法入侵和数据泄漏。

六、系统测试在开发完成后,需要进行系统测试,包括功能测试和性能测试。

针对测试中发现的问题和缺陷,进行修复和优化,最终达到高质量的系统交付效果。

选课系统课设报告

选课系统课设报告

选课系统课设报告全文共四篇示例,供读者参考第一篇示例:选课系统课设报告一、引言随着教育领域的不断发展,高校教学管理系统也在不断完善,选课系统作为高校教学管理系统的一个重要组成部分,对学生和教师的教学生活起着至关重要的作用。

本报告将针对选课系统进行设计与开发,以提高选课效率、方便学生和教师的教学活动。

二、系统需求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. 系统部署:系统部署在高校的教学管理平台上,学生和教师可以通过互联网访问系统进行选课操作。

学生选课系统设计报告

学生选课系统设计报告

大理学院数学与计算机学院《数据库系统设计》课程设计报告班级: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条记录);③编写进行数据管理的存储过程。

使用C#制作学生选课系统

使用C#制作学生选课系统

.cnbook (6)接下来限定“Sname”字段值不能为空,其方法是:直接在“Sname”行的最后一列的【允 ww 许空】项单击 取消勾选即可。如图 8 所示。
w 图6 设置主键
.c .net ww 图 7 设置主键后的“Sno”字段
book 使用 C#制作学生选课系统
t .net 内容提要:本文是使用 C#制作学生选课系统。主要介绍了如何在 Visual C# 2005 环境下使用 e k 和 SQL Server 2000 设计一个学生选课系统,其中详细介绍了如何建立数据库的连接、编 .n oo 写数据读取方法和数据更新方法等。 ok nb 关键字:学生选课系统、Visual C# 2005、SQL Server 2000、
k.n boo 2.2 创建数据表 oo cn 接下来介绍使用 SQL Server 2000 的企业管理器直接创建学生信息表“tbl_Student”、课程信息
nb w. 表“tbl_Course”和选课信息表“tbl_SC”的方法和步骤,从而完成学生选课系统的数据库设计。 .c ww 1. 使用企业管理器 w 打开 SQL Server 2000 的企业管理器,依次展开控制台目录,定位到“SelectCourse”数据库, w 并选择“表”,则在右边的“表”项目中列出了所有的数据表,其中最后一个为用户创建的“tbl_User” w et k 数据表,如图 1 所示。
,则
.cnbook 弹出【选择名称】对话框,输入表名为“tbl_Student”,然后单击【确定】按钮即可,如图 11 所示。 .net www 图 11 输入表名 ok nb (10)最后关闭表设计器,这时可以在企业管理器的表视图区域中看到刚刚创建的用户数据表
c “tbl_Student”。 w. 3. 创建课程信息表 ww 根据如表 3 所示的表结构定义,按照创建学生信息表“tbl_Student”的方法,设计课程信息表

c#课程设计学生选课系统设计

c#课程设计学生选课系统设计

c#课程设计学生选课系统设计一、课程目标知识目标:1. 学生能掌握C#编程语言的基础知识,包括数据类型、控制结构、类与对象等;2. 学生能理解数据库的基本原理,掌握SQL语句的编写和数据库操作;3. 学生能了解学生选课系统的业务需求,掌握系统设计的基本方法和步骤。

技能目标:1. 学生能运用C#语言编写学生选课系统的功能模块,如登录、选课、退课等;2. 学生能通过数据库技术实现对学生选课信息的管理,包括数据存储、查询和更新;3. 学生能运用面向对象的设计思想,设计出结构清晰、易于维护的学生选课系统。

情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高信息素养;2. 学生在团队协作中,培养沟通与协作能力,增强团队意识;3. 学生在解决实际问题的过程中,培养勇于探索、积极创新的精神。

课程性质:本课程为实践性较强的课程,结合课本知识,以学生选课系统为案例,使学生掌握C#编程和数据库技术。

学生特点:学生具备一定的C#编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。

教学要求:课程应注重理论与实践相结合,强调动手实践,引导学生通过自主学习和团队合作,完成学生选课系统的设计与实现。

同时,关注学生的情感态度价值观的培养,提高学生的综合素质。

二、教学内容1. C#编程基础:- 数据类型与变量- 控制结构(顺序、分支、循环)- 方法与数组- 类与对象- 继承与多态- 异常处理2. 数据库原理与应用:- 数据库基本概念- SQL语句(SELECT、INSERT、UPDATE、DELETE)- 数据库设计(实体关系、E-R图)- 数据库访问技术3. 学生选课系统设计:- 系统需求分析- 系统设计(模块划分、类设计)- 数据库设计(表结构设计、关系建立)- 界面设计(UI设计、用户体验)- 功能实现(登录、选课、退课、查询成绩等)4. 项目实践与团队协作:- 项目开发流程- 团队协作与沟通- 代码版本控制(如Git)- 项目测试与调试教学内容根据课程目标,结合教材章节,进行科学组织和系统安排。

c学生选课系统课程设计

c学生选课系统课程设计

c学生选课系统课程设计一、课程目标知识目标:1. 学生能够理解并掌握学生选课系统的基本原理和功能。

2. 学生能够运用所学知识,分析并设计一个简单的学生选课系统。

3. 学生能够了解数据库管理、网络通信等基础知识在选课系统中的应用。

技能目标:1. 学生能够运用编程语言(如Python)实现选课系统的基本功能,如学生信息管理、课程选择等。

2. 学生能够通过小组合作,完成选课系统的需求分析、设计、编码和测试。

3. 学生能够运用问题解决策略,解决在开发过程中遇到的技术难题。

情感态度价值观目标:1. 学生能够培养对计算机科学的兴趣和热情,提高主动学习的积极性。

2. 学生能够在团队合作中发挥个人优势,学会倾听、沟通、协作和分享。

3. 学生能够认识到编程在解决实际问题中的应用价值,增强实践能力和创新精神。

课程性质分析:本课程为信息技术课程,旨在让学生通过动手实践,掌握编程语言和系统设计的基本方法,提高解决问题的能力。

学生特点分析:本课程面向初中年级学生,学生对计算机操作有一定的基础,具备一定的逻辑思维能力和创新意识。

教学要求:1. 结合教材内容,注重实践操作,提高学生的动手能力。

2. 激发学生兴趣,引导他们主动探索新知识,培养自主学习能力。

3. 强化团队合作,培养学生的沟通能力和协作精神。

二、教学内容1. 学生选课系统的基本概念与功能- 理解选课系统的定义及其重要性- 掌握选课系统的核心功能模块(如学生信息管理、课程信息管理、选课操作等)2. 数据库基础知识- 学习数据库的基本概念(如数据表、字段、记录等)- 掌握简单的SQL语句(如SELECT、INSERT、UPDATE、DELETE)3. 编程语言基础(以Python为例)- 学习Python的基本语法和编程规范- 掌握使用Python进行数据操作和流程控制4. 系统设计方法- 学习需求分析的基本步骤和方法- 掌握系统设计的基本流程(如UML图、流程图等)5. 选课系统的实现- 学习如何设计系统界面和用户体验- 实践编程实现选课系统的各个功能模块6. 系统测试与优化- 学习系统测试的基本方法- 掌握对系统进行性能优化和错误修正的技巧教学内容安排与进度:第1-2周:学生选课系统的基本概念与功能学习第3-4周:数据库基础知识学习与实践第5-6周:Python编程基础学习第7-8周:系统设计方法学习与需求分析第9-10周:选课系统的编码实现第11-12周:系统测试与优化,项目总结与展示教材章节关联:本教学内容与教材中“数据库应用”、“Python编程”、“系统分析与设计”等章节相关联,确保学生能够结合教材内容,系统地学习和掌握相关知识。

学生选课管理系统课程设计报告报告

学生选课管理系统课程设计报告报告

学生选课管理系统东北大学**分校**:*国锋**: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、在“密码安全〞下拉菜单中有“密码修改〞通过“密码修改〞可以使原用户还可通过密码修改来不定期修改自己的原始密码,保证了数据的真实性和安全性。

c语言课程设计学生选课管理系统实验报告

c语言课程设计学生选课管理系统实验报告

课程设计报告课程设计题目:学生选课管理系统学号:09110712姓名:李唐松专业:软件工程班级: 091107指导老师:谢小林2009年1月5日星期二*实验题目:学分管理程序*实验时间与地点:2009年1月7日星期四软件楼508*实验目的:1综合运用所学的C语言知识进行编程。

2进一步了解掌握C的基本语法。

3开始逐步培养编程思维,完善编程思维漏洞。

4侧重对C中数组函数指针结构体和文件等相关内容的综合应用。

4进一步提升自己的编程能力,为以后学习开始奠基。

*实验要求:1学生选课信息的添加(学生选课信息包括学生学生学号、课程名称、学分)2学生选课信息的删除3学生选课信息的查询(查询每个学生的选课信息,每个学生选课的总学分,选具体某门课程(课程名输入)的学生名单)*实验思路:1.函数定义判断,调用函数实现函数功能。

2.首先自定义函数,做出主菜单。

3.运用do….while , switch 语句完成主函数。

4.主程序中调用函数,程序运行时实现菜单选择功能。

5.自定义函数主要if语句完成,注重函数的应用。

*流程图:A主干图B具体流程:*程序操作:#i n c l u d e<s t d i o.h>#i n c l u d e<s t r i n g.h>#i n d e f i n e s i z e10s t r u c t c o u r s e{l o n g n u m;c h a r c o u r s e1[20];i n t s c o r e1;c h a r c o u r s e2[20];i n t s c o r e2;c h a r c o u r s e3[20];i n t s c o r e3;c h a r c o u r s e4[20];i n t s c o r e4;}c o u r s e[s i z e];v o i d m e n u(){p r i n t f(“*************************\n”); p r i n t f(“学生选课管理系统\n”);p r i n t f(“************************\n”); p r i n t f(“0退出程序\n“);p r i n t f(“1学生选课信息的添加\n”);p r i n t f(“2学生选课信息的删除\n”);p r i n t f(“3学生选课信息的查询\n”);p r i n t f(“请输入0~3\n”);}v o i d s u r e(){i n t i;f o r(i=0;i<s i z e;i++)p r i n t f(“学号:\n”);s c a n f(“%l d”,c o u r s e[i].n u m);p r i n t f(“课程1:\n”);s c a n f(“%s”,c o u r s e[i].c o u r s e1);p r i n t f(“学分1:\n”);s c a n f(“%d”,c o u r s e[i].s c o r e1);p r i n t f(“课程2:\n”);s c a n f(“%s”,c o u r s e[i].c o u r s e2);p r i n t f(“学分2:\n”);s c a n f(“%d”,c o u r s e[i].s c o r e2);p r i n t f(“课程3:\n”);s c a n f(“%s”,c o u r s e[i].c o u r s e3);p r i n t f(“学分3:\n”);s c a n f(“%d”,c o u r s e[i].s c o r e3);p r i n t f(“课程4:\n”);s c a n f(“%s”,c o u r s e[i].c o u r s e1);p r i n t f(“学分4:\n”);s c a n f(“%d”,c o u r s e[i].s c o r e4);i f(s t r c m p(c o u r s e[i].c o u r s e1)==0)r e t u r n;i f(s t r c m p(c o u r s e[i].c o u r s e2)==0)r e t u r n;i f(s t r c m p(c o u r s e[i].c o u r s e3)==0)r e t u r n;i f(s t r c m p(c o u r s e[i].c o u r s e4)==0)r e t u r n;}v o i d d e l(){i n t i;l o n g n;p r i n t f(“请输入学号:\n”);s c a n f(“%l d”,&n);f o r(i=0;i<=s i z e;i++)i f(c o u r s e[i].n u m==n)c o u r s e[i].n u m=c o u r s e[i+1].n u ms t r c p y(c o u r s e[i].c o u r s e1,c o u r s e[i+1].c o u r s e1);c o u r s e[s i z e].c o u r s e1=”\o”c o u r s e[i].s c o r e1=c o u r s e[i+1].s c o r e2;c o u r s e[i].s c o r e2=c o u r s e[i+1].s c o r e3;c o u r s e[i].s c o r e3=c o u r s e[i+1].s c o r e4;}v o i d o p e n(){i n t i;l o n g n;i n t s c o r e;p r i n t f(“请输入学号:”);s c a n f(“%l d”,&n);f o r(i=0;i<s i z e;i++)i f(c o u r s e[i].n u m==n){p r i n t f(“学号:%l d”,c o u r s e[i].n u m);p r i n t f(“课程1:%s”,c o u r s e[i].c o u r s e1);p r i n t f(“学分1:%d”,c o u r s e[i].s c o r e1);p r i n t f(“课程2:%s”,c o u r s e[i].c o u r s e2);p r i n t f(“学分2:%d”,c o u r s e[i].s c o r e2);p r i n t f(“课程3:%s”,c o u r s e[i].c o u r s e3);p r i n t f(“学分3:%d”,c o u r s e[i].s c o r e3);p r i n t f(“课程4:%s”,c o u r s e[i].c o u r s e4);p r i n t f(“学分4:%d”,c o u r s e[i].s c o r e4);s c o r e=c o u r s e[i].s c o r e1+c o u r s e[i].s c o r e2+c o r s e[i].s c o r e3+c o u r s e[i].s c o r e4; p r i n t f(“总学分:%d”,s c o r e);}v o i d m a i n(){i n t n;s c a n f(“%d”,&n);d o{me n u();s w i t c h(n){c a s e1:s u r e();b r e a k;c a s e2:de l();b r e a k;c a s e3:o p e n();b r e a k;}}w h i l e(n!=0)}实验总结:1.运用该程序可以顺利完成学生选课的添加、删除以及查询。

C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)

C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)

C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。

学生可按要求(如总学分不能少于20学分)选课。

课程信息维护,如录入、修改、删除等,课程信息用文件保存。

课程信息浏览?输出。

学生选课功能。

查询功能包括:按学分、课程性质、学生等查询。

统计功能。

统计各门课程的选修人数。

本系统要有通用性、界面美观、操作方便。

要考虑系统安全。

课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。

管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。

输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。

学生选课系统数据库设计报告

学生选课系统数据库设计报告

学生选课系统数据库设计报告学生选课系统数据库设计报告数据库设计是学生选课系统的关键部分,它的设计需要考虑到系统的需求和功能,以确保数据的一致性、完整性和安全性。

下面是学生选课系统数据库设计报告的详细内容。

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)之间是一对多的关系,一门课程可以有多个学生的成绩记录。

c课程设计学生选课系统程序设计报告

c课程设计学生选课系统程序设计报告

c++课程设计--学生选课系统程序设计报告计算机科学与技术学院学生选课系统程序设计报告班级: 1003专业:嵌入式软件指导教师:吴克立杨素娣学号: 211011016姓名:李倩倩2010年2月29日目录一.设计目的.....................................二.总体设计.....................................三.详细设计.....................................1.界面设计...................................2.课程信息设计............................3.学生信息设计............................4.选课设计...................................四.测试与调试.................................五.心得体会....................................一.设计目的网上选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。

随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,这种弊端会越来越多的暴露出来。

因此,利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。

从教师的角度来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此通过网上进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。

C语言课程设计__学生选课系统实习报告

C语言课程设计__学生选课系统实习报告

C语言上机实习报告院系:班级:姓名:指导老师:2010-8-28至2010-9-4目录一、设计目的 (2)二、设计要求 (2)三、题目及其要求 (2)四、需求分析 (3)五、总体设计 (3)六、详细设计 (4)6.1、主函数 (4)6.2、菜单函数 (4)6.3各模块设计 (7)6.3.1输入函数 (7)6.3.2添加函数 (9)6.3.3修改函数 (12)6.3.4查找函数 (16)6.3.5选择课程 (20)6.3.6删除课程 (23)6.3.7浏览函数 (26)6.3.8退出操作 (27)6.3.9公共函数——保存函数 (28)七、上机实习 (28)八、设计实习心得 (29)九、参考书目 (29)十、学生选课系统与程序 (30)一、设计目的随着信息技术对人类社会进行的全方位渗透,一种新的文化形态——信息时代的计算机文化已经形成。

计算机知识成为当代知识分子结构中不可缺少的重要部分。

C语言是近年来国内外得到迅速推广使用的一种高级语言。

C语言功能丰富,表达能力强,使用灵活方便,应用广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的语言特点,因此C语言对我们来说很重要。

学习的目的在于将所学到的东西运用于实践,这样方可在实践中巩固以前所学的理论知识,同时提高自己学习的能力,完善自己掌握的技能,使得我们既能够从实践中强化以前所学的知识,也能让我们在实践中学到更多新的东西,还能锻炼我们的动手能力,这是书本上不能学到的。

此次设计就在于让我们把以往所学运用于实践中,让我们通过对实际生活中的实例进行观察和理论分析后,总结出一套可行的解决方案,然后用编程的方法,把解决方案变为可能。

此次设计,也让我们巩固和加深了对C语言课程的基本知识的理解和掌握,帮助我们掌握C 语言编程和程序调试的基本技能,让我们体验了如何用C语言进行基本的软件设计,同时也提高了我们书写程序说明的能力和用C语言解决实际问题的能力。

C语言课程设计报告-学生选课系统

C语言课程设计报告-学生选课系统

X X X学校C程序设计课程设计报告选题名称:学生选修课程系统设计系(院):计算机工程系专业:嵌入式软件系统设计方向班级:嵌入式1091 姓名: XXX 学号: XXXXXXXXXX指导教师: XXX 学年学期:2008 ~ 2009 学年第 1 学期2009 年12 月28 日设计任务书年月日摘要:C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。

使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。

使我们体会到自身知识和能力能在实际中的应用和发挥。

不但可以激发创新意识,还可以开发创造能力、培养沟通能力。

这次学生选修课系统管理设计时间虽然仅有一个星期,但确实使我受益非浅。

通过学生选修课系统管理设计我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对Turbo C的使用技巧。

C语言是在国内外广泛使用的一种计算机语言。

语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。

同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。

我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。

关键词:学生选修课系统管理;C语言课程设计;计算机技术;模块化程序设计;信息录入;浏览信息;选课;查询目录1.设计目的 (5)2.总体设计 (5)2.1首先实现学生选修课程系统主菜单 (5)2.2其次实现模块化语句设计 (7)总结 (11)致谢 (12)参考文献 (13)C语言课程设计报告1.设计目的设计学生选修课程管理系统:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。

C++课程设计——选课系统报告

C++课程设计——选课系统报告

2010~2011(2)《面向对象程序设计》课程设计报告姓名:学号:班级:日期:指导教师:课程设计的题目: 学生选课管理系统等级: 等级三同组成员: 组长:一、本系统的设计1.1系统功能模块图图1.1系统功能模块图1.2 系统UML图图1.2系统UML图1.3功能模块描述与主要类描述本程序综合运用面向对象的设计方法, 主要运用了STL中的map 来储存从文件读出的数据。

模块一: 学生端模块功能(1)查看课程:此模块通过SearchAllCourse()函数, 在界面上显示所有可选课程。

(2)选择课程:此模块通过choosecourse()函数, 通过输入你要选择的课程号进行选课。

(3)退选课程:此模块通过Deletecourse()函数, 用map中的erase()函数, 删除已选课程。

(4)查看已选课程:此模块通过Searchcourse()函数, 将显示该学生所选课程的情况。

(1)模块二: 管理端各功能:增加学生:(2)此模块调用了头文件为student.h里的成员和GL类里的AddStudent()成员函数, 要求用户输入学生的相关信息。

(3)如果学号相同, 系统将会提示该学生已存在, 然后自动返回管理端。

(4)增加课程:(5)此模块调用GL类里的函数AddCourse(), 要求用户输入课程相关信息。

如果课程号相同, 系统会提示课程已存在,并自动返回管理端。

(6)删除学生(7)通过输入学号, 程序调用函数DeleteStudent(), 删除该学生相关信息, 然后自动返回管理端。

如果要删除的学号不存在, 则系统提示该学生不存在, 然后自动返回管理端。

(8)删除课程(9)通过输入课程号, 程序调用函数DeleteCourse(),删除该课程相关信息, 然后自动返回管理端。

如果要删除的课程号不存在, 则系统提示该课程不存在, 然后自动返回管理端。

(10)修改课程信息(11)通过输入课程号, 程序会进入修改课程信息界面, 通过switch()函数, 用户可选择需要修改的项目。

学生选课系统详细设计

学生选课系统详细设计

学生选课系统详细设计1. 引言学生选课系统是一个用于学校管理学生选课的系统。

它提供了学生选择课程、查询课程信息、查看选课结果等功能,方便学生进行选课操作,并为教务处提供了管理和统计数据的功能。

本文将对学生选课系统进行详细设计,包括系统架构、功能模块、数据库设计等内容。

2. 系统架构学生选课系统采用三层架构,包括表现层、业务逻辑层和数据访问层。

2.1 表现层表现层负责与用户进行交互,接收用户的输入并展示相应的界面。

采用前后端分离的方式,前端使用HTML、CSS和JavaScript实现用户界面,并通过Ajax与后端进行数据交互。

2.2 业务逻辑层业务逻辑层负责处理用户请求,并调用相应的服务进行业务逻辑处理。

它包括以下几个模块:2.2.1 用户认证模块用户认证模块负责验证用户身份信息,包括用户名和密码。

在用户登录时,通过用户名和密码验证用户身份,并生成一个加密的令牌返回给客户端,在后续请求中使用该令牌进行身份认证。

2.2.2 课程管理模块课程管理模块负责管理课程信息,包括添加课程、修改课程信息、删除课程等功能。

它提供了对课程的增删改查操作,并与数据访问层进行交互。

2.2.3 学生选课模块学生选课模块负责处理学生的选课请求,包括选择可用的课程、判断是否满足选课条件、记录学生选课结果等功能。

它与数据访问层进行交互,查询可用的课程信息,并将选课结果保存到数据库中。

2.3 数据访问层数据访问层负责与数据库进行交互,包括读取和写入数据库中的数据。

它提供了对数据库的操作接口,供业务逻辑层调用。

3. 功能模块学生选课系统包括以下几个功能模块:3.1 用户登录与注册用户可以使用用户名和密码登录系统,如果没有账号可以进行注册。

在注册时需要填写一些基本信息,并验证输入的合法性。

3.2 个人信息管理用户可以查看和修改自己的个人信息,包括姓名、性别、出生日期等。

用户还可以修改密码和上传头像。

3.3 课程查询与选择用户可以查询所有可用的课程信息,并选择自己感兴趣的课程进行选课。

学生选课系统报告

学生选课系统报告

学生选课系统报告1. 引言学生选课系统是一种为学校管理学生选课过程的计算机系统。

本报告旨在介绍学生选课系统的设计与实施情况,包括系统的目的、功能、架构以及使用效果等方面的内容。

2. 系统目的学生选课系统的目的是简化学生选课过程,提供便捷的选课方式,并提供学校管理人员实时的选课情况和数据统计。

通过系统化的选课流程,能够更高效地满足学生的选课需求,优化学校资源的分配。

3. 系统功能学生选课系统的主要功能包括:- 学生账号管理:学生可以注册账号,登录系统并查看个人信息。

- 课程浏览与搜索:学生可以查看课程列表,根据需求搜索和筛选课程。

- 选课与退课:学生可以根据自己的兴趣和学业要求选择课程,并在规定时间内进行选课或退课操作。

- 选课限制与冲突检测:系统能够根据学校规定的选课限制和课程安排,检测并防止学生选课冲突。

- 数据统计与报表生成:系统能够生成选课情况、学生选课偏好和课程容量等数据的报表,以供学校管理人员参考。

4. 系统架构学生选课系统采用客户端-服务器架构,包括以下组件:- 客户端界面:提供给学生使用的用户界面,用于浏览课程、进行选课和退课操作等。

- 服务器端:负责处理学生的选课请求,与数据库进行交互,进行选课冲突检测和数据统计等操作。

- 数据库:存储学生、课程和选课相关的数据。

5. 使用效果与改进经过系统的实施和使用,学生选课过程得到了明显的改善。

学生们可以方便地浏览课程、进行选课和退课操作,避免了繁琐的手工登记和调整过程。

同时,学校管理人员可以实时获取选课情况和数据统计,更好地进行资源分配和课程安排。

然而,系统仍有一些潜在的改进空间,比如进一步优化用户界面、提升选课冲突检测算法的准确性等方面。

6. 结论学生选课系统是学校管理学生选课过程的重要工具,能够提供便捷的选课方式和实时的数据统计。

通过系统化的选课流程,学校能够更高效地满足学生需求,优化资源分配。

然而,系统仍需不断改进和优化,以提供更好的用户体验和功能支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++程序设计课程设计报告课题名称: 学生选修课程系统设计组号:第八组指导教师:**目录引言………………………………………………………………..一设计目的及内容……………………………………………………二课题总体设计………………………………………………………1.性能需求……………………………………………………………2.功能需求…………………………………………………………….3.功能模块图…………………………………………………………三详细设计…………………………………………………………….1.各模块说明. ……………………………………………………….2.各模块功能流程图………………………………………………四测试与调试…………………………………………………………五心得体会…………………………………………………..六附:源代码……………………………………………….引言21世纪以高科技为核心的知识经济占主导地位,国家的综合国力和以国际竞争力将越来越取决于科学技术创新水平。

教育作为知识创新,传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。

尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄,不同社会阶层和背景的人们所用。

在信息爆炸的时代,传统教学管理面临诸多挑战。

课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。

此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C++功能之强大,进一步让学生对面向对象的方法以及C++的编程思想有了较好了解和认识。

一设计目的及内容:网上选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的选课,一方面浪费大量的人力,物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。

随着学校规模的不断扩大,专业,班级,学生的数量急剧增加,有关学生选课的各种信息也成倍增加,而目前许多高校的学生的选课管理仍然停留在复杂的人工操作上,重复工作较多,工作量大,效率低,各种弊端会越来越多的暴露出来,因此利用网络,使学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的工作量。

从教师的角度上来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此在网上进行课程发布能大幅度的减少教师的工作量,减少错误发生几率,作为教师,也只要通过自己的电脑来操作即可,不用奔波于教务处和办公室之间。

1、课题名称:学生选修课程系统设计2、课程设计详细内容说明:假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。

学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。

使之能提供一些功能:要求:具体设计要求实现如下功能:1、课程信息录入功能2、课程信息浏览功能3、查询功能:(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)4、学生选修课程5、修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);6、删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生姓名删除选课信息);二课题总体设计:1、性能需求:在现代,高科技的飞跃发展,人们工作习惯的改变,别特是电脑的大量普及,人们生活节奏越来越来快,怎样提高工作效率是人们首先考虑的问题。

学生选课是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。

对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。

显然,靠手工进行管理这种选课方法已经不能适应时代的发展,学校的需求。

今天这种传统的管理方法必然会被计算机为基础的信息系统所代替。

同时这种传统方式放映出很多问题:第一,当要查询某个同学或某个班级的选课情况极不方便;第二,每次选课时省老师花大量时间统计各班级各学生的选课情况,这样准确率也较难保证;第三,选课的可靠性很低;第四,现在学校虽然已用计算机进行选课管理,但工作并不完善,有很大的局限性。

2、功能需求:我们设计的是一个学生选修金额系统,这个系统的功能比较完善。

使用主函数中的switch语句实现该结构,进而实现该系统的各项功能。

该系统能实现六项功能:1.录入信息、2.查询信息、3.删除课程、4.显示课程、5.保存信息、6.读取信息,设计本次试验所用到的知识点有:类和对象、FOR循环、switch语句、do while()语句、构造函数等等。

3、功能模块图:学生信息模块课程信息模块选课模块三详细设计:1.各模块说明:(1)我们这学生选修课系统的主界面分有两个选项一个是学生使用的学生端一个是老师使用的教师端。

(2) 学生端包括学生的选课情况、学生情况和学生选课,学生可在这里进行选课查询各学生选修课情况还可以查看学生的情况。

(3) 选课系统管理端只有教师可以进入因为需要密码,设计密码是防止学生进入管理端随意修改。

管理端包括一些要求里有的如:课程浏览、课程录入、课程删除、课程查询等,还包括一些要求里边没有的功能如:填写成绩、更改学分等。

这些功能只有管理员才能进行修改和填写。

2 各模块功能流程图: (1)主界面流程图:(2)学生端流程图:(3)管理端流程图:结束四测试与调试:运行:1.学生选课主界面2.选修课系统学生端3.系统管理端4.学生选课界面5.查询学生所选课程界面6.删除课程界面7.课程信息录入功能8.按课程查询所选人数遇到的问题和解决办法:这个程序用到了数据结构的内容可是我们还没有学习数据结构当时这件事真是吧我们难住了,没办法只能自己上网还有去图书馆这中间也去问过老师最终还是把主要问题解决了,不过这中间可能有一些问题是我们现在解决不了的。

五心得体会:1 每当拿到一个小工程,我们都得先仔细分析用户的需求,然后再给程序定位(所花费的人力、物力以及财力),这将花费我们大量的时间,就如本次任务一样,我们首先聚在一起分析,然后得出大致方向,再具体分配任务,无论哪一部分都是我们努力的结果。

2通过这次学生选课系统设计,以C++语言为基础的编写,更让我掌握到C++语言中的相关语句的应用。

3用Visual C++ 6.0 环境下编写,我觉得,从文件中读入数据十分麻烦,没有数据库中读入数据那么轻松,如果我要用到两个表中的记录,非常麻烦。

4整个设计过程过后,我也基本掌握了设计的基本步骤,为我们以后做毕业论文也有很好的帮助。

5C++是很好的系统编程语言,但不能以此独立,但用C++语言是做不出好的系统,还是要和其他软件结合,以C++为基础编写的系统,这样做出来的系统也更好,更美观。

6这次系统设计有很多不足之处,在这过程中也认识到自己对C++也有很多的没掌握的地方。

但是在老师和同学的帮助下,也算是弄出了一个简单的系统,在以后也要更加努力的学习,掌握更好的编程技术。

7做程序真的是个很累的活,有时就为了一个小小的错误,可以一两顿饭不吃,但是做出来的那一刻,真心的感觉很开心,很有成就感,虽然其应用性不高,至少这也是我们小组努力的结果。

8经过我们多天的团结合作终于把这个学生选课系统做完了,虽然这过程是艰难的但是做完之后感觉挺有成就感的,在这个过程中我们学到了很多光听老师讲学不到的东西。

在写这个程序的时候用到了数据结构的内容,如果不是这个程序我觉得我是不会去自学数据结构的内容。

参考书目:⑴谭浩强,《C++程序设计》,清华大学出版社,2002.4⑵求是科技,《Visual C++ 6.0信息管理系统开发》,人民邮电出版社,2005.4⑶陈良银、游洪跃、李旭伟,《C语言程序设计(C99版)》,清华大学出版社,2006.10⑷殷人昆,《数据结构》(用面向对象方法与C++语言描述),清华大学出版社,2007.2编程人员:孙双蕾、白晓兰实验报告设计:牟炼调试人员:孙双蕾讲解人员:白晓兰附录:源代码#include <iostream>#include <iomanip>#include <fstream>#include <conio.h>using namespace std;//定义课程class course //某个学生所学的课程中的某一个{public:char cname[20]; //课程名称float grade; //课程成绩course *Next; //指向下一个课程的指针};//学生类class student{public: student(){ root = NULL;const int maxcourse = 5;factcourse = 0;}void readname(char N[] ); //读入学生的姓名void getname(char N[]); //得到学生的姓名void wrecourse(char N[],float score); //要据课程名写入学生课程的成绩float average(); //学生课程的平均成绩void addcourse(char N[],float g); //给学生增加一门课int findcourse(char N[]); //查找是否已有此课程,如果有返回,如果没有返回int retfactcourse(){ return factcourse;} //得到所学的课程数目course *retroot(){ return root; } //利用键表将所有的课程保存起来int retmaxcourse(){ return 5; } //得到最多可学的课程数目void clrroot() //清零{ root = NULL;factcourse = 0;}private: char sname[20]; //学生的姓名int maxcourse; //学生最多可以学五门课程int factcourse; //学生实际所学的课程数目course *root; //课程的根结点指针};void student::readname (char N[])//读入学生的姓名{ strcpy(sname,N); }void student::getname(char N[])//得到学生的姓名{ strcpy(N,sname); }void student::wrecourse(char N[],float score)//要据课程名写入学生课程的成绩{ course *p = root;if(p==NULL)return;if(p!=NULL)p = p->Next;while(p){ if(strcmp(p->cname,N)==0)p->grade = score;p = p->Next;}}float student::average()//学生课程的平均成绩{ float aver=0.0;course *p = root;while (p){ aver = aver+p->grade; }aver = aver/factcourse;return aver; }void student::addcourse (char N[],float g)//给学生增加一门课{ course *s = new course;s->Next=NULL;if(root == NULL)root = s;course *p = root;course *newcourse = new course;newcourse->Next = p->Next;p->Next=newcourse;strcpy(newcourse->cname,N);newcourse->grade = g;factcourse++;}int student::findcourse (char N[])//查找是否已有此课程,如果有返回,如果没有返回{ course *p = root;if(root==NULL)return 0;p = p->Next;while(p){ if(strcmp(p->cname,N)==0)return 1;p = p->Next;}return 0; }class studentdb{public:student stu;studentdb *Next; };struct studentname{ char tname[20]; //学生的名字float result; //学生所得的该课程分数studentname *Next; };//课程类class subject{public:subject(){ first = NULL;maxstudent=30;activestudnet=0; }float readcredit(); //得到课程的学分void getcredit(float a); //设置学分float getaverage(); //得到学生的平均成绩float getresult(char N[]); //查找某个学生的成绩void getkname(char N[]); //读出课程的名称void setkname(char N[]); //读入课程的名称studentname *retfirst(){ return first; } //返回根结点void findstudent(studentdb *P); //根据该课程的名称,寻找选这课程的学生int retactivestudent(){ return activestudnet; } //返回实际学生数int retmaxstudent(){ return 30; } //返回最多学生数void clractivestudnet(){ activestudnet = 0; } //从文件中读出来后将实际学生数清零private:int maxstudent; //最多学生数int activestudnet; //实际学生数studentname *first; //学生名单float credit; //该课程的学分float averagerusult; //该课程的平均成绩char kname[20]; //该课程的名称};float subject::readcredit ()//得到课程的学分{ return credit; }void subject::getcredit (float a)//设置学分{ credit=a; }float subject::getaverage()//得到学生的平均成绩{ float k = 0.0;studentname *p;p=first->Next;if(p==NULL)return 0;while(p){ k = k + p->result;p = p->Next ; }return k/activestudnet; }float subject::getresult (char N[]) //查找某个学生的成绩{ studentname *p;p = first;while(p){ if(strcpy(p->tname ,N)==0)return p->result;p = p->Next ; }return -1; }void subject::getkname (char N[]) //读出课程的名称{ strcpy(N,kname); }void subject::setkname (char N[]) //读入课程的名称{ strcpy(kname,N); }void subject::findstudent(studentdb *P) //根据该课程的名称,寻找选这课程的学生{ studentname *newcode = new studentname;newcode->Next=NULL;first = newcode;studentname *T = first;studentdb *K = P->Next;while(K){ course *Y = K->stu.retroot();if(Y ==NULL){ K = K->Next;continue; }if(Y!=NULL)Y = Y->Next;while(Y){ if(strcmp(Y->cname,kname)==0){ studentname *Acode = new studentname;char Name[20];K->stu.getname(Name);strcpy(Acode->tname,Name);Acode->result = Y->grade;Acode->Next = T->Next;T->Next = Acode;activestudnet = activestudnet + 1;break; }Y = Y->Next; }K = K->Next; }return ; }void tuichu(){ system("cls");cout<<"\n\n谢谢你使用选修课系统\n\n"<<endl;cout<<"\n you're welcome ! \n"<<endl;getch();exit(-1); }//总菜单char menu(){ int k=0;char a[3],c,i;system("cls");cout<<endl<<endl;cout<<"*******************************************\n"<<"* *\n"<<"* 学生选修课系统*\n"<<"* *\n"<<"* *\n"<<"* 操作方式: *\n"<<"* 1.选修课系统学生端*\n"<<"* *\n"<<"* 2.选修课系统管理端*\n"<<"* *\n"<<"*******************************************\n"<<endl;while(1){ cout<<"\n\t\t请选择登入方式: ";cin>>a;if(strlen(a)==1){ for(i='1';i<='2';i++){ c=i;if(c==a[0])return c; }}cerr<<"\n\n\t\t\t\t输入有误!\n"<<endl;k++;if(k>2){ system("cls");cerr<<"\n\n\n\t\t~~提示~~:错误输入次数超过三次,你将被强制退出!!\n\n"<<endl;cout<<"\t\t按任意键继续"<<endl;getch();tuichu(); }}}//选修课系统端操作char custom(){ char A[10];char b;char i;int k = 0;system("cls");;cout<<"\n\n\n"<<"※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<"※选修课系统学生端※\n"<<"※※\n"<<"※操作方式:. ※\n"<<"※1、学生选课※\n"<<"※2、学生情况※\n"<<"※3、选课情况※\n"<<"※4、退出系统※\n"<<"※※\n"<<"※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;while(1){ cout<<"\t\t\t请选择操作方式: ";cin>>A;if(strlen(A)==1){ for(i='1';i<='4';i++){ b=i;if(b==A[0]) return b; }}cerr<<"\n\t\t\t\t输入有误!\n"<<endl;k++;if(k>2){ system("cls");cerr<<"\n\n\t\t\t~~提示~~:错误输入超过三次!你将被强制退出!!\n"<<endl;cout<<"\t\t按任意键继续"<<endl;getch();tuichu(); }}}char server(){ char A[10];char b;char i;int k = 0;system("cls");;cout<<"\n\n\n"<<"※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<"※※\n"<<"※选修课系统管理端※\n"<<"※※\n"<<"※操作方式: ※\n"<<"※ 1.增加学生 2.增加课程※\n"<<"※ 3.删除学生 4.删除课程※\n"<<"※ 5.填写成绩 6.更改学分※\n"<<"※7.学生情况8.选课情况※\n"<<"※9.保存数据0.退出系统※\n"<<"※※\n"<<"※※※※※※※※※※※※※※※※※※※※※※※※※\n"<<endl;while(1){ cout<<"\t\t 请选择操作方式: ";cin>>A;if(strlen(A)==1){ for(i='0';i<='9';i++){ b=i;if(b==A[0])return b; }}cerr<<"\n\t\t\t\t输入有误!\n"<<endl;;k++;if(k>2){ cerr<<"错误输入超过三次!\n";exit(-1); }}}//密码检查void password(){int k=0,i;char A[]="123456";char B[10];char a;system("cls");for(i=0;i<8;i++)cout<<endl;while(k<=2){printf("\t\t\t请输入管理员密码:");i=0;while(1){a=getch();if(a==13)break;B[i]=a;i++;printf("*");}B[i]='\0';if(strcmp(A,B)==0)return;else{k++;cerr<<"\n\n\t\t\t密码输入错误!请重新输入!\n"<<endl;}if(k>=3){system("cls");cerr<<"\n\n\t\t\t输入错误密码超过三次!请按任意键退出.."<<endl; getch();tuichu();}}}struct subjectdb{ subject sub;subjectdb *Next;};int menu_2_7(studentdb *P);int menu_2_9(studentdb *Y,subjectdb *P);int menu_2_8(subjectdb *P);//学生端功能函数int menu_1_1(studentdb *P,subjectdb *X) //学生选课{ system("cls");cout<<"\n\n\t\t\t\t学生选课操作"<<endl;studentdb *q=P->Next;int i;char N[20],M[20];if(q!=NULL)cout<<"\n\n\n\t\t所有学生名单如下:\n"<<endl;else{ cerr<<"\n\n\n\t\t对不起,暂无学生名单!请先创建!请按任意键继续.."<<endl;return 1; }while(q){ q->stu.getname(N);cout<<"\t\t\t\t"<<N;cout<<endl;q = q->Next ; }q = P->Next;if(q==NULL)return 1;cout<<"\n\n\t\t 请输入学生姓名:";cin>>N;i=0;q=P->Next;while(q){ q->stu.getname(M);if(strcmp(N,M)==0)i++;q = q->Next; }int j=0,k=1;if(i==0){ cout<<"\n\n\t\t没有这个学生!! 请按任意键返回.."<<endl;return 1; }else if(i>1){ cout<<"\n\n\t\t共找到"<<i<<"个姓名为"<<N<<"的学生"<<endl;cout<<"\t\t选择第几个:";cin>>k; }if(k>i||k<=0){ cerr<<"\n\t\t\t输入有误!按任意键继续"<<endl;return 1; }q = P->Next;j=0;while(q){ q->stu.getname(M);if(strcmp(N,M)==0)j++;if(j==k){ if(q->stu.retfactcourse()>=q->stu.retmaxcourse()){ cout<<"\n\t\t所选课程已满!按任意键继续"<<endl;return 1; }else{ subjectdb *t=X->Next;char N1[20];system("cls");;if(t!=NULL){ cout<<"\n\n\n\t\t所有课程如下:"<<endl;cout<<"\n\t\t\t\t课程名称\t\t 学分"<<endl; }else{ cerr<<"\n\n\n\t\t对不起,暂时没有课程"<<endl;return 1; }while(t){ t->sub.getkname(N1);cout<<"\t\t\t\t"<<N1<<setw(26-strlen(N1))<<t->sub.readcredit()<<endl;t = t->Next ; }char N2[20];cout<<"\n\t 输入你所要选的课程: ";cin>>N2;t = X->Next;while(t){ t->sub.getkname(N1);if(strcmp(N1,N2)==0){ if(q->stu.findcourse(N2)==1){ cout<<"\n\t\t此课程你已选过了,不能再选.按任意键继续"<<endl;return 1; }t=X->Next;char NA[20];while(t){ t->sub.getkname(NA);if(strcmp(NA,N2)==0){if(t->sub.retactivestudent()>=t->sub.retmaxstudent ()){ cout<<"\n\t\t此课程已选满,不能选.按任意键继续"<<endl;return 1; }}t = t->Next; }q->stu.addcourse(N2,0.0);cout<<"\n\n\t\t选课成功!按任意键继续"<<endl;return 1; }t = t->Next; }cerr<<"\n\t\t没有此课程!按任意键继续"<<endl; }return 1; }q = q->Next; }return 1; }int menu_1_2(studentdb *P,subjectdb *X) //学生情况{ studentdb *q=P->Next;char N[20];system("cls");cout<<"\n\n\t\t\t\t学生情况操作"<<endl;int i;if(q!=NULL){ cout<<"\n\n\n\t\t所有学生选课信息如下:\n"<<endl<<endl;cout<<"\t\t 姓名\t\t\t选课情况\n"<<endl; }else{ cerr<<"\n\n\n\t\t对不起,暂时没有学生名单!!请按任意键继续.."<<endl;return 1; }while(q){ q->stu.getname(N);cout<<"\t\t "<<N<<setw(25-strlen(N))<<" 已选"<<q->stu.retfactcourse()<<" 门课"<<endl;q = q->Next ; }char M[20];cout<<"\n\t\t输入要查看的学生姓名:";cin>>M;i=0;q=P->Next;while(q){ q->stu.getname(N);if(strcmp(N,M)==0)i++;q = q->Next; }int j=0,k=1;if(i==0){ cout<<"\n\t\t\t没找到这个学生!!请按任意键继续.."<<endl;return 1; }else if(i>1){ cout<<"\n\t\t共找到"<<i<<"个姓名为"<<M<<"的学生"<<endl;cout<<"\t\t选择第几个:";cin>>k; }if(k>i||k<=0){ cerr<<"\n\t\t\t输入有误!按任意键继续.."<<endl;return 1; }q = P->Next;j=0;q=P->Next;while(q){ q->stu.getname(N);if(strcmp(N,M)==0)j++;if(j==k){ system("cls");;course *T=q->stu.retroot();if(T==NULL){ cout<<"\n\n\n\t\t\t"<<N<<"同学你还未选课! 请按任意键继续.."<<endl;return 1; }if (T!=NULL)T = T->Next;cout<<"\n\n\n\t\t"<<N<<"同学你已选"<<q->stu.retfactcourse()<<"门课,具体如下\n\n"<<endl;cout<<"\t\t\t课程名称\t\t成绩\n"<<endl;while(T){ cout<<"\t\t\t"<<T->cname<<setw(25-strlen(T->cname))<<T->grade<<endl;T = T->Next; }j=0; }q = q->Next; }cout<<"\n\t\t请按任意键继续..."<<endl;return 1; }int menu_1_3(subjectdb *P) //选课情况{ subjectdb *q=P->Next;char N[20];system("cls");cout<<"\n\n\t\t\t\t选课情况操作"<<endl;if(q!=NULL){ cout<<"\n\n\n\t\t所有选课情况如下:\n"<<endl;cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl; }else{ cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl;return 1; }while(q){ q->sub.getkname(N);cout<<"\t\t\t"<<N<<setw(28-strlen(N))<<q->sub.retactivestudent()<<endl;q = q->Next ; }cout<<"\n\t\t请按任意键继续.."<<endl;return 1; }int menu_1_4(studentdb *X,subjectdb *P) //退出系统{ menu_2_9(X,P);tuichu();return 0; }//管理端功能函数int menu_2_1(studentdb *P) //增加学生{ char N[20];system("cls");;cout<<"\n\n\t\t\t\t增加学生操作\n"<<endl;cout<<"\n\n\t\t请输入学生姓名:";cin>>N;cout<<endl<<"\t\t增加学生操作成功,按任意键继续"<<endl;studentdb *newnode = new studentdb;newnode->Next = P->Next ;newnode->stu.readname(N);P->Next = newnode ;return 1; }int menu_2_2(subjectdb *P) //增加课程{ float k;char N[20],M[20];system("cls");;cout<<"\n\n\t\t\t\t增加课程操作\n"<<endl;cout<<"\n\n\t\t 请输入课程名称:";cin>>N;cout<<endl;subjectdb *q = P->Next;while(q){ q->sub.getkname(M);if(strcmp(N,M)==0){ cout<<"\n\t\t此课程已经存在,按任意键继续"<<endl;return 1; }q = q->Next; }cout<<"\t\t输入此课程的学分:";cin>>k;cout<<"\n\t\t增加课程操作成功,按任意键继续"<<endl;subjectdb *newnode = new subjectdb;newnode->Next = P->Next ;newnode->sub.setkname(N);newnode->sub.getcredit(k);P->Next = newnode ;return 1; }int menu_2_3(studentdb *P) //删除学生{ system("cls");cout<<"\n\n\t\t\t\t删除学生操作"<<endl;menu_2_7(P);studentdb *q = P->Next;if(q==NULL)return 1;int i;char N[20],M[20];cout<<"\n\t请输入要删除的学生姓名:";cin>>N;i=0;while(q){ q->stu.getname(M);if(strcmp(N,M)==0)i++;q = q->Next; }int j=0,k=1;if(i==0){ cerr<<"\n\t\t没有这个学生!!请按任意键继续.."<<endl;return 1; }else if(i>1){ cout<<"\n\t\t共找到"<<i<<"个姓名为"<<N<<"的学生"<<endl;cout<<"\n\t\t要删除第几个:";cin>>k; }if(k>i||k<=0)return 1;q = P->Next;studentdb *R = P;j=0;while(q){ q->stu.getname(M);if(strcmp(N,M)==0)j++;if(j==k){ R->Next = q->Next;free(q);cout<<"\n\t\t删除学生操作成功,按任意键继续.."<<endl;return 1; }q = q->Next;R = R->Next; }return 1; }int menu_2_4(subjectdb *P) //删除课程{ subjectdb *q=P->Next;char N[20];system("cls");;cout<<"\n\n\t\t\t\t删除课程操作"<<endl;if(q!=NULL)cout<<"\n\n\n\t\t所有课程如下:\n"<<endl;else{ cerr<<"\n\n\n\t\t对不起,暂时没有课程!!请按任意键继续.."<<endl;return 1; }while(q){ q->sub.getkname(N);cout<<"\t\t\t\t"<<N<<endl;q = q->Next ; }q = P->Next;subjectdb *R = P;if(q==NULL)return 1;char M[20];cout<<"\n\t 请输入要删除的课程:";cin>>M;while(q){ q->sub.getkname(N);if(strcmp(N,M)==0){ R->Next = q->Next;free(q);cout<<"\n\t\t删除课程操作成功,按任意键继续"<<endl;return 1; }q = q->Next;R = R->Next; }cerr<<"\n\t\t没有此课程!!\t请按任意键继续.."<<endl;return 1; }int menu_2_5(studentdb *X,subjectdb *P) //填写成绩{ subjectdb *q=P->Next;char M[20],N[20],NA[20];float score;system("cls");cout<<"\n\n\t\t\t\t 填写成绩操作\n"<<endl;if(q!=NULL)cout<<"\n\t\t\t课程名称\t\t选课人数\n"<<endl;else{ cout<<"\n\n\n\t\t对不起,暂时没有任何选修课程。

相关文档
最新文档