学生选课管理系统

合集下载

学生选课管理系统设计

学生选课管理系统设计

学生选课管理系统设计一、引言学生选课管理系统是一种用于高校学生选课和管理选课信息的系统。

随着教育信息化的发展,学生选课管理系统的设计和应用对于提高教育质量、优化教学流程具有重要意义。

本文将围绕学生选课管理系统的设计展开讨论,包括系统的功能需求、数据库设计、系统架构等方面。

二、系统功能需求1. 学生模块•学生登录系统•学生浏览可选课程•学生选择课程•学生查看已选课程•学生退选课程2. 教师模块•教师登录系统•教师发布课程信息•教师查看本人所教授课程•教师查看选课学生信息3. 管理员模块•管理员登录系统•管理员管理学生信息•管理员管理教师信息•管理员管理课程信息三、数据库设计1.学生表(student)•学生ID•学生姓名•学生年龄•所选课程ID2.教师表(teacher)•教师ID•教师姓名•所教课程3.课程表(course)•课程ID•课程名称•授课教师•上课时间•上课地点四、系统架构学生选课管理系统采用B/S架构,前端使用HTML、CSS、JavaScript进行开发,后端采用Java语言和MySQL数据库进行搭建。

系统的主要模块包括学生模块、教师模块、管理员模块以及数据管理模块。

五、系统流程1.学生打开选课系统网页,输入账号和密码进行登录。

2.学生浏览可选课程列表,选择感兴趣的课程。

3.学生提交选课申请,系统自动将选课信息存入数据库。

4.教师登录系统后,可以查看自己所教授的课程和选课学生信息。

5.管理员负责管理学生、教师和课程信息,并保证系统正常运行。

六、系统优势学生选课管理系统的设计和应用,有效提高了教务管理效率,减少了手工操作,降低了选课过程中的错误率,提升了学生和教师的体验。

通过系统记录和分析学生选课情况,学校可以更好地根据实际需求进行教学资源配置,优化课程设置,提高教学质量。

七、总结学生选课管理系统是一种便捷高效的教务管理工具,对于高校提高教学质量和管理水平具有积极作用。

通过本文对学生选课管理系统设计的讨论,希望能够为相关教育管理工作者提供一些参考和借鉴,促进教育信息化建设的不断完善和发展。

学生选课管理系统java+数据库

学生选课管理系统java+数据库

学生选课管理系统java+数据库简介学生选课管理系统是一个基于Java编程语言和数据库开发的系统,旨在提供学生选课的便捷和教务管理的智能化。

该系统具有课程管理、学生管理、教师管理、选课关联等功能模块,可以实现学生选课、教师管理课程、生成选课报表等操作。

功能模块1. 课程管理•提供课程信息录入和编辑功能,包括课程号、课程名称、授课教师等信息。

2. 学生管理•支持学生信息的录入、查询、修改和删除,学生信息包括学号、姓名、性别、年级等。

3. 教师管理•实现对教师信息的管理,可以录入教师信息、查询教师信息、修改和删除教师信息。

4. 选课关联•学生可以根据课程列表进行选课操作,系统会检查选课的合法性,避免时间冲突等问题。

数据库设计系统采用关系型数据库存储数据,设计了以下表结构: 1. 课程表:存储课程的信息,包括课程号、课程名称、授课教师等字段。

2. 学生表:存储学生的信息,包括学号、姓名、性别、年级等字段。

3. 教师表:存储教师的信息,包括教师号、姓名、职称等字段。

4. 选课表:记录学生选课的信息,包括学号、课程号、选课状态等字段。

技术实现系统使用Java语言开发,结合数据库技术进行数据存储和查询。

通过编写DAO(Data Access Object)层实现数据访问,实现了数据的持久化和业务逻辑的分离。

在用户界面方面,可以使用Swing或JavaFX等技术实现交互界面,使用户可以方便地操作系统功能。

总结学生选课管理系统是一个方便学生选课和教务管理的工具,通过Java编程语言和数据库技术的结合,实现了课程管理、学生管理、教师管理和选课关联等功能。

系统设计合理,可以提高选课效率,降低管理成本,是教育管理的重要辅助工具。

以上是对学生选课管理系统的介绍,希望能够为你对这一类型系统的理解提供帮助。

学生网上选课管理系统(uml)

学生网上选课管理系统(uml)

