学生选修课管理系统C++课程设计
课程设计选课管理系统
课程设计选课管理系统一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握课程管理系统的基本概念、设计和实施方法。
技能目标要求学生能够运用课程管理系统进行课程安排、教学资源管理和教学评估。
情感态度价值观目标要求学生树立正确的教育观念,认识到课程管理系统在提高教学质量和效率方面的重要性。
通过本课程的学习,学生将能够:1.描述课程管理系统的基本概念和功能。
2.解释课程管理系统的设计原则和实施方法。
3.应用课程管理系统进行课程安排和教学资源管理。
4.评估课程管理系统的效果并进行改进。
5.认识到课程管理系统在提高教学质量和效率方面的重要性。
二、教学内容本课程的教学内容主要包括课程管理系统的基本概念、设计和实施方法。
具体内容包括:1.课程管理系统的定义、功能和分类。
2.课程管理系统的设计原则和方法。
3.课程管理系统的实施步骤和技巧。
4.课程管理系统在教学实践中的应用案例。
5.第1周:课程管理系统的基本概念。
6.第2周:课程管理系统的设计原则和方法。
7.第3周:课程管理系统的实施步骤和技巧。
8.第4周:课程管理系统在教学实践中的应用案例。
三、教学方法本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
通过多样化教学方法,激发学生的学习兴趣和主动性。
1.讲授法:教师讲解课程管理系统的基本概念、设计和实施方法。
2.讨论法:学生分组讨论课程管理系统的应用案例,分享心得体会。
3.案例分析法:分析实际应用中的课程管理系统,引导学生思考和解决问题。
4.实验法:学生动手操作课程管理系统,进行课程安排和教学资源管理。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:课程管理系统教材,用于讲解基本概念、设计和实施方法。
2.参考书:相关领域的研究成果和案例,用于拓展学生视野。
3.多媒体资料:教学PPT、视频和音频资料,用于辅助讲解和演示。
4.实验设备:计算机、投影仪等设备,用于实验操作和展示。
选修课管理系统文档(数据库课程设计)
数据库系统设计课程设计任务书计算机科学与技术学院制目录1.相关专业背景功能--------------------------------- 12.需求分析--------------------------------------- 43.概念模型与E-R图__________________________________13 4.E-R模型转换-----------------------------------145.数据库设计与建立------------------------------176、连接数据库---------------------------------------237. 个人总结-----------------------------------------248.参考文献--------------------------------------25一、选修课管理系统的相关背景功能选修课管理系统是一个面向学校教务管理人员、教师和学生并为其提供服务的管理系统。
选修课管理系统所经历的三个阶段一、没有电脑的年代,网上选课根本不存在,当时学生根据自己的爱好兴趣等方面,先选择相应的课程,然后由班级上报院系,再通过人工整理所上报的信息的办法,决定每个人的选课信息以及任课老师所教的课程,也就是说几乎谈不上选修课管理系统这么一说。
二、每个院系有了为数不多的几台电脑后,班级上报院系的信息,由院系先在电脑上登记,最后交给教务处,教务处通过选修课管理系统(还不够完善),经过审核决定最终结果并公布;三、电脑普及率很高,也就是现在这样,网上选课已不成问题,教务处直接通过选修课管理系统,了解与审核选课信息,最终决定最后的结果并公布。
有关选修课的概念与定义选修课与“必修课”相对。
主要指高等学校和中等专业学校中学习某一专业的学生可以有选择地学习的课程。
在教学计划中一般不作硬性规定。
分限制性选修课程(某些特定专业指定选修课程,对该专业来说可视为必修课)和非限制性选修课程(任意专业选修课程)两种。
教务管理系统c语言课程设计
教务管理系统c语言课程设计一、教学目标本课程的教学目标是使学生掌握教务管理系统的基本原理和设计方法,能够运用C语言进行简单的教务管理系统开发。
具体分为以下三个部分:1.知识目标:使学生掌握C语言的基本语法、数据结构、算法和面向对象编程思想,了解教务管理系统的功能和结构。
2.技能目标:培养学生具备运用C语言进行程序设计的能力,能够独立完成简单的教务管理系统模块设计与实现。
3.情感态度价值观目标:培养学生对编程事业的热爱,提高学生解决实际问题的积极性,培养学生的团队协作精神和自主学习能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、表达式、语句、函数等。
2.数据结构:数组、链表、栈、队列、树、图等。
3.算法:排序算法、查找算法、常用算法分析等。
4.面向对象编程:类、对象、封装、继承、多态等。
5.教务管理系统设计:系统需求分析、系统架构设计、模块划分、功能实现等。
三、教学方法为了达到本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解知识点,使学生掌握基本概念和原理。
2.案例分析法:分析实际案例,使学生了解教务管理系统的应用场景和设计方法。
3.实验法:让学生动手编写代码,培养实际编程能力。
4.讨论法:分组讨论问题,培养学生的团队协作精神和解决问题的能力。
四、教学资源为了支持本课程的教学内容和教学方法,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。
2.参考书:《数据结构与算法分析》(C语言版)、《深度探索C++对象模型》等。
3.多媒体资料:教学PPT、视频教程、在线编程练习等。
4.实验设备:计算机、网络环境、编程调试工具等。
五、教学评估本课程的评估方式包括以下几个部分:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。
2.作业:布置课后作业,评估学生的编程能力和对知识的理解程度。
c++学生管理系统课程设计
c++学生管理系统课程设计C++学生管理系统课程设计是一个非常常见的编程项目,旨在帮助学生练习使用C++语言来实现一个基本的学生信息管理系统。
这个系统可以用于录入、查看、修改和删除学生信息,并可以计算学生的平均分和排名。
在这个系统中,学生信息可以包括学号、姓名、性别、年龄、班级和成绩等。
通过使用C++的面向对象编程思想,可以创建一个学生类来表示学生信息,并可以在主程序中实例化该类来创建和管理学生对象。
首先,系统需要提供一个菜单界面,让用户可以选择不同的操作,比如添加学生信息、查看学生信息、修改学生信息和删除学生信息等。
用户可以通过输入相应的选项来执行特定的操作。
对于添加学生信息的操作,系统会要求用户输入学生的各个属性值,并根据输入的值创建一个新的学生对象并将其添加到系统中。
系统还可以提供验证机制,确保输入的学号不重复。
对于查看学生信息的操作,系统会将保存的学生信息按照一定的格式打印出来,以便用户查看。
用户可以选择按学号、姓名、班级等排序方式来查看学生信息。
对于修改学生信息的操作,系统会提示用户输入要修改的学生的学号,并根据学号在系统中查找对应的学生对象。
然后,用户可以选择要修改的属性,并输入新的值来更新学生对象的信息。
对于删除学生信息的操作,系统会提示用户输入要删除的学生的学号,并根据学号在系统中查找对应的学生对象。
然后,系统会确认用户是否要删除该学生信息,并在用户确认后将该学生对象从系统中移除。
除了上述基本功能,学生管理系统还可以提供其他附加功能,比如计算学生的平均分和排名。
系统可以遍历所有学生对象,并计算出他们的平均分和排名,然后将结果打印出来供用户查看。
总的来说,C++学生管理系统课程设计是一个综合性的编程项目,通过实现该项目,学生可以练习和巩固他们在C++语言和面向对象编程方面的知识。
此外,通过这个项目,学生还可以提高他们的逻辑思维能力和问题解决能力。
学生选课系统orcl课程设计
学生选课系统orcl课程设计一、教学目标本课程旨在通过学习Oracle学生选课系统的设计与实现,使学生掌握数据库管理系统的基本原理和应用,培养学生运用Oracle技术解决实际问题的能力。
具体目标如下:1.知识目标:–理解数据库管理系统的基本概念和架构。
–掌握Oracle数据库的基本操作和SQL语言。
–了解关系数据库的设计原则和范式。
–学习Oracle数据库的存储过程和触发器的编写。
2.技能目标:–能够熟练使用Oracle SQL进行数据查询、更新、删除和插入。
–能够设计和实现简单的数据库应用系统。
–能够编写简单的存储过程和触发器。
–能够对数据库进行性能优化和故障排除。
3.情感态度价值观目标:–培养学生的团队合作意识和问题解决能力。
–增强学生对数据库技术的重要性和应用前景的认识。
–培养学生对技术的热情和持续学习的动力。
二、教学内容本课程的教学内容主要包括Oracle数据库的基本概念、操作和应用。
具体内容包括:1.Oracle数据库的基本概念和架构。
2.SQL语言的基本操作,包括数据查询、更新、删除和插入。
3.关系数据库的设计原则和范式。
4.Oracle数据库的存储过程和触发器的编写和应用。
5.数据库性能优化和故障排除。
教学内容将按照上述主题进行,每个主题都将通过理论讲解、案例分析和实践操作相结合的方式进行教学。
三、教学方法为了提高学生的学习兴趣和主动性,将采用多种教学方法进行教学。
具体包括:1.讲授法:用于讲解基本概念、原理和理论知识。
2.案例分析法:通过分析实际案例,使学生更好地理解和应用理论知识。
3.实验法:通过实际操作,使学生掌握Oracle数据库的基本操作和应用。
4.小组讨论法:通过小组讨论,培养学生的团队合作意识和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备以下教学资源:1.教材:选用权威、实用的Oracle数据库教材。
2.参考书:提供相关的Oracle数据库参考书籍,供学生深入学习。
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)- 项目测试与调试教学内容根据课程目标,结合教材章节,进行科学组织和系统安排。
课程设计报告--学生选课管理系统
数据库课程设计报告学生选课管理系统班级: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 开头,登录帐号或密码输入错误会弹出相应的提示对话框。
管理信息系统课程设计--以学生选课系统为例
管理信息系统课程设计--以学生选课系统为例(共26页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--目录1、前言 (3)、系统简介、开发目的、可行性研究、使用环境与开发工具2、系统分析 (4)、系统基本功能描述、系统需求分析 6、组织机构6、管理职能分析 6、业务流程分析 6、数据流程分析 6、数据字典 6现行系统评价 63、新系统设计 (4)1、系统目标设计 52、新系统功能(模块)结构图 63、新系统计算机信息系统流程设计 64、代码设计 65、系统物理配置方案设计 66、数据库设计 67、输出/输入设计 68、程序模块设计说明 6四、设计小结 (1)1、小组总结 22、个人总结 3五、参考文献 (1)六、分工说明 (1)说明:我们小组研究的课题是:学生选修课信息管理系统。
在研究过程中,我们使用的开发工具主要是Windows2003和Visual 。
我们把研究的重点放在在系统分析、系统设计实现过程、方法及内容等方面。
1.前言系统简介管理信息系统是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以企业战略竞优、提高效益和效率为目的,支持企业的高层决策、中层控制、基层运作的集成化的人机系统。
其主要任务是最大限度的利用现代计算机及网络通讯技术加强企业的信息管理,通过对企业拥有的人力、物力、财力、设备、技术等资源的调查了解,建立正确的数据,加工处理并编制成各种信息资料及时提供给管理人员,以便进行正确的决策,不断提高企业的管理水平和经济效益。
随着Internet的飞速发展深刻地影响了人们的日常生活和商业运作方式。
社会的方方面面渗透着互连网的应用,使得一向烦琐的手工程序变得方便,快捷。
学校网上选课系统正是基于这一思想发展起来的。
学生网上选课系统已经在很多高校得到广泛的应用,而且深得广大师生的称赞。
学生成绩管理系统c语言课程设计报告
《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类0916班姓名:曹坤指导教师:汤哲学号: 02课程设计报告一、课程设计题目学生成绩管理系统1、需要处理的基础数据学生基本信息:如班级、学号、姓名、性别、年龄等。
学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*+平时成绩*)等。
主菜单2、系统的基本功能数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
3、链表struct stu /*定义学生基本信息结构体*/{int i; /*以输入的顺序来确定的学生序号*/char num[11];char classnum[5];char name[128];char sex[32];int age;float ave;struct stu *next;};int n=0; /*学生人数*/struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/{char lessonnum[11];char lessonname[256];float score;float testgrade;float commongrade;float grade;struct stu1 *next;};int m;struct stu1 *a[max_num] ;/*定义一个指针数组来记住课程链表地址*/ /*---------------------- 数据的录入程序-----------------------*/void create(void) /*建立学生基本信息链表*/{n=0;struct stu *p1,*p2;char ch,ch1;struct stu1 *create1(void);do{n=n+1;a[n]=0;system("cls");p1=(struct stu *)malloc(LEN);printf("\n学号:");scanf("%s",p1->num);printf("\n班级:");scanf("%s",p1->classnum);printf("\n姓名:");scanf("%s",p1->name) ;printf("\n性别:");scanf("%s",p1->sex);printf("\n年龄:");scanf("%d",&p1->age);if(n==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否输入选修课信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch1=getchar();if(ch1=='y'||ch1=='Y')a[n]=create1(); /*根据序号来记忆课程链表地址*/ p1->i=n;system("cls");printf("\n是否继续输入另一学生信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;}struct stu1 *create1(void) /*建立课程链表*/{m=0;struct stu1 *p1,*p2;char ch;struct stu1 *head=0;do{m=m+1;system("cls");p1=(struct stu1 *)malloc(LEM);printf("\n课程编号:");scanf("%s",p1->lessonnum);printf("\n课程名称:");scanf("%s",p1->lessonname);printf("\n学分:");scanf("%f",&p1->score);printf("\n考试成绩:");scanf("%f",&p1->testgrade);printf("\n平时成绩:");scanf("%f",&p1->commongrade);p1->grade=p1->testgrade*+p1->commongrade*;printf("\n综合成绩:%-6.1f",p1->grade);if(m==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否继续输入另一课程信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;return(head);}二、设计思路界面:界面的显示由循环语句和switch语句来控制完成。
c语言课程设计学生成绩管理系统报告
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
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.回到主菜单。
学生选课管理系统c语言
学生选课管理系统简介学生选课管理系统是一种用于学生选课和管理课程的系统。
通过该系统,学生可以方便地选取自己感兴趣的课程,并进行课程的管理和查询,同时教务部门可以通过系统进行课程的发布、修改和管理。
功能需求学生选课管理系统需要具备以下功能:1.学生注册和登录功能:学生需要先注册账号,然后通过账号登录系统。
2.学生选课功能:学生通过系统浏览可选的课程列表,并选择自己感兴趣的课程进行选课。
3.课程查询功能:学生可以查询已选和未选课程的详细信息,包括课程名称、授课教师、上课时间等。
4.课程管理功能:教务部门可以通过系统添加、修改和删除课程信息,包括课程名称、授课教师、上课时间等。
5.学生管理功能:教务部门可以通过系统管理学生信息,包括学生姓名、学号、选课情况等。
6.成绩管理功能:教务部门可以通过系统录入学生的成绩,并提供学生成绩查询功能。
7.课程评价功能:学生可以对已修完的课程进行评价,包括评分和评论。
8.学分统计功能:系统可以根据学生的选课情况自动计算学分和学分绩点,并提供查询功能。
技术实现为了实现学生选课管理系统,可以使用C语言进行开发。
以下是一些技术实现的建议:1.数据存储:可以使用文件系统来存储学生、课程和成绩等信息。
可以使用文本文件或二进制文件存储数据,通过文件操作函数进行读写。
2.用户界面:可以使用命令行界面或图形界面来实现用户的交互。
使用C语言的终端输出函数可以实现简单的命令行界面,使用图形界面库可以实现更复杂的图形界面。
3.数据结构:可以使用结构体来表示学生、课程和成绩等信息,通过数组或链表等数据结构进行管理。
4.用户认证:可以使用用户名和密码进行用户的身份验证。
可以将用户信息保存在文件中,通过比对输入的用户名和密码来验证用户身份。
5.查询和排序:可以使用各种算法来实现课程查询和排序功能。
例如,可以使用线性搜索来查询课程信息,使用冒泡排序或快速排序来对课程进行排序。
系统流程以下是学生选课管理系统的基本流程:1.学生注册和登录:学生在系统中注册账号,并通过账号登录系统。
C++学生信息管理系统课程设计报告
一、课程设计目的1.通过C++课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。
2.用所学的C++语言知识及其编程方法,包括类和对象、继承与多态等面向对象的基本思想和方法以及文件流的基本操作等内容。
通过布置具有一定难度的实际程序设计项目,要求学生独立完成所布置项目。
在分析设计过程中,要求学生养成良好的编程习惯,学会分析解决简单的实际问题,学会C++编程环境(VC++)的实际调试技巧和方法,要求学生在教师的指导下逐步完成应用程序的分析与设计过程。
二、课程设计的内容(一)、题目:学生信息管理系统(二)、目的与要求1。
目的:(1)基本掌握面向对象程序设计的基本思路和方法;(2)达到熟练掌握C++语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题2。
要求基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义三个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。
创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
3。
信息描述学生信息:学号、姓名、系别、班级和所选科目及各科成绩等。
4。
功能描述(1)使用继承的方法构造3个类(如人员类——-基类,普通学生类和管理员类—---派生类)使用相应的对象放置相应信息(2) 编写同名的display()成员函数,用来输出相应的内容(3)录入学生信息并保存(4)按不同类别输出学生信息(如按性别、年龄等)(5)查询学生信息(以一种或多种方式,如按名字、学号等检索)(6) 修改学生信息并保存(7) 删除学生信息(8) 计算学生的平均成绩三、设计说明总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理.也可根据自己对题目的理解增加新的功能模块.系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
C课程设计学生学籍管理系统
课程名称:C++面向对象程序设计课程设计题目:大学生学籍管理系统目录:一、系统设计目标、意义二、系统设计思路三、系统功能介绍四、输入输出的设计(1)界面的设计(2)数据输出设计(3)系统运行结果五、详细设计(1)系统功能结构图(2)U ML六、附录七、系统设计、开发过程中遇到的问题八、心得体会学生学籍管理系统一、系统设计目标、意义一系统实现的目标1、课程设计的任务:制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出;系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数;2、1基本功能:学生基本信息编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩成绩统计各科总成绩,各科平均成绩,各科的及格率2扩展功能:学生数据的添加、修改、与删除学生数据的读取与存储3、系统特点:系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找;二系统设计的意义通过设计此项程序,能够对学生的学籍进行统一的管理,对学生的学籍进行录入、修改、保存等功能进行处理,从而能够较快地对信息进行处理,系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,程序中查找运用了两种查找方式即学号查找和姓名查找,方便查询;二、系统设计思路第一步:分析题目,建立类并派生出它的子类,画出类图;第二步:画出流程,根据流程图编写程序清单第三步:上机调试程序使用单步调试,设置断点、分块调试的方法;第四步:及时整理资料,撰写课程设计报告中有关这个题目的内容;三、系统功能介绍一程序对学生学籍的数据处理要求①能够输入并浏览学生的基本信息;②能够实现对学生信息的查询和修改;③能够对成绩进行统计;④能够对学生的信息进行保存;二系统功能:资料维护:系统维护包括对各学生信息和成绩的录入操作;资料维护:对数据表中的信息进行浏览;系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息;四、输入输出的设计1.界面的设计①、界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据;②、功能设计通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容;应用系统主控界面包括学生信息录入,查找等功能模块;学生信息录入功能完成学生信息和成绩的输入;记录查询功能可以对数据各分类的记录进行查询;2.数据输出设计主要运行界面:统计界面:查找界面:显示界面:录入界面:保存界面:修改界面:删除界面:3、系统运行的结果:仅部分五、详细设计1、系统功能结构图:2、1类:student数据成员:编号,,省份证,数学成绩,英语成绩,计算机成绩2类:school成员函数:录入函数Input:输入编号到计算机的成绩;统计函数count:统计各科的总成绩,计算平均成绩,统计各科的及格率;查询函数found:按学号或姓名查找学生的记录;修改函数mend:修改指定学号学生成绩记录;删除函数del:删除指定学号学生记录;输出函数show:输出班级所有学生成绩记录;UML图:{int getnumber{ return number;}double getscoreint i { return scorei;}float getg{ return score0+score1+score2; }void input{ int e=1;cout<<"\t\t\t按提示输入:"<<endl;cout<<"\t\t输入编号: "; cin>>number;cout<<"\t\t输入姓名: "; cin>>name;do{cout<<"\t\t输入性别: ";cin>>sex;ifstrcmpsex,"男"==0 || strcmpsex,"女"==0{ cout<<"\t\t输入籍贯: ";cin>>place; cout<<"\t\t输入民族: ";cin>>nation;cout<<"\t\t输入生日: ";cin>>birth; cout<<"\t\t输入政治面貌: ";cin>>party; cout<<"\t\t输入身份证号: ";cin>>id; cout<<"\t\t输入数学分数: ";cin>>score0;cout<<"\t\t输入英语分数: ";cin>>score1;cout<<"\t\t输入计算机分数: ";cin>>score2;e=0;}else{cout<<"\t\t\t无此类型性别重新输入"<<endl;e=1; }}whilee;return ;}void inputifstream & is{is>>number>>name>>sex>>place>>nation>>birth>>party>>id>>score0>>score1>>score2;; }void output{cout<<"学生基本信息如下:"<<endl;cout<<"编号:"<<number<<" 姓名:"<<name<<" 性别:"<<sex <<" 籍贯:"<<place <<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl<<"身份证号:"<<id<<" 数学:"<<score0<<" 英语:"<<score1<<" 计算机:"<<score2<<" 总分:"<<getg<<endl<<endl;}void outputofstream & os{ os<<setw6<<number <<setw15<<name<<setw20<<place<<setw6<<nation<<setw20<<birth<<setw20<<party<<setw20<<id<<setw6<<score0<<setw6<<score1<<setw6<<score2<<endl;}};//操纵符指定宽度class school{public:school{ head=new student; head->next=NULL; key=0; }~school{ delete head; }void input; void mend; void del;int findstudent p,int num,char pn="^";void found; void show; void count;void save; void begin; void clear;char mainmenu;int getkey{ return key;}void setkeyint k{ key=k; }private:student head; int key;};//录入函数void school::input{student p,p2=NULL;p=head; int n;whilep->nextp=p->next;whilen{ p2=new student; p2->input;p->next=p2; p2->next=NULL; p=p->next; school::setkey1;cout<<"\t\t\t按1继续,按0返回 : "; cin>>n;} }//子查找函数int school::findstudent p1,int num,char pn{ student p; p=head;whilep->next{p1=p;if p->next->getnumber==num||strcmp p->next->getname,pnreturn 1; p=p->next;}return 0; }//查找函数void school::found{ student p;int num=-1,n=9; char name20="^";do{ cout<<"\t\t1:按编号查找,2:按姓名查找: ";cin>>n;}whilen<1||n>2;ifn==1{ cout<<"\t\t\t输入编号: ";cin>>num;}ifn==2{ cout<<"\t\t\t输入姓名: ";cin>>name; }iffind&p,num,name{ cout<<"\t\t找不到你要查找的内容"<<endl;return;}p->next->output;}//删除函数void school::del{ student p,p2; int num;cout<<"\t\t\t输入编号: "; cin>>num;if find&p,num,"^"{ cout<<"\t\t找不到你要删除的内容"<<endl;return;}p->next->output;p2=p->next; p->next=p2->next;delete p2;school::setkey1; }void school::show //显示函数{ student p; p=head;whilep->next{ p->next->output;p=p->next;}}//修改函数void school::mend{ student p; int num=-1,n;char name20="^";do{ cout<<"\t\t1:按编号修改,2:按姓名修改: "; cin>>n;}whilen<1||n>2;ifn==1{ cout<<"\t\t\t输入编号: ";cin>>num;}ifn==2{cout<<"\t\t\t输入姓名: ";cin>>name;}if find&p,num,name{ cout<<"\t\t找不到你要修改的内容"<<endl; return;}p->next->output; p->next->input; school::setkey1;}void school::save //保存函数{ student p; p=head;ofstream os"",ios::out;if school::getkey==1{whilep->next{ p->next->outputos;p=p->next; }}cout<<"\t\t\t文件已保存 "<<endl;school::setkey0;}void school::begin//初始化函数{ student p,p2;p=head; clear;long t;ifstream is"",ios::in;ifis{ ofstream os"",ios::out;;return ;}int num=-1;while1{ num=-1; t=;is>>num;t;ifnum<0{ ;return;}p2=new student; p2->inputis;p->next=p2; p2->next=NULL; p=p->next;}}void school::clear//清空函数{student p,p2;p=head->next;while p{p2=p; p=p->next;delete p2;}}void school::count//统计函数{student p; p=head;int n=0;double g3={0,0,0}; float j3={0,0,0};whilep->next{ p=p->next;n++;forint i=0;i<3;i++{ gi=gi+ p->getscorei ;p->getscorei >= ji++ : 0 ;}}cout<<"\t\t\b\b\b\b数学总分:"<<g0<<" 平均分:"<<g0/n <<" 及格率:"<<j0/n<<endl<<"\t\t\b\b\b\b英语总分:"<<g1<<" 平均分:"<<g1/n<<" 及格率:"<<j1/n<<endl<<"\t\t\b\b\b\b计算机总分: "<<g2<<" 平均分: "<<g2/n<<" 及格率:"<<j2/n<<endl;}//主选菜单函数char school::mainmenu{char n6;cout<<"\n\n ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆"<<endl<<endl <<" "<<endl<<" "<<endl<<" 1: 录入学生信息 "<<endl<<" 2: 显示学生信息 "<<endl<<" 3: 查找学生信息 "<<endl<<" 4: 删除学生信息 "<<endl<<" 5: 修改学生信息 "<<endl<<" 6: 统计学生成绩 "<<endl<<" 7: 保存学生信息 "<<endl<<" 0: 退出系统 "<<endl<<" "<<endl<<" "<<endl<<" 请选择:";cin>>n;return n0;}//主函数void main{school pp;int k=1; char n; ;whilek==1{ n=;switchn{ case '1':; break;case '2':; break;case '3':; break;case '4':; break;case '5':; break;case '6':; break;case '7':; break;case '0':if==1{ cout<<"\t\t\t是否保存 1 : 保存 0:不保存 : ";cin>>k;ifk==1;};k=0;break; }}}七、系统设计、开发过程中遇到的问题及创新点本程序基本完成了题目要求的功能;但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩;程序可通过改进,增加科目数;程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了;解决办法将输出函数的输出格式改一下,难点是计算输出点的控制;至于创新,就是在课题的选择上,我更加偏向于选择自己感兴趣的课题,更加注意程序的实用性八、心得体会通过这次课程设计,我学会了很多的知识,我通过自学相关的书籍,浏览网站,接触了大量的编程知识,在编程过程中逐渐提升自己的自学能力,克服困难的能力;我觉得首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试;程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询;根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握;理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力;我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力;。
C++课程设计(学生管理系统)
课程设计目的熟悉程序设计的基本流程,掌握程序设计基本方法,基本技巧、并能综合运用,提高程序设计能力。
通过实践,熟悉掌握C++语言中面向过程部分的内容,能够运用C++语言解决一个实际问题。
设计环境及语言VC+集成开发环境(IDE)Microsoft visual C++ 6。
0语言。
课题设计步骤1.需求分析从软件使用者处获得用户需求,确定课题开发应具备的功能;2.系统结构设计将整个系统功能分块,考虑各个功能模块应具备的功能,模块间的联系,划分不同的子系统进行设计;3.数据设计设计系统中新的数据类型、存储类型;4.代码设计在以上阶段的基础上编写代码;5.软件测试使用实现设计好的测试用例、测试次数对编制的程序进行测试,发现存在错误(包括潜在的问题),加以修改,完善。
课程设计内容:1.学生个人信息管理系统。
本课程设计通过建立、修改、查询、显示、排序等显示学生个人信息等功能,具体的技术有:(1)结构、枚举类型的定义与使用;(2)数组的定义使用;(3)程序的三种基本控制流程的综合、灵活运用;(4)普通指针和数组指针的定义和使用;(5)各类函数的定义和调用;(6)文件的输入/输出(7)程序的调试。
2.具备的功能有:(1)新增学生数据的添加:姓名,成绩.(2)修改学生信息:输入姓名,根据姓名,修改该学生的三项学生信息数据并显示;(3)删除一个学生信息:输入姓名,根据学生姓名删除该生信息;(4)根据学生姓名查询:输入姓名,查找该学生并显示学生个人信息;(5)显示全部学生信息;(6)根据学生姓名首字母先后排序学生个人信息;3.设计要求(1)在Visual C++控制台应用程序方式下设计课题。
(2)设计的程序完成该课程规定的功能。
(3) 程序具有一定的健壮性.4.设计部分#include<iostream。
h〉#include〈string.h>#include〈fstream。
h〉class stu //定义一个stu类{char name[20];double math,chinese,english,average,sum;public:stu(){}stu(char n[20],double ma,double chin,double eng){strcpy(name,n);math=ma;chinese=chin;english=eng;}double getsum(){sum=chinese+english+math;return sum;}double getaver(){average=getsum()/3;return average;}friend void main();};void main(){cout<〈"请选择您需要的操作!"〈<endl;cout〈〈”操作:"<〈endl;cout〈〈”(0)数据录入"<<endl;cout〈〈"(1)增加人员"〈〈endl;cout<〈”(2)删除人员”〈〈endl;cout<<”(3)修改数据"<<endl;cout〈〈"查询:"<<endl;cout〈<”(4)按总成绩查询”〈〈endl;cout<<"(5)按姓名查询”〈〈endl;cout<〈"(6)输出所有学生的数据"〈〈endl;cout<<"成绩名词"<<endl;cout<〈"(7)按总分查询排名”〈<endl;cout<〈"(8)按语文查询排名"<〈endl;cout<<"(9)按数学查询排名"〈〈endl;cout〈<”(y)按英语查询排名”〈<endl;cout〈<”选择相关操作请输入相对的括号里的阿拉伯数字!"<〈endl;char p;char w;stu *s[50];ofstream *file[50];int i=0;int j=0;bool flag2=0;do{cin>>p;if((p>='0'&&p〈='10'))flag2=1;elsecout<<"指令错误!请重新输入:"<<endl;}while(flag2==0);do{switch(p){case '0':{char c;char name[20];double math,chinese,english;do{cout<<"请输入姓名"<<endl;cin〉>name;cout〈〈”请输入数学成绩:”〈〈endl;cin>>math;cout<〈"请输入语文成绩:"<<endl;cin〉>chinese;cout<<"请输入外语成绩:"〈<endl;cin>〉english;file[j]=new ofstream(”d:\\document",ios::ate);*file[j]<<”姓名"〈<name〈<”数学成绩”〈〈math<〈”语文成绩"〈<chinese<〈”外语成绩”<〈english〈〈endl;j++;s[i]=new stu(name, math, chinese, english);i++;cout〈〈”数据录入成功,想继续录入吗(y/n)"<〈endl;cin>>c;flag2=0;do{if(c!=’y’&&c!='n'){cout<<”指令错误!请重新输入!"<<endl;cin〉>c;}elseflag2=1;}while(flag2==0);}while(c==’y’);break;}case '4’:{double t;char c;do{int flag1=0;cout〈<”请输入你要查询学生的总成绩"<<endl;cin〉>t;for(int q=0;q〈i;q++){if(s[q]—〉getsum()==t){flag1=1;cout<〈”您要查询的学生是:”〈<(*s[q])。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<iostream.h>#include<string.h>#include<fstream.h>#include <stdlib.h>#include <time.h>//using namespace std;const int count =3;class situaction;class student{ public:int sno;char sname[20];char sex[3];int age;char depart[20];char classno[20];char lianx[40];//public:friend void sselect();friend void supdate();friend void sdelet();friend void saccount();friend void sdisplay();friend istream & operator >> (istream & in,student &stu){in>>stu.sno>>stu.sname>>stu.sex>>stu.age>>stu.depart>>stu.classno>>stu.lianx;return in;}friend ostream & operator<< ( ostream & out,student &stu){out<<stu.sno<<" "<<stu.sname<<" "<<stu.sex<<" "<<stu.age<<" "<<stu.depart<<" "<<stu.classno<<" "<<stu.lianx<<endl;return out;}friend void xkadd();friend void sadd();};void sadd(){ while(1){int flag1=0;student s;cout<<"请输入要添加的学生的学号、姓名、性别、年龄、系别、班级、联系式"<<endl;cin>>s;ifstream in("e:\\studentfile.txt");if(!in){cout<<"打开学生信息文件失败!"<<endl;return ;}student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(s.sno==stu.sno) {flag1=1; break;}in.read((char*)&stu,sizeof(student));}in.close();if(flag1==1) cout<<"该学生已经在文件中存在不允添加!" <<endl;else{ ofstream out("e:\\studentfile.txt",ios::app);out.write((char*)&s,sizeof(student));out.close();}system("pause");break;}}void sselect(){ while(1){ system("cls");cout<<"***********请选择要查询的类别:*************"<<endl;cout<<"*********** 按学生学号请按1:************* "<<endl;cout<<"*********** 按学生姓名请按2:*************"<<endl;cout<<"*********** 按学生系别请按3:*************"<<endl;cout<<"*********** 按学生班级请按4:*************"<<endl;cout<<"*********** 返回上一级界面请按5:*************"<<endl;int sn;cin>>sn;while(sn>5||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;ifstream in("e:\\studentfile.txt");if(!in){ cout<<"打开学生信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的学生的学号"<<endl;cin>>no;student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(no==stu.sno) {cout<<stu<<endl; flag=1;}in.read((char*)&stu,sizeof(student));}break;}case 2: {char name[20];cout<<"请输入要查询的学生的姓名"<<endl;cin>>name;student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(strcpy(name,stu.sname)==0) {cout<<stu<<endl; flag=1;}in.read((char*)&stu,sizeof(student));}break;}case 3: {char dep[20];cout<<"请输入要查询的学生的系别"<<endl;cin>>dep;student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(strcmp(dep,stu.depart)==0) {cout<<stu<<endl; flag=1;}in.read((char*)&stu,sizeof(student));}break;}case 4: {char clno[20];cout<<"请输入要查询的学生的班级"<<endl;cin>>clno;student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(strcmp(clno,stu.classno)==0) {cout<<stu<<endl; flag=1;}in.read((char*)&stu,sizeof(student));}break;}case 5: return ;}in.close();if(flag==0) cout<<"要查询的学生在文件不存在!" <<endl;system("pause");}}void supdate(){ while(1){ system("cls");cout<<"***********请选择按下列类别查询后修改:*************"<<endl;cout<<"*********** 按学生学号请按1:************* "<<endl;cout<<"*********** 按学生姓名请按2:*************"<<endl;cout<<"*********** 按学生系别请按3:*************"<<endl;cout<<"*********** 按学生班级请按4:*************"<<endl;cout<<"*********** 返回上一级界面请按5:*************"<<endl;int sn;cin>>sn;while(sn>5||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;fstream in("e:\\studentfile.txt",ios::in|ios::out);if(!in){ cout<<"打开学生信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的学生的学号"<<endl;cin>>no;student stu;int i=0;in.seekg(i*sizeof(student),ios::beg);in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(no==stu.sno){ cout<<stu<<endl;cout<<"请输入要修改的学生的学号、姓名、性别、年龄、系别、班级、联系式"<<endl;cin>>stu;in.seekp(i*sizeof(student),ios::beg);in.write((char*)&stu,sizeof(student));flag=1;}i++;in.seekg(i*sizeof(student),ios::beg);in.read((char*)&stu,sizeof(student));}break;}case 2:case 3:case 4:case 5: return ;}in.close();if(flag==0) cout<<"要修改的学生在文件不存在!" <<endl;system("pause");}}void sdelet(){ while(1){ system("cls");cout<<"***********请选择按下列类别查询后删除:*************"<<endl;cout<<"*********** 按学生学号请按1:************* "<<endl;cout<<"*********** 按学生姓名请按2:*************"<<endl;cout<<"*********** 按学生系别请按3:*************"<<endl;cout<<"*********** 按学生班级请按4:*************"<<endl;cout<<"*********** 返回上一级界面请按5:*************"<<endl;int sn;cin>>sn;while(sn>5||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;student stu[20];int flag=0;switch(sn){case 1: { ifstream in("e:\\studentfile.txt");if(!in){ cout<<"打开学生信息文件失败!"<<endl;return ;}int n=0;in.read((char*)&stu[n],sizeof(student));while(!in.eof()){ n++;in.read((char*)&stu[n],sizeof(student));}in.close();int no;cout<<"请输入要删除的学生的学号"<<endl;cin>>no;for(int i=0;i<n;i++){ if(no==stu[i].sno){ cout<<stu[i]<<endl;cout<<"是否要删除该学生的信息!"<<endl;char ch;cin>>ch;if( ch='Y'||ch=='y'){for(int j=i;j<n;j++)stu[j]=stu[j+1];n--;}flag=1;}}if(flag==0) cout<<"要修改的学生在文件不存在!" <<endl;else{ofstream out("e:\\studentfile.txt");if(!out){ cout<<"打开学生信息文件失败!"<<endl;return ;}for(int k=0;k<n;k++){ out.seekp(k*sizeof(student),ios::beg);out.write((char*)&stu[k],sizeof(student));}out.close();}break;}case 2:case 3:case 4:case 5: return ;}system("pause");}}void saccount(){ ifstream ifs("e:\\studentfile.txt");if(!ifs){cout<<"打开文件失败!";system("pause");return ;}int i=0;student s;ifs.read((char*)&s,sizeof(student));while(!ifs.eof()){i++;ifs.read((char*)&s,sizeof(student));}ifs.close();cout<<"学生:"<<i<<"人"<<endl;ifs.close();system("pause");}void sdisplay(){ ifstream in("e:\\studentfile.txt",ios::in);if(!in){cout<<"打开学生信息文件失败!"<<endl;return ;}student stu;in.read((char*)&stu,sizeof(student));while(!in.eof()){ cout<<stu<<endl;in.read((char*)&stu,sizeof(student));}in.close();system("pause");}class course{ public:int cno;char cname[20];char cxz[10];int zxs;int xf;char kcxq[10];int xxrs;//public:friend void cadd();friend void cselect();friend void cupdate();friend void cdelet();friend void caccount();friend void cdisplay();friend istream & operator >> (istream & in, course &cou){in>>o>>ame>>cou.cxz>>cou.zxs>>cou.xf>>cou.kcxq>>cou.xxrs;return in;}friend ostream & operator <<(ostream & out,course &cou){ out<<o<<" "<<ame<<" "<<cou.cxz<<" "<<cou.zxs<<" "<<cou.xf<<" "<<cou.kcxq<<" "<<cou.xxrs<<endl;return out;}friend void xkadd();};void cadd(){ int flag1=0;course c;cout<<"请输入要添加的课程的课程代码、课程名称、课程性质、总学时、学分、开课学期、选修人数"<<endl;cin>>c;ifstream in("e:\\coursefile.txt");if(!in){cout<<"打开课程信息文件失败!"<<endl;return ;}course cou;in.read((char*)&cou,sizeof(course));while(!in.eof()){ if(o==o) {flag1=1; break;}in.read((char*)&cou,sizeof( course));}in.close();if(flag1==1) cout<<"该课程已经在文件中存在不允添加!" <<endl; else{ ofstream out("e:\\coursefile.txt",ios::app);out.write((char*)&c,sizeof(course));out.close();}system("pause");}void cselect(){while(1){ system("cls");cout<<"*********** 请选择要查询的类别:*************"<<endl;cout<<"*********** 按课程编号请按1:************* "<<endl;cout<<"*********** 按课程名称请按2:*************"<<endl;cout<<"*********** 返回上一级界面请按3:*************"<<endl;int sn;cin>>sn;while(sn>3||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;ifstream in("e:\\coursefile.txt");if(!in){ cout<<"打开课程信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的课程的编号"<<endl;cin>>no;course ke;in.read((char*)&ke,sizeof(course));while(!in.eof()){ if(no==o) {cout<<ke<<endl; flag=1;} in.read((char*)&ke,sizeof(course));//if(no==ke. char*)&ke,sizeof(course));}break;}case 2: {char name[25];cout<<"请输入要查询的课程的名称"<<endl;cin>>name;course ke;in.read((char*)&ke,sizeof(course));while(!in.eof()){ if(strcpy(name,ame)==0) {cout<<ke<<endl; flag=1;}in.read((char*)&ke,sizeof(course));}break;}case 3: return ;}in.close();if(flag==0) cout<<"要查询的课程在文件不存在!" <<endl;system("pause");}}void cupdate(){ while(1){ system("cls");cout<<"***********请选择按下列类别查询后修改:*************"<<endl;cout<<"*********** 按课程编号请按1:************* "<<endl; cout<<"*********** 按课程名称请按2:*************"<<endl;cout<<"*********** 按课程性质请按3:*************"<<endl;cout<<"*********** 按课程学分请按4:*************"<<endl;cout<<"*********** 返回上一级界面请按5:*************"<<endl;int sn;cin>>sn;while(sn>5||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;fstream in("e:\\studentfile.txt",ios::in|ios::out);if(!in){ cout<<"打开课程信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的课程的编号"<<endl;cin>>no;course k;int i=0;in.seekg(i*sizeof(course),ios::beg);in.read((char*)&k,sizeof(course));while(!in.eof()){ if(no==o){ cout<<k<<endl;cout<<"请输入要修改的课程的编号,名称,性质,学分"<<endl;cin>>k;in.seekp(i*sizeof(course),ios::beg);in.write((char*)&k,sizeof(course));flag=1;}i++;in.seekg(i*sizeof(course),ios::beg);in.read((char*)&k,sizeof(course));}break;}case 2: {int no;cout<<"请输入要查询的学生的学号"<<endl;cin>>no;student stu;int i=0;in.seekg(i*sizeof(student),ios::beg);in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(no==stu.sno){ cout<<stu<<endl;cout<<"请输入要修改的的课程的编号,名称,性质,学分"<<endl;cin>>stu;in.seekp(i*sizeof(student),ios::beg);in.write((char*)&stu,sizeof(student));flag=1;}i++;in.seekg(i*sizeof(student),ios::beg);in.read((char*)&stu,sizeof(student));}break;}case 3: return ;}in.close();if(flag==0) cout<<"要修改的选课信息在文件不存在!" <<endl;system("pause");}}void cdelet(){while(1){ system("cls");cout<<"***********请选择按下列类别查询后删除:*************"<<endl;cout<<"*********** 按课程编号请按1:************* "<<endl;cout<<"*********** 按课程名称请按2:*************"<<endl;cout<<"*********** 返回上一级界面请按3:*************"<<endl;int sn;cin>>sn;while(sn>3||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;course k[20];int flag=0;switch(sn){case 1: { ifstream in("e:\\coursefile.txt");if(!in){ cout<<"打开课程信息文件失败!"<<endl;return ;}int n=0;in.read((char*)&k[n],sizeof(course));while(!in.eof()){ n++;in.read((char*)&k[n],sizeof(course));}in.close();int no;cout<<"请输入要删除的课程的编号"<<endl;cin>>no;for(int i=0;i<n;i++){ if(no==k[i].cno){ cout<<k[i]<<endl;cout<<"是否要删除该课程的信息!"<<endl;char ch;cin>>ch;if( ch='Y'||ch=='y'){for(int j=i;j<n;j++)k[j]=k[j+1];n--;}flag=1;}}if(flag==0) cout<<"要修改的课程在文件不存在!" <<endl;else{ofstream out("e:\\coursefile.txt");if(!out){ cout<<"打开课程信息文件失败!"<<endl;return ;}for(int i=0;i<n;i++){ out.seekp(i*sizeof(course),ios::beg);out.write((char*)&k[i],sizeof(course));}out.close();}break;}case 2:case 3:case 4:case 5: return ;}system("pause");}}void caccount(){ ifstream ifs("d:\\coursetfile.txt");if(!ifs){cout<<"打开文件失败!";system("pause");return ;}int i=0;course ke;ifs.read((char*)&ke,sizeof(course));while(!ifs.eof()){ i++;ifs.read((char*)&ke,sizeof(course));}ifs.close();cout<<"课程:"<<i<<"门"<<endl;ifs.close();system("pause");}void cdisplay(){ ifstream in("e:\\coursefile.txt");if(!in){cout<<"打开课程信息文件失败!"<<endl;return ;}course cou;in.read((char*)&cou,sizeof( course));while(!in.eof()){ cout<<cou;in.read((char*)&cou,sizeof( course));}in.close();system("pause");}class situaction{ public:int sno;int cno;int score;// public:friend void xkadd();friend void xkselect();friend void xkupdate();friend void xkdelet();friend void xkaccount();friend void xkdisplay();friend istream & operator >> (istream & in, situaction &si){ in>>si.sno>>o;si.score=0;return in;}friend ostream & operator <<(ostream & out,situaction &si){ out<<si.sno<<" "<<o<<" "<<si.score<<endl;return out;}};void xkadd(){ situaction xk;cout<<"请输入要选修的学号、课程号"<<endl;cin>>xk;int flag1=0, flag2=0;ifstream in1("e:\\studentfile.txt");if(!in1){cout<<"打开学生信息文件失败!"<<endl;return ;}student stu;in1.read((char*)&stu,sizeof(student));while(!in1.eof()){ if(xk.sno==stu.sno) {flag1=1; break;}in1.read((char*)&stu,sizeof(student));}in1.close();if(flag1==0) cout<<"该学生不存在不允选课!" <<endl; else{ course cou;ifstream in2("e:\\coursefile.txt");if(!in2){cout<<"打开课程文件失败!"<<endl;return ;}in2.read((char*)&cou,sizeof(course));while(!in2.eof()){ if(o==o) {flag2=1; break;}in2.read((char*)&cou,sizeof(course));}in2.close();if(flag2==0) cout<<"该课程不存在不允选课!" <<endl;else{ situaction si;int scount=0,ccount=0;ifstream in3("e:\\situationfile.txt");if(!in3){cout<<"打开选课文件失败!"<<endl;return ;}in3.read((char*)&si,sizeof(situaction));while(!in3.eof()){ if(xk.sno==si.sno) ccount++;if(o==o) scount++;in3.read((char*)&si,sizeof(situaction));}in3.close();if(cou.xxrs<=scount) cout<<"该课程人数已满不允选课!" <<endl;else if(count<=ccount) cout<<"该学生已选满"<<count<<"不允选课!" <<endl;else{ ofstream out("e:\\situactionfile.txt",ios::app);out.write((char*)&xk,sizeof(situaction));out.close();}}}system("pause");void xkselect(){while(1){ system("cls");cout<<"*********** 请选择要查询的类别:*************"<<endl;cout<<"*********** 按学生编号请按1:************* "<<endl;cout<<"*********** 按课程编号请按2:************* "<<endl;cout<<"*********** 返回上一级界面请按3:*************"<<endl;int sn;cin>>sn;while(sn>3||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;ifstream in("e:\\situactionfile.txt");if(!in){ cout<<"打开选课信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的学生的学号"<<endl;cin>>no;situaction stu;in.read((char*)&stu,sizeof(situaction));while(!in.eof()){ if(no==stu.sno) {cout<<stu<<endl; flag=1;}in.read((char*)&stu,sizeof(situaction));}break;}case 2: {int no;cout<<"请输入要查询的课程的编号"<<endl;cin>>no;situaction ke;in.read((char*)&ke,sizeof(situaction));while(!in.eof()){ if(no==o) {cout<<ke<<endl; flag=1;}in.read((char*)&ke,sizeof(situaction));// if(no==ke. char*)&ke,sizeof(course));}break;}case 3: return ;}in.close();if(flag==0) cout<<"要查询的选课在文件不存在!" <<endl;system("pause");}}void xkupdate(){while(1){ system("cls");cout<<"***********请选择按下列类别查询后修改:*************"<<endl;cout<<"*********** 按课程编号请按1:************* "<<endl;cout<<"*********** 按学生学号请按2:*************"<<endl;cout<<"*********** 返回上一级界面请按3:*************"<<endl;int sn;cin>>sn;while(sn>3||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;fstream in("e:\\situactionfile.txt",ios::in|ios::out);if(!in){ cout<<"打开选课信息文件失败!"<<endl;return ;}int flag=0;switch(sn){case 1: {int no;cout<<"请输入要查询的课程的编号"<<endl;cin>>no;situaction si;int i=0;in.seekg(i*sizeof(situaction),ios::beg);in.read((char*)&si,sizeof(situaction));while(!in.eof()){ if(no==o){ cout<<si<<endl;cout<<"请输入要修改的选课信息的学生学号,选课信息,成绩"<<endl;cin>>si;in.seekp(i*sizeof(situaction),ios::beg);in.write((char*)&si,sizeof(situaction));flag=1;}i++;in.seekg(i*sizeof(situaction),ios::beg);in.read((char*)&si,sizeof(situaction));}break;}case 2: {int no;cout<<"请输入要查询的学生的学号"<<endl;cin>>no;student stu;int i=0;in.seekg(i*sizeof(student),ios::beg);in.read((char*)&stu,sizeof(student));while(!in.eof()){ if(no==stu.sno){ cout<<stu<<endl;cout<<"请输入要修改的选课信息的学生学号,选课信息,成绩"<<endl;cin>>stu;in.seekp(i*sizeof(situaction),ios::beg);in.write((char*)&stu,sizeof(situaction));flag=1;}i++;in.seekg(i*sizeof(situaction),ios::beg);in.read((char*)&stu,sizeof(situaction));}break;}case 3: return ;}in.close();if(flag==0) cout<<"要修改的课程在文件不存在!" <<endl;system("pause");}}void xkdelet(){while(1){ system("cls");cout<<"***********请选择按下列类别查询后删除:*************"<<endl;cout<<"*********** 按学生学号请按1:************* "<<endl;cout<<"*********** 按课程编号请按2:*************"<<endl;cout<<"*********** 返回上一级界面请按3:*************"<<endl;int sn;cin>>sn;while(sn>3||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;student stu[20];course k[20];int flag=0;switch(sn){case 1: { ifstream in("e:\\situactionfile.txt");if(!in){ cout<<"打开学生信息文件失败!"<<endl;return ;}int n=0;in.read((char*)&stu[n],sizeof(student));while(!in.eof()){ n++;in.read((char*)&stu[n],sizeof(student));}in.close();int no;cout<<"请输入要删除的学生的学号"<<endl;cin>>no;for(int i=0;i<n;i++){ if(no==stu[i].sno){ cout<<stu[i]<<endl;cout<<"是否要删除该学生的选课信息!"<<endl;char ch;cin>>ch;if( ch='Y'||ch=='y'){for(int j=i;j<n;j++)stu[j]=stu[j+1];n--;}flag=1;}}if(flag==0) cout<<"要修改的学生在文件不存在!" <<endl;else{ofstream out("e:\\studentfile.txt");if(!out){ cout<<"打开学生信息文件失败!"<<endl;return ;}for(int k=0;k<n;k++){ out.seekp(k*sizeof(student),ios::beg);out.write((char*)&stu[k],sizeof(student));}out.close();}break;}case 2: { ifstream in("e:\\situactionfile.txt");if(!in){ cout<<"打开课程信息文件失败!"<<endl;return ;}int n=0;in.read((char*)&k[n],sizeof(course));while(!in.eof()){ n++;in.read((char*)&k[n],sizeof(course));}in.close();int no;cout<<"请输入要删除的课程的编号"<<endl;cin>>no;for(int i=0;i<n;i++){ if(no==k[i].cno){ cout<<k[i]<<endl;cout<<"是否要删除该课程的信息!"<<endl;char ch;cin>>ch;if( ch='Y'||ch=='y'){for(int j=i;j<n;j++)k[j]=k[j+1];n--;}flag=1;}}if(flag==0) cout<<"要修改的课程在文件不存在!" <<endl;else{ofstream out("e:\\coursefile.txt");if(!out){ cout<<"打开课程信息文件失败!"<<endl;return ;}for(int i=0;i<n;i++){ out.seekp(i*sizeof(course),ios::beg);out.write((char*)&k[i],sizeof(course));}out.close();}break;}system("pause");}}}void xkaccount(){ ifstream ofs("e:\\situactionfile.txt");if(!ofs){ cout<<"打开文件失败!";system("pause");return ;}int i=0;int sn=0,sscore=0;int =0,cscore=0;int sno;cout<<"输入要统计的学生编号"<<endl;cin>>sno;int cno;cout<<"输入要统计的课程编号"<<endl;cin>>cno;situaction si;ofs.read((char*)&si,sizeof(situaction));while(!ofs.eof()){ if(si.sno ==sno){ sn++; sscore+=si.score;}if(o ==cno){ ++; cscore+=si.score;}ofs.read((char*)&si,sizeof(situaction));}ofs.close();cout<<sno<<"同学已经选课:"<<sn<<"门"<<"其平均成绩:"<<(float)sscore/sn<<endl;cout<<cno<<"门课程已经选课:"<<<<"人"<<"该课程的平均成绩:"<<(float)cscore/<<endl;ofs.close();system("pause");}void xkdisplay(){ifstream in("e:\\situactionfile.txt");if(!in){cout<<"打开课程信息文件失败!"<<endl;return ;}situaction si;in.read((char*)&si,sizeof(situaction));while(!in.eof()){ cout<<si;in.read((char*)&si,sizeof( situaction));}in.close();system("pause");}void addmenu(){while(1){ system("cls");cout<<"***********请选修要添加信息的类别:*************"<<endl;cout<<"*********** 学生信息添加请按1:************* "<<endl;cout<<"*********** 课程信息添加请按2:*************"<<endl;cout<<"*********** 选课信息添加请按3:*************"<<endl;cout<<"*********** 返回主界面请按4:*************"<<endl;int sn;cin>>sn;while(sn>4||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;switch(sn){case 1: sadd(); break;case 2: cadd(); break;case 3: xkadd(); break;case 4: return ;}}system("pause");}void selectmenu(){while(1){ system("cls");cout<<"***********请选修要查询信息的类别:*************"<<endl;cout<<"*********** 学生信息查询请按1:************* "<<endl;cout<<"*********** 课程信息查询请按2:*************"<<endl;cout<<"*********** 选课信息查询请按3:*************"<<endl;cout<<"*********** 返回主界面请按4:*************"<<endl;int sn;cin>>sn;while(sn>4||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;switch(sn){case 1: sselect(); break;case 2: cselect(); break;case 3: xkselect(); break;case 4: return ;}}system("pause");}void deletmenu(){while(1){ system("cls");cout<<"***********请选修要删除信息的类别:*************"<<endl;cout<<"*********** 学生信息删除请按1:************* "<<endl;cout<<"*********** 课程信息删除请按2:*************"<<endl;cout<<"*********** 选课信息删除请按3:*************"<<endl;cout<<"*********** 返回主界面请按4:*************"<<endl;int sn;cin>>sn;while(sn>4||sn<1){cout<<"选择的数据无效,请重新输入:"<<endl;cin>>sn;}cout<<endl;switch(sn){case 1: sdelet(); break;case 2: cdelet(); break;case 3: xkdelet(); break;case 4: return ;}}system("pause");。