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

c语言课程设计学生选课系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计学生选课系统。
具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.技能目标:学生能够运用C语言编写简单的程序,具备一定的编程能力,能够独立设计并实现学生选课系统的核心功能。
3.情感态度价值观目标:学生通过本课程的学习,能够培养对计算机编程的兴趣和热情,提高解决问题的能力,培养团队协作和自主学习的意识。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。
2.函数:包括函数的定义、声明、调用等。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作等。
4.指针:包括指针的基本概念、指针与数组、指针与函数等。
5.结构体和文件:包括结构体的定义和使用、文件的读写操作等。
6.学生选课系统的设计与实现:包括系统需求分析、系统设计、核心功能实现等。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,让学生掌握C语言的基础知识。
2.案例分析法:通过分析实际的学生选课系统的案例,让学生了解并掌握系统的设计与实现方法。
3.实验法:让学生通过动手编写程序,巩固所学知识,提高编程能力。
4.小组讨论法:分组让学生讨论并解决问题,培养团队协作和自主学习的意识。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
2.参考书:提供相关的C语言编程参考书籍,供学生自主学习。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
c语言课程设计学生选课系统

c语言课程设计 学生选课系统一、课程目标知识目标: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. 模块化编程:讲解模块化编程思想,引导学生将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
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.实验设备:保证学生有足够的实践机会,提高其编程能力和实践能力。
学生选课系统C语言程序代码

学生选课系统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语言

课程信息管理系统c语言课程信息管理系统(C语言)一、引言课程信息管理系统是一种用来管理和组织课程信息的软件系统。
它能够对教学计划、课程表、学生选课等进行管理,帮助学校、教育机构或教师高效地管理课程信息。
本文将通过介绍课程信息管理系统的功能、特点和实施过程,详细阐述C语言在该系统中的应用。
二、功能介绍1. 学生管理:该系统能够记录学生的个人信息,如学号、姓名、班级等,并能进行学生选课管理,包括选课、退课等操作。
2. 课程管理:系统可以管理各门课程的信息,如课程编号、课程名称、学分等,并能进行课程安排,制定教学计划。
3. 教师管理:系统可以记录教师的基本信息,提供教师选课、授课安排等功能。
4. 成绩管理:系统能够记录学生的各科成绩,并提供成绩查询、统计等功能,方便学生和教师进行学业评估。
5. 课程评价:系统可以记录学生对课程的评价和反馈,帮助学校和教师改进教学质量。
三、特点和优势1. 数据集中管理:课程信息管理系统将学生、教师、课程等信息集中管理,方便快捷,减少重复工作。
2. 数据安全性高:系统采用数据库来存储和管理数据,确保数据的安全性和完整性。
3. 操作简便:系统界面友好,操作简单明了,即使对计算机操作不熟悉的教师和学生也能够轻松上手。
4. 信息共享:系统支持信息共享,学生、教师和管理者可以通过系统查询相关信息,提高工作效率。
5. 数据分析功能:系统能够对学生选课情况、成绩分布等进行统计和分析,为教学改革提供数据支持。
四、实施过程1. 需求分析:通过与学校、教师和学生的沟通,明确系统的需求和功能。
2. 系统设计:根据需求分析的结果,设计系统的数据库结构、界面和功能模块。
3. 编码实现:使用C语言编写相应的代码,实现系统的各个功能模块。
4. 测试调试:对系统进行功能测试和性能测试,确保系统的稳定性和可靠性。
5. 上线部署:将系统部署到服务器上,并进行相关的数据迁移和备份工作。
6. 培训和维护:对教师和学生进行系统培训,并进行后期的系统维护和更新。
学生选课系统程序设计文档

*******************实践教学*******************兰州理工大学计算机与通信学院2015年春季学期C程序设计课程设计题目:学生选课系统专业班级:信息与计算科学*名:***学号:07指导教师:张墨逸成绩:______________前言数据库是从60年代初发展起来的计算机技术。
经过四十来年的发展,数据库技术己经趋于成熟。
Web数据库在新的Internet环境中发生了很大的变化。
就数据应用而言呈现出多样化的空间,如数字图书馆、电子出版物、电子商务、远程教育系统等的出现,给web数据库技术提出了更多、更高的要求。
同时,随着国内高校校园网的建设,基于互联网的应用系统的开发正在蓬勃发展并发挥着较大的作用。
例如,我国许多高校的网上招生系统,学校的各种管理信息系统,学校选课系统,还有一些医学院校开发出的网上诊所、远程诊断系统等等,都是基于校园网的应用系统。
国外的教学科研软件与国内相比开发的早而且比较成熟。
早在七十年代末,美国就建成了NSFNET(国家科学基金网),其课题的申报及课题的进展情况汇报都在网上进行。
其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。
目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。
所有这些都表明,基于Internet的校园网的应用已深入到校园内的各个方面。
摘要建立一个“学生选课系统”,系统以菜单的方式工作。
编写存放的程序包含被选课的信息,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。
学校管理员首先录入可供学生选择的课程,然后学生可按要求(如总学分不得少于30)自由选课。
通过子函数的编写,能对这些课程信息进行录入,浏览,查询,修改,选择功能。
并将这些信息存入文件中。
课程信息管理系统c语言

