学生选课系统C++
- 格式:doc
- 大小:230.50 KB
- 文档页数:15
c语言课程设计 学生选课系统一、课程目标知识目标:1. 学生能理解C语言在开发学生选课系统中的应用,掌握基本的数据结构(如结构体、数组、链表)和文件操作相关知识。
2. 学生能运用C语言实现学生选课系统的基本功能,如学生信息管理、课程信息管理、选课操作等。
3. 学生能理解并掌握C语言中的模块化编程思想,将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
技能目标:1. 学生能运用C语言编写、调试和运行学生选课系统,具备一定的编程实践能力。
2. 学生能通过团队协作,共同完成一个完整的学生选课系统项目,提高沟通与协作能力。
3. 学生能运用所学知识,对现有学生选课系统进行优化和改进,提高系统性能。
情感态度价值观目标:1. 学生通过本课程的学习,培养对计算机编程的兴趣和热情,树立学习C语言的自信心。
2. 学生在团队协作中,学会尊重他人意见,培养合作精神和团队意识。
3. 学生能够认识到编程在解决实际问题中的价值,提高将所学知识应用于实际生活的意识。
课程性质:本课程为C语言编程实践课程,旨在让学生通过动手实践,掌握C 语言编程技能,并运用所学知识解决实际问题。
学生特点:学生已具备一定的C语言基础,具备基本编程能力,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,强调编程实践,培养学生解决实际问题的能力。
通过团队协作,提高学生的沟通与协作能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在原有基础上得到提高。
二、教学内容1. 数据结构基础:回顾结构体、数组、链表等基本数据结构,讲解其在学生选课系统中的应用。
相关教材章节:第3章 数据类型与表达式,第4章 控制结构,第5章 函数,第6章 数组与字符串,第7章 指针与结构体。
2. 文件操作:介绍文件读写、文件管理等基本操作,为学生选课系统提供数据持久化支持。
相关教材章节:第10章 文件操作。
3. 模块化编程:讲解模块化编程思想,引导学生将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
学生选修课系统设计一、设计目的此刻时代是飞速发展的信息时代,在各行各业中离不开信息办理,这正是计算机被广泛应用于信息系统的环境。
计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不但提升了工作效率,并且大大的提升了其安全性。
特别对于复杂的信息管理,计算机能够充分发挥它的优胜性。
计算机进行信息管理与信息管理系统的开发亲近相关,系统的开发是系统管理的前提。
本系统就是为了管理勤学生选课信息而设计的。
数据办理手工操作,工作量大,犯错率高,犯错后不易改正,造成了时间上的浪费。
基于这个问题,我以为有必需建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,防备学生选课管理的随意性,提升信息办理的速度和正确性,能够及时、正确、有效的盘问和更正选课状况。
二、题目说明假定有 n 门课程,每门课程都有课程编号,课程名称,课程性质,总学时,讲课学时,实验或上机学时,学分,开课学期等信息,学生可按要求 ( 如总学分不得少于 60) 自由选课。
试设计一选修课程系统,使之能供给一下功能:(1)(2)(3)(4)(5)(6) [ 提示]系统以菜单方式工作;课程信息和学生信息的录入功能(课程信息有文件保存)---- 输入;课程信息阅读功能 ---- 输出;盘问功能 ( 最少一种盘问方式 )--- 算法;按学分盘问;某门课程学生选修状况 ( 可选项 ) 。
数据结构可用结构体,包含课程和选秀两个结构体,此中课程结构体包含课程编号、课程名称、课程性质、总学时、讲课学时、实验或上机学时、学分、开课学期。
选修结构体成员包含学号,课程编号,该结构体的建立主若是为了盘问某门课程学生选修状况 . 。
三、数据结构设计本系统的实现,所有采纳链表这类数据结构,用链表实现课程的查找、增添、删除、课程的选修、追加选修的课程,课程信息采纳结构体这类数据结构。
typedef struct subjects{int num;主模块管理员模学生模浏查添删浏查选浏删览询择览除览询加除所课选我错课课课课有程修选选课信课修的程程程程进当选课选择序号进行进入下一管理员身份登录 \n");puts("\t\t\t\t2.以学生身份登录 \n");puts("\t\t\t\t3.退出 ");puts("\n\n\t\t********************************** *********\n");printf("Chiose your number(1-3):[ ]\b\b");scanf("%d",&n);switch(n){case 1:Mangers() ;break;case 2:Students();break;case 3:w=0;break;default:;}}while(w==1);return 0;}( 二) 管理员功能模块管理员的功能一共有四个功能:阅读,盘问,增添,删除课程,运用字符串办理函数办理密码的问题,用一个 switch 语句实现函数的调用:管理员登录i=3是否i>0输入密是否进行码匹对按随意键进入管理员[ 程序]void Mangers(){int n,w=1,flag=0,i=3;char s[8];char password[7]="1";do{printf("\n\nEnter password:");scanf("%s",s);if(!strcmp(s,password))学生登录deldeldel按 1-6 数字键进入各1、阅读所有课程2、盘问课程信息进入所选创建链输当选修课程信息(num,name,kind,st是Num!=0p=(SUB*)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);否是Head==NULTail->nexHead=Scanf(num,name,kiTail->next=NU nd,&stime,&ttime,否创建完阅读所有SUB *ptr;head=NULL;readfile()是否Head==NULPrintf(NO输出课程信息n");choose();}printf("课程编号课程名称课程性质总学时讲课学时实践或上机学时学分开课学期\n");while(!feof(fp)){ptr=(SUB*)malloc(sizeof(SUB));fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr-> kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr-> term);printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}system("pause");}( 六) 盘问模块盘问模块主要用于管理员功能中的“盘问课程”和学生功能模块中的“盘问所有课程”,盘问模块共分为三个盘问方法:按课程名称查找,按课程性质查找和按学分查找switch 语句中,每一个case插入链表语句就是一中盘问方法:SUB *p1,*p2;p1=subj;课程信息查是否head==NUL按1-4 数字键进入head=p1;是否1、按课程名称查head->next=NULp2=head;p2;找是否p2->next==N进入所选[ 程序]p2->next=subj;eturn subj->next=NULLvoid search() ;C语言课程设计学生选修课程系统设计newSub=(SUB*)malloc(sizeof(SUB));printf( “选修成功!fscanf(fp,&newSub->num,newSub->na me,newSub->kind,&newSub->stime,&n printf("\n以上信息全ewSub->ttime,&newSub->etime,&newS 部保存在 '' 中\n")fclose(fp)删除选修保存文SUB系统进行检测所要保fprintf(fp,"*p1,*p2;插入课程课程编号课程名称课程性质SUB *ptr,*subj;实验总学时讲课学时printf(输入想要删除的课程编intsize=sizeof(SUB);p=head;p;p=p->ne进行编号查找并是否ch!=printf("\n连续删除请按回车fprintf(fp,"%5d%12s%9s%9输入(课程信息、课程编号、d%9d%11d%11d%7d\n",p->nu 课程名称、课程性质、总学m,p->name,p->kind,p->stimyInsert(subj);printf("\n\n连续插入请按回车printf(" 创立后的信\ C 语言课程设计报告息已放入''文件中ch1=getchar()Return;system("pause")洁了然的程序菜单。
学生选课系统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语言程序代码(总9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--#include<>#include<>struct couse * head1;struct student * head2;struct couse键盘录入\n"); printf("\n2.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboardc();break;case(2):break;}}void insertc(struct couse *incouse)增课程\n");printf("\n2.删除课程\n");printf("\n3.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct couse *)malloc(sizeof(struct couse)); printf("\n课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);incouse->nelepeo=0;insertc(incouse);break;}case(2):{printf("\n请输入要删除课程的编号:\n");scanf("%d",&num1);delc(num1);break;}case(3):break;}}void keyboards()键盘录入\n");printf("\n2.返回主菜单\n");printf("\n请选择编号(1~2):\n");scanf("%d",&i);switch(i){case(1):keyboards();break;case(2):break;}}void inserts(struct student * incouse)增学生信息\n"); printf("\n2.删除学生信息\n");printf("\n3.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct student *)malloc(sizeof(struct student));incouse->nelen=0;incouse->nelenum[0]=0;printf("\n学生学号\t学生姓名\n");scanf("%d%s",&incouse->num2,incouse->name2); inserts(incouse);break;}case(2):{printf("\n请输入要删除学生的学号:\n");scanf("%d",&num2);dels(num2);break;}case(3):break;}}void elect(struct student * s)询可选课程\n");printf("\n2.查询已选课程\n");printf("\n3.返回主菜单\n");printf("\n请输入(1~3):\n");scanf("%d",&i);switch(i){case(1):cheak();break;case(2):hcheak();break;case(3):break;}}void listc()看课程信息\n");printf("\n2.查看学生信息\n");printf("\n3.返回主菜单\n");printf("\n请输入编号(1~3):\n");scanf("%d",&i);switch(i){case(1):listc();break;case(2):lists();break;case(3):break;}}int main()入课程信息 \n");printf("\n 2.课程信息管理\n");printf("\n 3.录入学生信息\n");printf("\n 4.学生信息管理\n");printf("\n 5.进入选课程序\n");printf("\n 6.系统信息查看\n");printf("\n 7.退出选课系统\n");printf("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("\n请输入菜单选项编号(1~7):\n");scanf("%d",&i);if(i<1 || i>7){printf("\n输入错误,请重输:\n");goto start;}switch(i){case(1):{system("cls");//清屏函数inputc();goto start;break;}case(2):{system("cls");managementc(); goto start;break;}case(3):{system("cls");inputs();goto start;break;}case(4):{system("cls");managements();goto start;break;}case(5):{system("cls");elective();goto start;break;}case(6):{system("cls");store();goto start;break;}case(7):{system("cls");printf("\n感谢使用本系统!再见!\n"); }}return(0); }。
学生选课管理系统c 课程设计一、课程目标知识目标:1. 让学生理解学生选课管理系统的基本概念和功能,掌握系统设计的基本原理。
2. 使学生掌握数据库的基本操作,如查询、插入、删除和更新数据。
3. 帮助学生了解软件开发流程,熟悉系统设计、编码、测试等环节。
技能目标:1. 培养学生运用所学知识,独立设计并实现一个简单的学生选课管理系统。
2. 提高学生分析问题和解决问题的能力,学会运用数据库技术解决实际应用问题。
3. 培养学生的团队协作能力,学会在项目中进行有效沟通和分工合作。
情感态度价值观目标:1. 培养学生积极的学习态度,激发学生对计算机科学的兴趣和热情。
2. 培养学生的创新意识和实践能力,鼓励学生勇于尝试,敢于挑战。
3. 增强学生的责任心,让学生明白系统设计的重要性,关注用户需求,为用户带来更好的体验。
本课程针对高年级学生,课程性质为理论与实践相结合。
在教学过程中,注重培养学生的实际操作能力和解决问题的能力。
结合学生特点和教学要求,将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
通过本课程的学习,使学生能够掌握学生选课管理系统设计的相关知识和技能,为今后从事软件开发和数据库管理等相关工作打下坚实基础。
二、教学内容1. 学生选课管理系统的基本概念与功能- 系统需求分析- 功能模块划分2. 数据库基础知识- 数据库设计原则- 数据表创建与维护- 数据查询、插入、删除和更新操作3. 系统设计- 系统架构设计- 界面设计- 数据库连接与操作4. 编程实现- 编程语言选择(如Java、Python等)- 系统功能编码- 代码调试与优化5. 系统测试与维护- 测试方法与策略- 常见问题分析与解决- 系统维护与升级6. 项目实践- 团队协作与分工- 项目进度管理- 系统部署与展示教学内容根据课程目标制定,涵盖学生选课管理系统设计的相关知识。
本课程采用教材相关章节,结合实际案例,保证教学内容的科学性和系统性。
课程信息管理系统c语言课程信息管理系统(C语言)一、引言课程信息管理系统是一种用来管理和组织课程信息的软件系统。
它能够对教学计划、课程表、学生选课等进行管理,帮助学校、教育机构或教师高效地管理课程信息。
本文将通过介绍课程信息管理系统的功能、特点和实施过程,详细阐述C语言在该系统中的应用。
二、功能介绍1. 学生管理:该系统能够记录学生的个人信息,如学号、姓名、班级等,并能进行学生选课管理,包括选课、退课等操作。
2. 课程管理:系统可以管理各门课程的信息,如课程编号、课程名称、学分等,并能进行课程安排,制定教学计划。
3. 教师管理:系统可以记录教师的基本信息,提供教师选课、授课安排等功能。
4. 成绩管理:系统能够记录学生的各科成绩,并提供成绩查询、统计等功能,方便学生和教师进行学业评估。
5. 课程评价:系统可以记录学生对课程的评价和反馈,帮助学校和教师改进教学质量。
三、特点和优势1. 数据集中管理:课程信息管理系统将学生、教师、课程等信息集中管理,方便快捷,减少重复工作。
2. 数据安全性高:系统采用数据库来存储和管理数据,确保数据的安全性和完整性。
3. 操作简便:系统界面友好,操作简单明了,即使对计算机操作不熟悉的教师和学生也能够轻松上手。
4. 信息共享:系统支持信息共享,学生、教师和管理者可以通过系统查询相关信息,提高工作效率。
5. 数据分析功能:系统能够对学生选课情况、成绩分布等进行统计和分析,为教学改革提供数据支持。
四、实施过程1. 需求分析:通过与学校、教师和学生的沟通,明确系统的需求和功能。
2. 系统设计:根据需求分析的结果,设计系统的数据库结构、界面和功能模块。
3. 编码实现:使用C语言编写相应的代码,实现系统的各个功能模块。
4. 测试调试:对系统进行功能测试和性能测试,确保系统的稳定性和可靠性。
5. 上线部署:将系统部署到服务器上,并进行相关的数据迁移和备份工作。
6. 培训和维护:对教师和学生进行系统培训,并进行后期的系统维护和更新。
目录1系统需求分析................................................................................................ 错误!未定义书签。
2总体设计........................................................................................................ 错误!未定义书签。
3具体设计........................................................................................................ 错误!未定义书签。
4界面设计与各功能模块实现........................................................................ 错误!未定义书签。
5 系统调试....................................................................................................... 错误!未定义书签。
6 实验心得体会............................................................................................... 错误!未定义书签。
7附: 源程序251系统需求分析(1)、本系统是针对高校学生的选修课程而设计, 通过本系统高校学生可以很方便地进行自由选课。
重要的问题描述是(功能规定): n门课程, 每门课程有课程编号, 课程名称, 课程性质, 总学时, 授课学时, 实验或上机学时, 学分, 开课学期等信息, 学生可按规定(如总学分不得少于60)自由选课。
c 学生选课管理系统课程设计一、教学目标本课程旨在让学生了解和掌握学生选课管理系统的基本原理和实现方法。
通过本课程的学习,学生将能够:1.理解学生选课管理系统的需求和功能。
2.掌握学生选课管理系统的基本架构和模块设计。
3.学会使用相关技术和工具实现学生选课管理系统的各个功能。
4.培养学生的团队合作能力和问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.学生选课管理系统概述:介绍学生选课管理系统的定义、需求和功能。
2.系统设计:讲解学生选课管理系统的基本架构和模块设计。
3.技术实现:介绍实现学生选课管理系统各个功能所需要使用的技术和工具。
4.系统测试与优化:讲解如何对 student course selection managementsystem 进行测试和优化。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解基本概念、原理和关键技术。
2.案例分析法:分析实际案例,让学生更好地理解学生选课管理系统的应用。
3.实验法:让学生通过动手实践,加深对课程内容的理解和掌握。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:为学生提供全面、系统的理论知识。
2.参考书:提供更多的背景知识和实际案例。
3.多媒体资料:通过视频、图片等形式,丰富学生的学习体验。
4.实验设备:为学生提供实践操作的机会,加深对课程内容的理解和掌握。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度和团队合作能力,占总评的30%。
作业主要包括课后练习和项目任务,占总评的40%。
考试为闭卷考试,评估学生对课程知识的掌握程度,占总评的30%。
六、教学安排本课程共32课时,安排在第8至第16周的每周二、四下午2:00-4:00进行。
教学地点为计算机实验室,以确保学生有足够的实践操作机会。
教学进度安排合理紧凑,确保在有限的时间内完成教学任务。
课程信息管理系统C语言1. 简介本文将详细探讨课程信息管理系统的设计与实现,使用C语言作为开发语言。
课程信息管理系统是一种用于管理学校或机构的课程信息的软件系统,通过该系统可以实现课程的增删改查、学生选课、教师管理等功能。
为了更好地组织和管理课程信息,该系统需要一套完整的数据结构和相应的算法来实现各项功能。
2. 功能需求基于C语言的课程信息管理系统应具备以下功能: 1. 学生管理:包括学生的基本信息、选课信息、成绩管理等。
2. 教师管理:包括教师的基本信息、授课课程、教学评价等。
3. 课程管理:包括课程的基本信息、选课限制、课程评价等。
4. 成绩管理:包括成绩录入、成绩查询、成绩统计分析等。
5. 选课管理:包括选课限制、选课时间、选课冲突等。
6. 系统设置:包括管理员账户管理、密码修改、系统日志等。
3. 系统设计3.1 数据结构设计课程信息管理系统需要设计合适的数据结构来存储和管理学生、教师、课程和成绩等信息。
下面是各个实体的数据结构设计示例:3.1.1 学生数据结构设计typedef struct Student {int id; // 学号char name[20]; // 姓名int gender; // 性别(0表示男,1表示女)char major[20]; // 专业struct Student* next; // 指向下一个学生结点的指针} Student;3.1.2 教师数据结构设计typedef struct Teacher {int id; // 工号char name[20]; // 姓名int gender; // 性别(0表示男,1表示女)char department[20]; // 部门struct Teacher* next; // 指向下一个教师结点的指针} Teacher;3.1.3 课程数据结构设计typedef struct Course {int id; // 课程号char name[20]; // 课程名称int credit; // 学分struct Course* next; // 指向下一个课程结点的指针} Course;3.1.4 成绩数据结构设计typedef struct Score {int studentId; // 学生学号int courseId; // 课程号float score; // 分数struct Score* next; // 指向下一个成绩结点的指针} Score;3.2 功能模块设计课程信息管理系统可以划分为以下功能模块: #### 3.2.1 学生管理模块学生管理模块负责学生信息的录入、修改和查询等功能。
c 学生选课系统课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握学生选课系统的基本概念、原理和流程,了解系统的各个模块和功能,以及相关的前端和后端技术。
2.技能目标:学生能够独立完成学生选课系统的搭建和部署,具备对系统进行维护和优化的能力,能够使用相关的开发工具和软件进行系统开发。
3.情感态度价值观目标:学生通过本课程的学习,能够增强对计算机科学和信息技术的兴趣和热情,培养良好的科学素养和创新精神,提升解决实际问题的能力。
在制定教学目标时,我们分析了课程性质、学生特点和教学要求,将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容根据课程目标,我们选择和了以下教学内容:1.学生选课系统的概述:包括系统的定义、功能、特点和应用场景。
2.学生选课系统的设计:包括系统的架构、模块设计、数据库设计和界面设计。
3.学生选课系统的实现:包括前端开发、后端开发、系统测试和优化。
4.学生选课系统的部署和维护:包括系统的部署方法、维护策略和常见问题解决。
以上内容涵盖了学生选课系统的各个方面,确保了教学内容的科学性和系统性。
三、教学方法为了激发学生的学习兴趣和主动性,我们选择了以下教学方法:1.讲授法:通过讲解和演示,使学生了解学生选课系统的相关概念和原理。
2.讨论法:学生进行小组讨论,培养学生的思考能力和团队合作精神。
3.案例分析法:分析实际案例,使学生更好地理解和掌握学生选课系统的应用。
4.实验法:让学生亲自动手进行系统开发和实验,提高学生的实践能力。
四、教学资源我们选择了以下教学资源,以支持教学内容和教学方法的实施:1.教材:选用权威、实用的教材,为学生提供系统的理论知识。
2.参考书:提供丰富的参考资料,帮助学生拓展知识面。
3.多媒体资料:制作精美的PPT、视频等资料,提高学生的学习兴趣。
4.实验设备:提供充足的实验设备,保证学生能够顺利进行实验操作。
以上教学资源将丰富学生的学习体验,提高教学质量。
目录一、需求分析 (2)二、程序的主要功能 (2)三、程序运行平台 (2)四、系统总框架图 (2)五、程序类的说明 (2)六、模块分析 (3)七、比较有特色的函数 (3)八、存在的不足与对策 (5)九、程序源代码 (5)一、需求分析选课在大学生活中是必不可少的,为了能让学生们更加便利的查看并选择各种课程,自然就需要一个网络结构,建立一个选课系统,这样可以方便管理学生和课程等内容。
二、程序的主要功能1、添加功能:添加课程以及学生的各类信息保存到一个文件中。
2、删除功能:能够对一个学生或课程的信息按照编号进行删除。
3、浏览功能:可以查看学生信息课程信息以及学生的选课信息。
4、选课功能:学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。
5、修改功能:用于修改错误的学生信息或者课程信息。
三、程序运行平台Windows8.1操作系统VC++6.0四、系统总框架图系统总框架图五、程序类的说明•student类的声明class student{public:double xuehao;char name[100];char major[100];char coursename[100];•course类的声明class course{public:double coursenum;char coursename[50];char coursetapy[50];double xuefen;double xueshi;char courseteacher[50];六、模块分析1. 信息录入模块按照提示输入所需数字,进入添加界面后添加课程以及学生的各类信息,最终保存到一个文件中,用以之后读取。
2. 信息浏览模块可以用来查看学生信息和课程信息以及学生的选课信息。
3. 修改信息模块用于修改错误的学生信息或者课程信息。
4. 删除信息模块能够对一个学生或课程的信息按照编号进行删除。
5. 选择课程模块学生可以通过输入自己的学号进入选择界面,选择各种不同的课程。
七、比较有特色的函数void selectCoures()//选课函数{student stu;//用于保存将要选课的那名同学的信息int countCoures=0;//用来统计该学生选了多少门课程int countStudent=0;//用来统计学生的个数loop:cout<<endl<<"请输入你的学生学号:";double m_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课cin>>m_xuehao;ifstream is("studentInfo.text",ios::binary);is.seekg(0,ios::beg);while(!is.peek()){is.read((char *)(&stu),sizeof(stu)); //从“studentInfo.text”文件中一次读取学生的信息if(m_xuehao == stu.xuehao){loob:countStudent++;cout<<"请输入学号为"<<m_xuehao<<"的学生想要选择的课程编码(1001-9999): ";cin>>m_coursenum;ifstream inCourse("courses.text",ios::binary); //用于从"courses.text"文件中找出该同学想选择的课程信息inCourse.seekg(0,ios::beg);while(!inCourse.eof()){//选课的核心代码course cus;//用于此同学将要选择的课程信息inCourse.read((char *)(&cus),sizeof(cus));if(m_coursenum == cus.coursenum){//若找到那门课程则选它countCoures++;strcpy(stu.coursename,cus.coursename);ofstream outStu("selectCourseResult.text",ios::binary|ios::app);//现将选课的同学信息放入选课结果的文件中outStu.write((char *)(&stu),sizeof(stu));outStu.close();cout<<"学号为"<<m_xuehao<<"成功选了课程号为"<<m_coursenum<<"的课程!"<<endl;}if(countCoures>2){cout<<"同学:你选择的课程已经超过"<<countCoures<<"门了!"<<endl; break;}}if(countCoures == 0){cout<<"没有这门课程,还要继续选择其他课程吗y/n?"<<endl;char ch;cin>>ch;if(('y'==ch)||('Y'==ch))goto loob;elsebreak;}inCourse.close();}}if(countStudent==0){cout<<"没有这个学生,是否重新输入y/n?"<<endl;char ch;cin>>ch;if(('y'==ch)||('Y'==ch))goto loop;}is.close();menu();}八、存在的不足与对策由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只能输入较少的课程以及学生信息。
些许不足请老师多多谅解。
今后会学习更多的编程技巧,不断的提高程序设计水平。
九、程序源代码#include<iostream>#include<ctype.h>#include<string>#include<iomanip>#include<fstream>#include<sstream>using namespace std;void menu() //主菜单{cout<<endl;cout<<" 学生选课系统"<<endl;cout<<" 1. 信息录入"<<endl;cout<<" 2. 信息浏览"<<endl;cout<<" 3. 选择课程"<<endl;cout<<" 4. 删除信息"<<endl;cout<<" 5. 修改信息"<<endl;cout<<" 6. 退出程序"<<endl;}class student{public:double xuehao;char name[100];char major[100];char coursename[100];void set() //学生信息录入{student stu;cout<<endl;cout<<"请输入学生学号: ";cin>>stu.xuehao;cout<<"请输入学生姓名: ";cin>>;cout<<"请输入学生专业: ";cin>>stu.major;ofstream out("studentInfo.text",ios::app|ios::binary);out.write((char *)(&stu),sizeof(stu));out.close();menu();}void checkstudent() //查询学生信息{student stu;cout<<"学生学号\t学生姓名\t所学专业"<<endl;ifstream is("studentInfo.text",ios::binary);while(!is.peek()){is.read((char *)(& stu),sizeof(stu));cout<<" "<<stu.xuehao<<"\t\t"<<<<"\t\t"<<stu.major<<"\t\t"<<endl;}is.close();menu();}void cancleStudent() //删除学生信息{string xueHaoNum,line,xuehao;ifstream fin("studentInfo.text.text");fstream outfile("studentInfo.text.text",ios::trunc|ios::out); //打开一个文件进行写操作和使同名文件被删除cout<<endl;cout<<"请输入您要删除学生的学号: ";cin>>xueHaoNum;while(!fin.eof()){getline(fin,line);istringstream stream(line); //串流输入xueHaoNum = line.substr(0,line.find(" ",0));if(xuehao != xueHaoNum)outfile<<line<<endl;}outfile.close();fin.close();fstream f("studentInfo.text",ios::trunc|ios::out); //打开一个文件进行写操作和使同名文件被删除ifstream outf("studentInfo.text");f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();}void changestudent() //修改学生信息{student stu;int mark;cout<<endl;cout<<"请输入需要修改信息的学生学号";double xuehao;cin>>xuehao;ifstream is("studentInfo.text",ios::binary);for(int i=0;!is.eof();i++){is.seekg(48*i); //对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read((char *)(&stu),sizeof(stu));if(stu.xuehao==xuehao){cout<<"请输入要修改的学生姓名";cin>>;cout<<"请输入要修改的学生专业";cin>>stu.major;cout<<"修改完毕!"<<endl<<endl;mark=48*i;menu();break;}}is.close();if(stu.xuehao!=xuehao){cout<<"没有这个学生!"<<endl<<endl;menu();else{ofstream os("studentInfo.text",ios::in|ios::binary); os.seekp(mark);os.write((char *)(&stu),sizeof(stu));os.close();}}};class course //课程类{public:double coursenum;char coursename[50];char coursetapy[50];double xuefen;double xueshi;char courseteacher[50];void set() //课程信息录入{course cus;cout<<"请输入课程编码: ";cin>>cus.coursenum;cout<<"请输入课程名称: ";cin>>cus.coursename;cout<<"请输入课程类型: ";cin>>cus.coursetapy;cout<<"请输入课程学分: ";cin>>cus.xuefen;cout<<"请输入课程学时: ";cin>>cus.xueshi;cout<<"请输入主讲教师: ";cin>>cus.courseteacher;ofstream os("courses.text",ios::binary|ios::app); os.write((char *)(&cus),sizeof(cus));os.close();menu();}void checkcourse() //浏览课程信息cout<<endl;ifstream is("courses.text",ios::binary);cout<<"课程编码课程名称课程类型课程学分课程学时主讲教师"<<endl;course cus;//临时保存课程信息while(!is.peek()) //检测文件结束{is.read((char*)(&cus),sizeof(cus));cout<<" "<<cus.coursenum<<"\t "<<cus.coursename<<"\t "<<cus.coursetapy<<"\t "<<cus.xuefen<<"\t "<<cus.xueshi<<" "<<cus.courseteacher<<endl; //setw()是控制输入的宽度}is.close();menu();}void canclecourse() //删除课程信息{string coursenum,line,course;ifstream fin("courses.text");fstream outfile("courses.text",ios::trunc|ios::out);// 打开一个文件进行写操作和使同名文件被删除cout<<endl;cout<<"请输入您要删除课程的编码: ";cin>>coursenum;while(!fin.eof()){getline(fin,line);istringstream stream(line); //串流输入coursenum = line.substr(0,line.find(" ",0));if(course != coursenum)outfile<<line<<endl;}outfile.close();fin.close();fstream f("courses.text",ios::trunc|ios::out); //打开一个文件进行写操作和使同名文件被删除ifstream outf("courses.text");f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();}void changecourse() //修改课程信息course cus;int mark;cout<<endl;cout<<"请输入要修改课程信息的编码";double coursenum;cin>>coursenum;ifstream is("courses.text",ios::binary);for(int i=0;!is.eof();i++){is.seekg(28*i); //对输入文件定位,第一个参数是偏移量,第二个参数是基地址is.read((char *)(& cus),sizeof(cus));if(cus.coursenum==coursenum){cout<<"请输入要修改的课程名称";cin>>cus.coursename;cout<<"请输入要修改的课程类型";cin>>cus.coursetapy;cout<<"请输入要修改的课程学分";cin>>cus.xuefen;cout<<"请输入要修改的课程学时";cin>>cus.xueshi;cout<<"请输入要修改的主讲教师";cin>>cus.courseteacher;cout<<"修改完毕!"<<endl<<endl;mark=28*i;menu();break;}}is.close();if(cus.coursenum!=coursenum){cout<<"没有这门课程!"<<endl<<endl;menu();}else{ofstream os("courses.text",ios::in|ios::binary);os.seekp(mark);os.write((char *)(& cus),sizeof(cus));os.close();}}void selectCoures()//选课函数{student stu;int countCoures=0;int countStudent=0;loop:cout<<endl<<"请输入你的学生学号:";double m_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课cin>>m_xuehao;ifstream is("studentInfo.text",ios::binary);is.seekg(0,ios::beg);while(!is.peek()){is.read((char *)(&stu),sizeof(stu)); //从“studentInfo.text”文件中一次读取学生的信息if(m_xuehao == stu.xuehao){loob:countStudent++;cout<<"请输入学号为"<<m_xuehao<<"的学生想要选择的课程编码(1001-9999): ";cin>>m_coursenum;ifstream inCourse("courses.text",ios::binary); //用于从"courses.text"文件中找出该同学想选择的课程信息inCourse.seekg(0,ios::beg);while(!inCourse.eof())//选课核心代码{course cus;//用于此同学将要选择的课程信息inCourse.read((char *)(&cus),sizeof(cus));if(m_coursenum == cus.coursenum){countCoures++;strcpy(stu.coursename,cus.coursename);ofstream outStu("selectCourseResult.text",ios::binary|ios::app);//现将选课的同学信息放入选课结果的文件中outStu.write((char *)(&stu),sizeof(stu));outStu.close();cout<<"学号为"<<m_xuehao<<"成功选了课程号为"<<m_coursenum<<"的课程!"<<endl;}if(countCoures>2){cout<<"同学:你选择的课程已经超过"<<countCoures<<"门了!"<<endl;break;}if(countCoures == 0){cout<<"没有这门课程,还要继续选择其他课程吗y/n?"<<endl;char ch;cin>>ch;if(('y'==ch)||('Y'==ch))goto loob;elsebreak;}inCourse.close();}}if(countStudent==0){cout<<"没有这个学生,是否重新输入y/n?"<<endl;char ch;cin>>ch;if(('y'==ch)||('Y'==ch))goto loop;}is.close();menu();}void scanResult()//查询选课结果{student stu;//用于保存将要选课的那名同学的信息cout<<"学生学号\t学生姓名\t所学专业\t选课名称"<<endl;ifstream is("selectCourseResult.text",ios::binary);for(int i=0;!is.peek();i++){is.read((char*)(&stu),sizeof(stu));cout<<stu.xuehao<<"\t\t"<<<<"\t\t"<<stu.major<<"\t\t"<<stu.coursename<<endl; }is.close();menu();}void set() //信息录入菜单{cout<<endl;cout<<"﹌﹌﹌﹌﹌﹌1. 录入学生信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌2. 录入课程信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌3. 返回前面菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl; student stu;course cus;int choose;cout<<"请输入选项序号: ";cin>>choose;switch(choose){case 1: stu.set();break;case 2: cus.set();break;case 3: menu();break;default: cout<<"没有这个选项,请重新输入,谢谢!"<<endl;set();break;}}void check() //查询信息{cout<<endl;cout<<"﹌﹌﹌﹌﹌﹌1. 查询学生信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌2. 查询课程信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌3. 查询学生选课结果信息﹌﹌﹌﹌﹌﹌"<<endl; cout<<"﹌﹌﹌﹌﹌﹌4. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl; cout<<"请输入选项序号";int choose;cin>>choose;student stu;course cus;switch(choose){case 1: stu.checkstudent();break;case 2: cus.checkcourse();break;case 3: scanResult();break;case 4: menu();break;}}void cancle() //删除信息{cout<<endl;cout<<"﹌﹌﹌﹌﹌﹌1. 删除学生信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌2. 删除课程信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌3. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl;cout<<"请输入选项序号";student stu;course cus;int choose;cin>>choose;switch(choose){case 1: stu.cancleStudent();break;case 2: cus.canclecourse();break;case 3: menu();break;default: cout<<"没有这个选项,请重新输入,谢谢!"<<endl;break;}}void change() //修改信息{cout<<endl;cout<<"﹌﹌﹌﹌﹌﹌1. 修改学生信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌2. 修改课程信息﹌﹌﹌﹌﹌﹌"<<endl;cout<<"﹌﹌﹌﹌﹌﹌3. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl; cout<<"请输入选项序号";student stu;course cus;int choose;cin>>choose;switch(choose){case 1: stu.changestudent();break;case 2: cus.changecourse();break;case 3: cout<<endl;menu();break;default: cout<<"没有这个选项,请重新输入,谢谢!"<<endl;change();}}int main() //主函数{system("color 3f");menu();do{cout<<endl<<"请输入所选择的菜单项序号: ";int choose;cin>>choose;switch(choose){case 1: set();break;case 2: check();break;case 3: selectCoures();break; case 4: cancle();break; case 5: change();break; case 6: exit(1);}}while(1);return 0;}。