《学生网上选课管理系统(UML)》一、系统概述学生网上选课管理系统是基于UML(统一建模语言)进行设计的,旨在为学生提供一个便捷、高效的选课平台。

本系统通过对选课流程的规范化管理,提高了选课效率,降低了教务管理人员的工作负担,同时保证了选课过程的公平、公正。

二、系统功能模块1. 用户登录模块用户登录模块包括学生登录和教务管理员登录两个部分。

学生通过学号和密码登录系统,进行选课操作;教务管理员则负责维护课程信息、监控选课过程及处理异常情况。

2. 课程浏览模块课程浏览模块为学生提供了丰富的课程信息,包括课程名称、课程编号、上课时间、上课地点、授课教师等。

学生可根据个人兴趣和需求筛选课程,为选课做好充分准备。

3. 选课操作模块选课操作模块是系统的核心部分,学生可以在该模块进行课程选择、退选、查看已选课程等操作。

系统会实时更新选课结果,确保学生选课的实时性和准确性。

4. 课程管理模块课程管理模块供教务管理员使用,主要包括课程信息维护、选课人数限制、选课时间设置等功能。

教务管理员可根据实际情况调整课程安排,确保选课工作的顺利进行。

5. 数据统计与分析模块数据统计与分析模块负责收集、整理选课数据,为教务管理员提供决策依据。

通过分析选课结果,教务管理员可以了解学生选课偏好,优化课程设置,提高教学质量。

三、系统特点1. 操作简便:系统界面设计简洁,操作流程清晰,便于学生快速上手。

2. 高效性:采用UML建模,系统结构合理,数据处理速度快,提高了选课效率。

3. 安全性:系统采用加密技术,保障用户数据安全,防止信息泄露。

4. 可扩展性:系统设计充分考虑未来发展需求,便于功能扩展和升级。

5. 易维护性:模块化设计,便于后期维护和故障排查。

《学生网上选课管理系统(UML)》四、系统角色与权限划分1. 学生角色查询和浏览课程信息;进行选课、退课操作;查看个人选课记录和课程表;接收选课通知和系统消息。

2. 教务管理员角色发布和更新课程信息;设置选课时间、人数限制等参数;监控选课过程,处理选课异常情况;管理学生账户信息,包括权限分配和密码重置;查询和导出选课数据,进行统计分析。

数据库学生选课管理系统

数据库学生选课管理系统

数据库学生选课管理系统一、引言数据库学生选课管理系统是一种用于高校教务管理的工具,旨在帮助学校管理学生选课、课程信息以及学生成绩等数据。

通过该系统,学生可以方便地进行选课、退课操作,教师可以查看学生成绩并进行评价,学校管理人员可以实时掌握学生选课情况,从而更好地安排教学计划和资源。

二、系统功能1. 学生端功能•学生登录:学生通过账号和密码登录系统;•查看可选课程:学生可以浏览当前学期开设的课程,了解课程内容和开课时间;•选课:学生在规定时间内进行选课操作,选择感兴趣的课程并提交选课申请;•退课:学生在选课期间可以自主进行退课操作,取消已选的课程;•查看成绩:学生可以查询已修课程的成绩和评价。

2. 教师端功能•教师登录:教师通过账号和密码登录系统;•查看所教课程:教师可以查看自己当前任教的课程列表和学生名单;•录入成绩:教师可以录入学生成绩,并进行评价;•查询学生成绩:教师可以查询所教课程学生的成绩。

3. 管理员端功能•管理员登录:管理员通过账号和密码登录系统;•管理学生信息:管理员可以添加、修改、删除学生信息,包括个人信息和选课情况;•管理教师信息:管理员可以添加、修改、删除教师信息,包括个人信息和任教课程。

三、系统实现1. 数据库设计系统数据库包含以下表格:•学生表(Student):用于存储学生基本信息,如学号、姓名、性别等;•课程表(Course):用于存储课程信息,如课程编号、课程名称、学分等;•选课表(Enrollment):用于存储学生选课信息,关联学生和课程;•成绩表(Grade):用于存储学生成绩信息,包括学生、课程和成绩。

2. 系统架构系统采用B/S架构,前端使用HTML、CSS、JavaScript实现页面交互,后端使用Java语言编写业务逻辑,数据库采用MySQL实现数据存储。

