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学生选课系统-课程设计报告

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文件。
学生选课系统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.教材:选择合适的教材,为学生提供系统的学习资料。
C语言选课管理系统课程设计

C语言选课管理系统课程设计一、教学目标本课程旨在让学生掌握C语言选课管理系统的开发方法,培养其编程能力和问题解决能力。
具体目标如下:1.知识目标:学生能够理解C语言的基本语法、数据结构和常用算法;掌握面向对象编程思想。
2.技能目标:学生能够使用C语言进行程序设计,独立完成选课管理系统的开发;具备调试和优化程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,使其认识到编程在实际应用中的重要性,提高其创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言基础知识、数据结构、算法、面向对象编程和选课管理系统的设计与实现。
具体安排如下:1.C语言基础知识:介绍C语言的基本语法、变量、运算符、控制结构等。
2.数据结构:讲解数组、链表、栈、队列、树等基本数据结构及其应用。
3.算法:学习常用排序算法、查找算法、递归算法等,培养学生的算法思维。
4.面向对象编程:介绍类、对象、封装、继承、多态等基本概念,并学会使用面向对象的方法解决问题。
5.选课管理系统设计与实现:分析系统需求,设计系统架构,编写功能模块,完成系统集成。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解基本概念、语法和算法,使学生掌握理论知识。
2.讨论法:学生针对案例进行分析,培养其问题解决能力和团队合作精神。
3.案例分析法:分析实际项目案例,使学生学会将理论知识应用于实际问题。
4.实验法:让学生动手编写代码,培养其编程能力和实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的教材,如《C程序设计原理与应用》、《C++ Primer》等。
2.参考书:提供相关领域的经典著作,如《算法导论》、《数据结构与算法分析》等。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
4.实验设备:保证学生有足够的实践机会,提高其编程能力和实践能力。
选课系统课设报告

选课系统课设报告全文共四篇示例,供读者参考第一篇示例:选课系统课设报告一、引言随着教育领域的不断发展,高校教学管理系统也在不断完善,选课系统作为高校教学管理系统的一个重要组成部分,对学生和教师的教学生活起着至关重要的作用。
本报告将针对选课系统进行设计与开发,以提高选课效率、方便学生和教师的教学活动。
二、系统需求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. 系统部署:系统部署在高校的教学管理平台上,学生和教师可以通过互联网访问系统进行选课操作。
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学生选课系统课程设计一、课程目标知识目标: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、在“密码安全〞下拉菜单中有“密码修改〞通过“密码修改〞可以使原用户还可通过密码修改来不定期修改自己的原始密码,保证了数据的真实性和安全性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(此文档为word格式,下载后您可任意编辑修改!) 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对不起,暂时没有任何选修课程。