课程信息管理系统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语言项目案例

c语言项目案例C语言项目案例。
在学习C语言的过程中,很多人会感到枯燥和乏味,因为C语言作为一门结构化的程序设计语言,更多的是以算法和逻辑为主,缺乏实际的项目案例来练习和应用。
因此,本文将给大家介绍一些C语言项目案例,帮助大家更好地理解和应用C语言。
1. 学生成绩管理系统。
学生成绩管理系统是一个非常经典的C语言项目案例。
通过这个项目,你可以学习如何设计一个简单的学生成绩管理系统,包括学生信息的录入、成绩的输入和查询、成绩的统计和分析等功能。
这个项目涉及到文件操作、结构体的使用、指针的应用等内容,对于初学者来说是一个很好的练习项目。
2. 简单的图书管理系统。
图书管理系统是另一个很好的C语言项目案例。
通过这个项目,你可以学习如何设计一个简单的图书管理系统,包括图书信息的录入、借阅和归还功能、图书信息的查询和统计等功能。
这个项目涉及到文件操作、链表的应用、字符串处理等内容,对于提高学生的编程能力和综合运用C语言知识是非常有帮助的。
3. 简单的学生选课系统。
学生选课系统是另一个很好的C语言项目案例。
通过这个项目,你可以学习如何设计一个简单的学生选课系统,包括学生信息的录入、课程的添加和删除、学生选课和退课等功能。
这个项目涉及到文件操作、数组的应用、函数的设计等内容,对于提高学生的逻辑思维和编程能力是非常有帮助的。
4. 简单的学生信息管理系统。
学生信息管理系统是一个非常基础的C语言项目案例。
通过这个项目,你可以学习如何设计一个简单的学生信息管理系统,包括学生信息的录入、修改和删除、学生信息的查询和打印等功能。
这个项目涉及到文件操作、数组的应用、字符串处理等内容,对于初学者来说是一个很好的练习项目。
总结。
通过以上介绍的C语言项目案例,我们可以看到,C语言作为一门结构化的程序设计语言,可以应用到很多实际的项目中。
通过这些项目案例的学习和练习,我们不仅可以提高自己的编程能力,还可以更好地理解和应用C语言的知识。
因此,我建议大家在学习C语言的过程中,多多尝试一些实际的项目案例,这样可以更好地提高自己的编程能力和解决问题的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求... 第二部分:程序总体设计思路........... 第三部分:程序功能划分、图示及流程图. 第四部分:程序设计数据、运行结果..... 第五部分:程序的优缺点............... 第六部分:心得体会................... 第七部分:附录(源程序)............. 第八部分:附录(参考文献)...........第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。
这9个部分依次是:1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分;main()总体设计:系统功能模块图部分函数流程图:1、课程选择函数:第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。
【软件运用举例】1、程序开始界面如下:选择某个选项,如进行管理员登录,进行课程的增加进入管理员界面:2、再选择所要进行的操作,如进行课程增加,结果如下:下面可以进行继续增加课程或者退出:3、选择课程浏览,可以分页查看相应的课程信息:第一页:第二页:4、课程查询查找结果:4、管理员课程删除操作:删除后可以进行浏览,观察删除后的结果:可见删除后只有一条记录。
删除操作完成正确。
下面进行学生操作的使用方法:1、学生登陆界面:2、选择学生选课选项:3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。
第五部分:程序的优缺点【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。
[算法上的优点]主要体现在以下三点:1.程序采用main主函数方式设计,程序的主体的功能大都由该功能完成。
程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。
2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。
3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。
[功能上的优点]主要体现在以下两点:1.简洁明了的程序菜单。
程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。
2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。
程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。
【程序的缺点】主要表现在以下两点:1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。
需要改善。
2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。
第六部分:心得体会选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。
本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。
通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。
程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。
对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。
通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。
所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。
总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。
第七部分:附录一、参考文献:1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(第三版),清华大学出版社二、源程序#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"void index();//首页void login();void bye_sys();//退出界面void stu_login();//学生登录菜单void c_select();void c_view();//课程浏览void c_add();//增加课程void c_delete();void c_searchs();//学生查询函数void c_searchm();//管理员查询函数void c_viewm();//管理员浏览函数void c_views();//学生浏览函数struct course//定义课程结构体{int c_num;char c_name[20];int c_score;int c_nelepeo;//课程已选人数int c_melepeo;//课程人数上限};struct student{char s_number[10];char s_password[10];};struct manager{char m_name[10];char m_password[10];};void index()//首页{char input;printf("\n\n\t\t\t*****************************\n");printf("\t\t\t 湖南大学学生选课系统\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t**********设计者:刘晓斌******\n\n\n");input=getchar();system("cls");}void login()//登陆界面{void stu_login();void man_login();void bye_sys();int input;do{system("cls");printf("\n\n\n\t1.学生登录\n");printf("\t2.管理员登陆\n");printf("\t3.退出本系统\n");printf("\t请选择服务类别:");scanf("%d",&input);if (input!=1&&input!=2&&input!=3) //输入数不等于选项的时候打印画面{printf("\n\t输入出错!请重新选择~\n");printf("\n\t按任意键返回选择页面~\n\t");getchar();getchar();system("cls");}if(input==3)//如果输入3退出系统{bye_sys();}}while(input!=1&&input!=2&&input!=3);switch(input){case 1:stu_login();break;case 2:man_login();break;}}void bye_sys()//退出界面{exit(0);}void man_login(){void c_add();void c_delete();void c_view();void c_searchm();int in;do{system("cls");printf("\n\n\t1.新增课程\n");printf("\t2.删除课程\n");printf("\t3.课程浏览\n");printf("\t4.课程查询\n");printf("\t5.退出\n");printf("\n\n\t请选择服务种类:");scanf("%d",&in);if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5){printf("\n\t没有这项服务\t按任意重新选择");getchar();getchar();}}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5);switch(in){case 1:c_add();break;case 2:c_delete();break;case 3:c_viewm();break;case 4:c_searchm();break;case 5:login();break;}}void stu_login()//学生登录菜单{void c_select();void c_view();void c_searchs();void login();int input;do{system("cls");printf("\n\n\n\t--学生登陆--");printf("\n\n\t1.学生选课\n");printf("\t2.课程浏览\n");printf("\t3.课程查询\n");printf("\t4.退出\n");scanf("%d",&input);if(input!=1&&input!=2&&input!=3&&input!=4){printf("\n\t没有这项服务~\n");printf("\t按任意键重新选择");getchar();getchar();}}while(input!=1&&input!=2&&input!=3&&input!=4);switch(input){case 1:c_select();break;case 2:c_views();break;case 3:c_searchs();break;case 4:login();break;}}void c_select(){int n,in,i=0,j;int flag=0;FILE *fp;FILE *fp1;char input;struct course courses[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");input=getchar();input=getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭}printf("\n\n\t\t请输入你要选课程的编号:");scanf("%d",&n);if((fp1=fopen("courseselect.dat","rb"))==NULL){fp1=fopen("courseselect.dat","wb");}else{fclose(fp1);fp1=fopen("courseselect.dat","ab");}for(j=0;j<i;j++)if(courses[j].c_num==n)flag++;if(flag==0){printf("\n\n\t\t不存在对应课程\n");printf("\n\n\t\t继续选课请按1,退出请按2:\n");scanf("%d",&in);switch(in){case 1:c_select();break;case 2:stu_login();break;default:printf("输入错误,将返回登录界面!\n");login();break;}}else{fwrite(&courses[j],sizeof(struct course),1,fp1);fclose(fp1);printf("\n\n\t\t选课成功\t请选择:");printf("\n\n\t\t1.继续选课");printf("\n\n\t\t2.退出,返回登录界面!");scanf("%d",&in);switch(in){case 1:c_select();break;case 2:stu_login();break;default:break;}}}void c_viewm()//课程浏览{void stu_login();void c_view() ;int inp,i=0,n=0;FILE *fp;char input;struct course courseview[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls");if(i==1){printf("\n\n\n\t\t\t没有记录!\n");getchar();getchar();man_login();}else{printf("\n\t------共有%d条记录-------",i-1);printf("\n\n\t课程编号:%d\n",courseview[n].c_num);printf("\n\n\t课程名字:%s\n",courseview[n].c_name);printf("\n\n\t课程学分:%d\n",courseview[n].c_score);printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo);printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:");scanf ("%d",&inp);switch(inp){case 1:{if(n==0){printf("\n\t已到达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case 2:{if(n==i-2){printf("\n\t已到达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case 3:{man_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;}}}}while(inp!=3);}}void c_views()//课程浏览{void stu_login();void c_view() ;int inp,i=0,n=0;FILE *fp;char input;struct course courseview[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls");if(i==1){printf("\n\n\n\t\t\t没有记录!\n");getchar();getchar();stu_login();}else{printf("\n\t------共有%d条记录-------",i-1);printf("\n\n\t课程编号:%d\n",courseview[n].c_num);printf("\n\n\t课程名字:%s\n",courseview[n].c_name);printf("\n\n\t课程学分:%d\n",courseview[n].c_score);printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo); printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo);printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:");scanf ("%d",&inp);switch(inp){case 1:{if(n==0){printf("\n\t已到达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case 2:{if(n==i-2){printf("\n\t已到达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case 3:{stu_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;}}}}while(inp!=3);}}void c_searchs(){void stu_login();void c_searchs();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear[10];if ((fp=fopen("course.dat","rb"))==NULL) //判断课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询的课程编号:");scanf("%d",&id);do//检查输入是否符合要求{for(j=0;j<i-1;j++){if(id==coursesear[j].c_num){flag++;k=j;}}if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo);getchar();getchar();printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchs();case 2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}else{system("cls");printf("\n\n\t不存在对应记录\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchs();case 2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}}while(inp!=1);}void c_searchm(){void stu_login();void c_searchm();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear[10];if ((fp=fopen("course.dat","rb"))==NULL) //判断课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询的课程编号:");scanf("%d",&id);do//检查输入是否符合要求{for(j=0;j<i-1;j++){if(id==coursesear[j].c_num){flag++;k=j;}}if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo);getchar();getchar();printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchm();case 2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}else{system("cls");printf("\n\n\t不存在对应记录\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchm();case 2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}}while(inp!=1);}void c_add()//增加课程{void c_add();void man_login();int i=0,j,inp;FILE *fp;struct course course_new;struct course courses[10];system("cls");printf("\n\n\t\t请输入课程信息");printf("\n\n\t\t1.课程编号:");scanf("%d",&course_new.c_num);printf("\n\n\t\t2.课程名字:");scanf("%s",course_new.c_name);printf("\n\n\t\t3.课程学分:");scanf("%d",&course_new.c_score);printf("\n\n\t\t4.课程已选人数:");scanf("%d",&course_new.c_nelepeo);printf("\n\n\t\t5.课程人数上限:");scanf("%d",&course_new.c_melepeo);if((fp=fopen("course.dat","rb"))!=NULL){do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for(j=0;j<=i-1;j++)if(course_new.c_num==courses[j].c_num){system("cls");printf("\n\n\t\t\t对不起,这个编号已经使用过\n\n\t\t按任意键返回管理菜单");getchar();getchar();man_login();break;}}if((fp=fopen("course.dat","rb"))==NULL){fp=fopen("course.dat","wb");}else{fclose(fp);fp=fopen("course.dat","ab");}fwrite(&course_new,sizeof(struct course),1,fp);fclose(fp);printf("\n\n\t\t信息输入完毕\t按任意键继续");getchar();getchar();do{system("cls");printf("\n\n\t\t1.继续输入");printf("\n\n\t\t2.返回管理菜单");printf("\n\n\t\t请选择");scanf("%d",&inp);if(inp!=1&&inp!=2){printf("输入不符合要求\t按任意键重新选择");getchar();getchar();}}while(inp!=1&&inp!=2);switch(inp){case 1:c_add();break;case 2:man_login();break;}}void c_delete()//查询后删除{FILE *fp;int i=0,j,n,k,flag=0;struct course courses[10];void c_delete();void man_login();printf("\n\n\t\t请输入你要删除的课程编号:");scanf("%d",&n);if((fp=fopen("course.dat","rb"))!=NULL){do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}else{printf("\n\n\t\t不存在任何课程\t按任意键返回");getchar();getchar();man_login();}for(j=0;j<i-1;j++){if(courses[j].c_num==n){flag=1;fp=fopen("course.dat","wb");for(k=0;k<j;k++)fwrite(&courses[k],sizeof(struct course),1,fp);fclose(fp);fp=fopen("course.dat","ab");for(k=j+1;k<i-1;k++){fwrite(&courses[k],sizeof(struct course),1,fp);}printf("\n\n\t\t记录已删除!\t按任意键返回\n\t\t");getchar();getchar();man_login();fclose(fp);}}if(flag==0){printf("\n\n\t\t不存在对应的课程\t按任意键返回");getchar();getchar();man_login();}// printf("\n\n\t\t记录已删除!\t按任意键返回\n\t\t");}int main(){index();login();return 0;}。