3. 用户角色权限系统根据用户角色划分权限,学生可以进行选课、退课和查看成绩操作;教师可以录入成绩和查询学生成绩;管理员可以管理学生和教师信息。

学生选课管理系统数据库设计GUI

学生选课管理系统数据库设计GUI

学生选课管理系统数据库设计GUI导言学生选课管理系统是教育管理中一个重要的组成部分,它为学生和教师提供了便捷的选课和管理服务。

本文旨在设计一个图形用户界面(GUI),用于展示学生选课管理系统的数据库设计。

数据库设计在学生选课管理系统中,需要设计数据库以存储诸如学生信息、课程信息、选课信息等数据。

以下是关于这些数据的数据库设计:学生信息表•学生ID (Primary Key)•学生姓名•年龄•性别•班级课程信息表•课程ID (Primary Key)•课程名称•授课教师•学分•上课时间选课信息表•记录ID (Primary Key)•学生ID (Foreign Key)•课程ID (Foreign Key)•选课时间•成绩GUI设计为了用户能够方便地进行选课管理操作,我们设计了以下功能模块的GUI界面:学生信息管理界面•展示学生信息列表•添加学生信息•删除学生信息•编辑学生信息课程信息管理界面•展示课程信息列表•添加课程信息•删除课程信息•编辑课程信息选课信息管理界面•展示选课信息列表•添加选课信息•删除选课信息•编辑选课信息界面布局为了使用户操作更加直观和友好,我们采用了以下界面布局设计: - 顶部导航栏:包含学生、课程、选课等功能入口 - 左侧侧边栏:包含各功能操作的快捷链接- 主页面展示区:显示当前所选功能的内容总结学生选课管理系统数据库设计GUI的目标是为用户提供便捷的选课管理操作界面,通过设计合理的数据库结构和直观友好的GUI界面,提升用户体验和系统效率。

希望本文的设计能够对学生选课管理系统的开发和应用提供一定的参考和帮助。

学生选课管理系统的总结

学生选课管理系统的总结

学生选课管理系统的总结
学生选课管理系统是教育科技发展下,用于支持学校管理学生选课的软件系统,它可以更有效地帮助学校实现学生选课管理工作。

学生选课管理系统的实现,可以有效地改善学校的教学管理工作。

首先,它可以更有效地帮助学校管理学生选课,让学生能够有效地安排自己的研究时间,并且提高课堂教学的质量。

其次,它可以有效地帮助学校实现教学资源的优化利用,提高教学效率,减少教学费用。

此外,学生选课管理系统还可以有效地帮助学校管理学生选课,提高学校的教学管理水平。

学生选课管理系统的实施,需要充分结合学校的实际情况,针对性地完善系统的功能,以满足学校的特定需求。

首先,需要建立一个完善的学生息管理系统,以便于学校更好地管理学生的学籍、学分等息。

其次,需要建立一个完善的课程管理系统,以便于学校更好地管理学生选课、课程安排等息。

此外,还需要建立一个完善的教师、实验室等资源管理系统,以便于学校更好地管理教师资源、实验室资源等。

学生选课管理系统的成功实施,将有助于改善学校的教学管理水平,提高教学效率,提高学生研究的质量,促进学校的发展。

但是,学生选课管理系统的实施也需要学校相关负责人的配合,建立一套完善的管理制度,加强管理工作,以保证学生选课管理系统的有效运行。

总之,学生选课管理系统是一个功能强大的教育科技系统,它能够有效地改善学校的教学管理工作,为学校的发展提供有力的支持。

但是,学生选课管理系统的实施也需要学校相关负责人的配合,建立完善的管理制度,加强管理工作,以保证学生选课管理系统的有效运行。

数据库课程设计学生选课管理系统

数据库课程设计学生选课管理系统
管理。
01
课程管理
包括课程信息录入、查询、修改等功 能,支持多类型课程管理。
03
排课管理
根据课程和学生信息,自动生成排课表,支 持手动调整。
05
02
学生管理
包括学生基本信息录入、查询、修改等功能 。
04
选课管理
支持学生在线选课、退课,实现选课 过程的自动,生成成 绩单等功能。
数据库课程设计学生 选课管理系统
2024-01-09
目录
• 系统概述 • 需求分析 • 系统设计 • 系统实现 • 系统运行与维护 • 课程设计总结与展望
01
系统概述
背景与意义
教育信息化趋势
随着教育信息化的深入发展,学生选课管理系统的建立成 为提高教学管理水平、优化资源配置的必然趋势。
传统选课方式弊端
教师用户
能够发布课程信息、查看 选课学生名单、录入学生 成绩。
管理员用户
能够管理系统用户、课程 信息、学生选课数据、成 绩数据。
功能需求
课程管理
实现课程信息的增 删改查等功能。
成绩管理
实现学生成绩的录 入、修改、查看等 功能。
用户管理
实现用户注册、登 录、权限分配等功 能。
选课管理
实现学生选课、退 课、查看选课结果 等功能。
技术应用
采用了先进的数据库技术,如SQL语言、数据库 设计等,确保了系统的稳定性和高效性。
3
用户界面
设计了简洁、直观的用户界面,方便学生进行选 课操作。
经验教训分享
需求分析重要性
01
在项目初期,充分进行需求分析,明确系统功能和性能要求,
有助于避免后期需求变更带来的麻烦。
团队协作
02

学生选课管理系统的分析与设计

学生选课管理系统的分析与设计

学生选课管理系统的分析与设计随着学校规模的扩大和管理的复杂化,学生选课成为了高校管理中最为重要的一环。

传统的选课方式存在着很多问题,如选课信息不透明、选课过程繁琐等。

因此,开发一款学生选课管理系统势在必行。

本文将对学生选课管理系统的分析与设计进行阐述。

学生选课系统是一款针对高校选课管理开发的软件,旨在提高学生选课效率、增加选课透明度、减轻管理人员工作负担。

选课是高校学生学业进程中的重要环节,涉及到学生个性化发展和学业成就。

因此,开发一款可靠、高效的学生选课管理系统对于高校教育管理具有重要意义。

学生选课流程:学生通过登录选课系统,查看可选课程信息,根据个人需求和兴趣选择课程,并提交选课申请。

系统根据学生申请和课程资源情况进行审核,审核通过后,学生选课成功。

系统功能需求:学生选课管理系统需具备课程管理、学生管理、选课管理、成绩管理等功能。

课程管理包括课程信息的录入、修改和删除;学生管理包括学生信息的录入、修改和删除;选课管理包括学生选课、退课等操作;成绩管理包括课程成绩的录入、修改和查询。

技术实现需求:系统采用B/S架构,要求具备稳定性、安全性和可靠性,并具备容错性和良好的用户体验。

系统架构设计:本系统采用三层架构,分别为数据访问层、业务逻辑层和表示层。

数据访问层负责数据库的访问和操作;业务逻辑层负责系统的业务逻辑处理;表示层负责用户交互和数据展示。

功能模块设计:根据需求分析,学生选课管理系统主要包括课程管理、学生管理、选课管理、成绩管理四个模块。

各模块之间的关系和功能如下:课程管理:负责课程信息的录入、修改和删除,包括课程名称、教师、学分、描述等信息。

学生管理:负责学生信息的录入、修改和删除,包括学生姓名、学号、班级、方式等信息。

选课管理:负责学生选课、退课等操作,包括选课申请、审核、退课申请等功能。

成绩管理:负责课程成绩的录入、修改和查询,包括成绩录入、修改、查询等功能。

数据处理流程设计:学生选课管理系统的数据处理流程包括学生选课申请、系统审核、课程资源分配、成绩录入等环节。

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

学生选课管理系统SANY GROUP system office room 【SANYUA16H-SANYHUASANYUA8Q8-#include<stdio.h>#include<iostream.h>#include<stdlib.h>#include<string.h>#include<malloc.h>//定义学生对象类型typedef struct node{char Sno[10]; //学号char Sname[10]; //姓名char Ssex[3]; //性别char Sage[3]; //年龄char Sdept[4]; //所在系struct node *next;}Student;//定义课程对象类型typedef struct node2{char Cno[10]; //课程号char Cname[10]; //课程名char Cpno[5]; //先行课char Ccredit[3]; //学分struct node2 *next;}Course;//定义选课对象类型typedef struct node3{char Sno[10];char Cno[10];int Grade;struct node3 *next;}SC;//初始化学生信息表void InitlistA(Student *stu){stu->next=NULL;}//初始化课程信息表void InitlistB(Course *C){C->next=NULL;}//初始化选课信息表void InitlistC(SC *S){S->next=NULL;}//求选课表的深度int Getlength(SC *S){int i=0;SC *p;p=S->next;while(p!=NULL){p=p->next;i ;}return(i);}//用户输入数据建立学生信息表(尾插法) void CreatelistA(Student *stu){Student *s,*r;int m,i;r=stu;cout<<"现在输入学生信息"<<endl;cout<<"请输入学生个数:";cin>>m;cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl;for(i=0;i<m;i ){s=(Student *)malloc(sizeof(Student));cin>>s->Sno;cin>>s->Sname;cin>>s->Ssex;cin>>s->Sage;cin>>s->Sdept;r->next=s;r=s;}r->next=NULL;}//由用户输入数据建立课程信息列表void CreatelistB(Course *C){Course *s,*r;r=C;int m,i;cout<<"现在输入课程信息"<<endl;cout<<"请输入课程数量:";cin>>m;cout<<"| 课程号 | 课程名 | 先行课 | 学分 |"<<endl;for(i=0;i<m;i ){s=(Course *)malloc(sizeof(Course));cin>>s->Cno;cin>>s->Cname;cin>>s->Cpno;cin>>s->Ccredit;r->next=s;r=s;}r->next=NULL;}//由用户输入数据建立选课信息列表void CreatelistC(SC *S){SC *q,*r;r=S;int m,i;cout<<"现在输入选课信息"<<endl;cout<<"请输入选课信息条数:";cin>>m;cout<<"| 学号 | 课程号 | 成绩 |"<<endl;for(i=0;i<m;i ){q=(SC *)malloc(sizeof(SC));cin>>q->Sno;cin>>q->Cno;cin>>q->Grade;r->next=q;r=q;}r->next=NULL;}//输出学生信息表void DisplistA(Student *stu){Student *p=stu->next;cout<<"学生信息表"<<endl;cout<<"___________________________________________________"<<endl;cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系 |"<<endl;cout<<"| Sno | Sname | Ssex | Sage | Sdept |"<<endl;cout<<"___________________________________________________"<<endl;while(p!=NULL){printf("|s|%9s|%8s|%8s|s|\n",p->Sno,p->Sname,p->Ssex,p->Sage,p->Sdept);cout<<"___________________________________________________"<<endl;p=p->next;}}//输出课程信息表void DisplistB(Course *C){Course *p=C->next;cout<<"课程信息表"<<endl;cout<<"_______________________________________________"<<endl;cout<<"| 课程号 | 课程名 | 先行课 | 学分 |"<<endl;cout<<"| Cno | Cname | Cpno | Ccredit |"<<endl;cout<<"_______________________________________________"<<endl;while(p!=NULL){printf("|%8s|s|s|s|\n",p->Cno,p->Cname,p->Cpno,p->Ccredit);cout<<"_______________________________________________"<<endl;p=p->next;}}//输出选课信息表void DisplistC(SC *S){if(Getlength(S)==0){cout<<"对不起!选课信息表已为空!"<<endl;}else{SC *p=S->next;cout<<"选课信息表"<<endl;cout<<"_______________________________________________"<<endl;cout<<"| 学号 | 课程号 | 成绩 |"<<endl;cout<<"| Sno | Cno | Grade |"<<endl;cout<<"_______________________________________________"<<endl;while(p!=NULL){printf("|s|s|d|\n",p->Sno,p->Cno,p->Grade);cout<<"_______________________________________________"<<endl;p=p->next;}}}//查询学生个人基本信息,以姓名或学号为参数void QueryStudent(Student *stu){int i=0;char sn[20];Student *p;p=stu->next;cout<<"请输入所要查询的学生的学号或姓名"<<endl;cout<<"请输入:";cin>>sn;do{if(strcmp(p->Sname,sn)==0||strcmp(p->Sno,sn)==0){cout<<"___________________________________________________"<<endl;cout<<"| 学号 | 姓名 | 性别 | 年龄 | 所在系|"<<endl;cout<<"| Sno | Sname | Ssex | Sage | Sdept |"<<endl;cout<<"___________________________________________________"<<endl;printf("|s|%9s|%8s|%8s|s|\n",p->Sno,p->Sname,p->Ssex,p->Sage,p->Sdept);cout<<"___________________________________________________"<<endl;break;}p=p->next;//注意指针要往后走}while(p!=NULL);if(p==NULL)cout<<"对不起!无此学生的信息!"<<endl;}//查询学生单科目的成绩void QuerySC(Student *stu,Course *C,SC *S){char sn[20];char cn[20];Student *p;Course *q;SC *r;p=stu->next;cout<<"请输入所要查询的学生的学号和课程号"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;//将姓名计算转化成为学号do{if(strcmp(p->Sname,sn)==0||strcmp(p->Sno,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!无该名学生的信息!"<<endl;return ;}cout<<"课程号或课程名:";cin>>cn;q=C->next;//将课程名计算转化成为课程号do{if(strcmp(q->Cno,cn)==0 || strcmp(q->Cname,cn)==0){strcpy(cn,q->Cno);break;}q=q->next;}while(q!=NULL);if(q==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}r=S->next;do{if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0){cout<<"_______________________________________________"<<endl;cout<<"| 学号 | 课程号 | 成绩|"<<endl;cout<<"| Sno | Cno | Grade "<<endl;cout<<"_______________________________________________"<<endl;printf("|s|s|d|\n",r->Sno,r->Cno,r->Grade);cout<<"_______________________________________________"<<endl;break;}r=r->next;}while(r!=NULL);if(r==NULL){cout<<"对不起!该学生没有参加这门课程的考试!"<<endl;}}//查询学生个人总成绩void QuerySUM(Student *stu,SC *S){Student *p;SC *q;char sn[20];float n=0;int i=0;cout<<"请输入要查询的学生的信息!"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;do{if(strcmp(p->Sno,sn)==0 || strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!无该名学生的信息!"<<endl;}else{q=S->next;do{if(strcmp(q->Sno,sn)==0){n=n q->Grade;i ;}q=q->next;}while(q!=NULL);if(n==0)cout<<"该名学生没有参加考试!"<<endl;elsecout<<"该名学生的总成绩为:"<<n<<endl;}}//删除选课信息void DeleteSC(Student *stu,Course *C,SC *S){char sn[20];char cn[20];Student *p;Course *q;SC *r;SC *t;cout<<"请输入要删除的信息中学生学号或姓名和课程号或课程名!"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;//检查是否存在这名学生do{if(strcmp(p->Sno,sn)==0 || strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;//注意指针要往后走}while(p!=NULL);if(p==NULL){cout<<"对不起!无该名学生的信息!"<<endl;return ;}cout<<"课程号或课程名:";cin>>cn;q=C->next;//检查课程号是否合法do{if(strcmp(q->Cname,cn)==0 || strcmp(q->Cno,cn)==0){strcpy(cn,q->Cno);break;}q=q->next;}while(q!=NULL);if(p==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}t=S;//t指向r的请一个节点,便于删除和释放r=S->next;do{if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0){t->next=r->next;free(r);cout<<"删除成功!"<<endl;break;}t=t->next;r=r->next;}while(r!=NULL);if(r==NULL){cout<<"对不起!原表中没有您要删除的选课信息!"<<endl;}}//修改选课信息void Revalue(Student *stu,Course *C,SC *S){char sn[20],cn[20];Student *p;Course *q;SC *r;cout<<"请输入您所要修改的学生或姓名和课程号或课程名!"<<endl;cout<<"学生或姓名:";cin>>sn;p=stu->next;//检查是否存在这名学生,若存在则将姓名转换为对应的学号do{if(strcmp(p->Sno,sn)==0 || strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!无该名学生的信息!"<<endl;return ;}cout<<"课程号或课程名:";cin>>cn;q=C->next;//检查是否存在这门课程,若存在则将课程名转换为对应的课程号 do{if(strcmp(q->Cname,cn)==0 || strcmp(q->Cno,cn)==0){strcpy(cn,q->Cno);break;}q=q->next;}while(q!=NULL);if(q==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}r=S->next;do{if(strcmp(r->Sno,sn)==0 && strcmp(r->Cno,cn)==0){cout<<"该名学生的当前选课信息为:"<<endl;cout<<"_______________________________________________"<<endl;cout<<"| 学号 | 课程号 | 成绩|"<<endl;cout<<"| Sno | Cno | Grade"<<endl;cout<<"_______________________________________________"<<endl;printf("|s|s|d|\n",r->Sno,r->Cno,r->Grade);cout<<"_______________________________________________"<<endl;break;}r=r->next;}while(r!=NULL);if(r==NULL){cout<<"对不起!没有您要修改的选课信息!"<<endl;return ;}cout<<"请您重置该名学生的选课信息!"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;//检查学生信息表中是否存在这名学生do{if(strcmp(p->Sno,sn)==0 || strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!您的输入有误!"<<endl;return ;}cout<<"课程号或课程名:";cin>>cn;q=C->next;//检查是否存在这门课程,若存在则将课程名转换为对应的课程号do{if(strcmp(q->Cname,cn)==0 || strcmp(q->Cno,cn)==0){strcpy(cn,q->Cno);break;}q=q->next;}while(q!=NULL);if(q==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}strcpy(r->Sno,sn);strcpy(r->Cno,cn);cout<<"成绩:";cin>>r->Grade;cout<<"修改成功!"<<endl;}//添加选课信息void AddSC(Student *stu,Course *C,SC *S){char sn[20],cn[20];Student *p;Course *q;SC *r,*s;int Grade;r=S;cout<<"请输入信息:"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;//检查是否存在这名学生,若存在则将姓名转换为对应的学号do{if(strcmp(p->Sno,sn)==0 || strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!不存在该名学生,您不能添加其选课信息!"<<endl;return ;}cout<<"课程号或课程名:";cin>>cn;q=C->next;//检查是否存在这门课程,若存在则将课程名转换为对应的课程号do{if(strcmp(cn,q->Cname)==0 || strcmp(cn,q->Cno)==0){strcpy(cn,q->Cno);break;}q=q->next;}while(q!=NULL);if(q==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}s=(SC *)malloc(sizeof(SC));cout<<"成绩:";cin>>Grade;strcpy(s->Sno,sn);strcpy(s->Cno,cn);s->Grade=Grade;while(r->next!=NULL){r=r->next;}s->next=r->next;r->next=s;cout<<"添加成功!"<<endl;}//查询个人平均成绩void QueryAva(Student *stu,SC *S){float m=0;Student *p;SC *q;char sn[20];float n=0;int i=0;cout<<"请输入要查询的学生的信息!"<<endl;cout<<"学号或姓名:";cin>>sn;p=stu->next;do{if(strcmp(p->Sno,sn)==0||strcmp(p->Sname,sn)==0){strcpy(sn,p->Sno);break;}p=p->next;}while(p!=NULL);if(p==NULL){cout<<"对不起!无该名学生的信息!"<<endl;}else{q=S->next;do{if(strcmp(q->Sno,sn)==0){n=n q->Grade;i ;}q=q->next;}while(q!=NULL);if(n==0)cout<<"该名学生没有参加考试!"<<endl;elsecout<<"该名学生的平均成绩为:"<<n/i<<endl; }}//查询某个系所有学生的成绩void QueryDepart(Student *stu,SC *S){char Sdept[4];Student *p;SC *q;int i=0;cout<<"请输入系名:";cin>>Sdept;p=stu->next;do{if(strcmp(p->Sdept,Sdept)==0){q=S->next;do{if(strcmp(q->Sno,p->Sno)==0){cout<<"________________________________________________________"<< endl;cout<<"| 姓名 | 学号 | 课程号| 成绩 |"<<endl;cout<<"| Sname | Sno | Cno | Grade |"<<endl;cout<<"_________________________________________________________"< <endl;cout<<"| "<<p->Sname<<" | "<<q->Sno<<" | "<<q->Cno<<" | ";cout<<q->Grade<<" |"<<endl;cout<<"_________________________________________________________"< <endl;i=1;}q=q->next;}while(q!=NULL);}p=p->next;}while(p!=NULL);if(i==0){cout<<"对不起!没有您需要的信息!"<<endl;}}//查询某课程的平均成绩void QuerySCL(Course *C,SC *S){char cn[20],cn1[20];float m=0;float i=0;Course *q;SC *r;cout<<"请输入您所要查询的课程号或课程名!"<<endl;cin>>cn;q=C->next;do{if(strcmp(q->Cno,cn)==0||strcmp(q->Cname,cn)==0){strcpy(cn,q->Cno);strcpy(cn1,q->Cname);break;}q=q->next;}while(q!=NULL);if(q==NULL){cout<<"对不起!您输入的课程信息有误!"<<endl;return ;}r=S->next;do{if(strcmp(r->Cno,cn)==0){m=m (float)r->Grade;i ;}r=r->next;}while(r!=NULL);if(i==0){cout<<"对不起!没有该课程的信息!"<<endl;return ;}m=m/i;cout<<"课程 "<<cn1<<" 的平均成绩是:"<<m<<endl; }//由系统对学生信息表赋值void GivevalueA(Student *stu){Student *p,*q;p=stu;q=(Student *)malloc(sizeof(Student));strcpy(q->Sno,"95001");strcpy(q->Sname,"李勇");strcpy(q->Ssex,"男");strcpy(q->Sage,"20");strcpy(q->Sdept,"CS");q->next=p->next;p->next=q;p=p->next;}//由系统对课程信息表赋初值void GivevalueB(Course *C){Course *p,*q;p=C;q=(Course *)malloc(sizeof(Course));strcpy(q->Cno,"1");strcpy(q->Cname,"数据库");strcpy(q->Cpno,"5");strcpy(q->Ccredit,"4");q->next=p->next;p->next=q;p=p->next;}//由系统对选课信息表赋初值void GivevalueC(SC *S){SC *p,*q;p=S;q=(SC *)malloc(sizeof(SC));strcpy(q->Sno,"95001");strcpy(q->Cno,"1");q->Grade=92;q->next=p->next;p->next=q;p=p->next;}int GETchooce(char n[]){int m;if(strcmp(n,"0")==0)m=0;else if(strcmp(n,"1")==0)m=1;else if(strcmp(n,"2")==0)m=2;else if(strcmp(n,"3")==0)m=3;else if(strcmp(n,"4")==0)m=4;else if(strcmp(n,"5")==0)m=5;else if(strcmp(n,"6")==0)m=6;else if(strcmp(n,"7")==0)m=7;else if(strcmp(n,"8")==0)m=8;else if(strcmp(n,"9")==0)m=9;else if(strcmp(n,"10")==0)m=10;else if(strcmp(n,"11")==0)m=11;else if(strcmp(n,"12")==0)m=12;elsem=-1;return(m);}void main(){Student stu;Course C;SC S;char n[8];cout<<" 系统简介"<<endl<<endl;cout<<" 本系统含有三张信息表:"<<endl<<endl;cout<<" 学生信息表*课程信息表选*课信息表"<<endl<<endl;InitlistA(&stu);InitlistB(&C);InitlistC(&S);do{cout<<" 功能选择: "<<endl;cout<<" 1:系统提供数据测试各表性能"<<endl;cout<<" 2: 输入数据重建各信息表 "<<endl;cout<<" 3: 查看各个信息表的全表信息 "<<endl;cout<<" 4: 查询学生个人基本信息 "<<endl;cout<<" 5: 查询学生单科目的成绩 "<<endl;cout<<" 6: 查询学生个人总成绩 "<<endl;cout<<" 7: 删除选课信息 "<<endl;cout<<" 8: 修改选课信息 "<<endl;cout<<" 9: 添加选课信息 "<<endl;cout<<" 10: 查询学生个人平均成绩 "<<endl;cout<<" 11:查询某个系所有学生的成绩 "<<endl;cout<<" 12:查询某课程的平均成绩 "<<endl;cout<<" 0: 退出系统 "<<endl;cout<<"请选择您需要的操作(0-12):";cin>>n;//参数以字符串的形式输入,以防用户不小心输入字符或字符串,导致系统进入死循环switch(GETchooce(n)){case 0:cout<<"谢谢使用!再见!"<<endl;exit(0);case 1:GivevalueA(&stu);GivevalueB(&C);GivevalueC(&S);DisplistA(&stu);DisplistB(&C);DisplistC(&S);break;case 2:CreatelistA(&stu);CreatelistB(&C);CreatelistC(&S);break;case 3:DisplistA(&stu);DisplistB(&C);DisplistC(&S);break;//注意每一个case语句后面要加 break,以保证及时退出case 4:QueryStudent(&stu);break;case 5:QuerySC(&stu,&C,&S);break;case 6:QuerySUM(&stu,&S);break;case 7:DeleteSC(&stu,&C,&S);break;case 8:Revalue(&stu,&C,&S);break;case 9:AddSC(&stu,&C,&S);break;case 10:QueryAva(&stu,&S);break;case 11:QueryDepart(&stu,&S);break;case 12:QuerySCL(&C,&S);break;default:cout<<"输入错误!"<<endl;break;}}while(1);}。

相关文档
最新文档