学生选课系统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语言的过程中,多多尝试一些实际的项目案例,这样可以更好地提高自己的编程能力和解决问题的能力。
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语言代码
教学计划管理系统c语言代码教学计划管理系统C语言代码在现代教育中,教学计划管理是非常重要的一项工作。
教学计划管理系统可以帮助学校和教师更好地组织和管理教学过程,提高教学效果。
本文将介绍一个基于C语言开发的教学计划管理系统的代码实现。
一、系统功能设计教学计划管理系统主要包括以下功能:1. 教师信息管理:包括教师的基本信息、教授课程等;2. 课程信息管理:包括课程的基本信息、授课教师等;3. 教学计划管理:包括教学计划的编制、修改、查询等;4. 学生信息管理:包括学生的基本信息、选课情况等;5. 成绩管理:包括成绩的录入、查询、统计等。
二、系统代码实现下面是一个简化版的教学计划管理系统的C语言代码实现:```c#include <stdio.h>#include <stdlib.h>// 定义结构体typedef struct {char name[20]; // 姓名int age; // 年龄char gender[10]; // 性别} Teacher;typedef struct {char name[30]; // 课程名称Teacher teacher; // 授课教师} Course;typedef struct {Course course; // 课程int year; // 学年int semester; // 学期} TeachingPlan;typedef struct {char name[20]; // 姓名int age; // 年龄char gender[10]; // 性别TeachingPlan teachingPlan; // 教学计划} Student;// 教师信息管理函数void teacherInfoManagement() {// 实现教师信息的增删改查等操作printf("教师信息管理\n");}// 课程信息管理函数void courseInfoManagement() {// 实现课程信息的增删改查等操作printf("课程信息管理\n");}// 教学计划管理函数void teachingPlanManagement() {// 实现教学计划的编制、修改、查询等操作 printf("教学计划管理\n");}// 学生信息管理函数void studentInfoManagement() {// 实现学生信息的增删改查等操作printf("学生信息管理\n");}// 成绩管理函数void scoreManagement() {// 实现成绩的录入、查询、统计等操作 printf("成绩管理\n");}int main() {int choice;// 主菜单while (1) {printf("欢迎使用教学计划管理系统\n"); printf("1. 教师信息管理\n");printf("2. 课程信息管理\n");printf("3. 教学计划管理\n");printf("4. 学生信息管理\n");printf("5. 成绩管理\n");printf("0. 退出系统\n");printf("请输入您的选择:");scanf("%d", &choice);switch (choice) {case 1:teacherInfoManagement();break;case 2:courseInfoManagement();break;case 3:teachingPlanManagement();break;case 4:studentInfoManagement();break;case 5:scoreManagement();break;case 0:printf("感谢使用教学计划管理系统,再见!\n"); exit(0);default:printf("输入有误,请重新输入!\n");}}return 0;}```三、系统使用说明使用该教学计划管理系统,用户可以根据需要选择相应的功能进行操作。
C语言程序设计
学生成绩管理系统----C语言程序设计课程设计C语言是一门通用的计算机语言,因为有着良好的跨平台性,有标准的规格,可以在电脑平台、单片机以及超级电脑上编译运行,正因为C语言的广泛应用,它成为了大学计算机相关专业的必修科目,也成了一些其它理工科类专业的选修课,学期结束,避免不了要做C 语言程序设计的课程设计,虽然C语言已发展到了C++14,但在大学的基础课上普遍还是学习C语言,今天小编就以学生成绩管理系统为例,介绍下如何来做C语言程序设计的课程设计。
一、弄清课程设计的目的之所以要做课程设计,是为了让我们通过一个项目的设计和实现,帮助我们梳理所学知识,并引导我们学以致用,应用它们去解决实际问题。
在这个过程中,可以促进我们进一步掌握C语言的基础语法知识,提高阅读、编写C语言程序的能力,同时,通过实践,掌握用C 语言解决具体问题的一般方法和步骤,并在调试程序的过程中,提高解决问题的能力,为进一步学习其它语言打好基础。
弄清楚这个目的后,我们就可以正确对待学习,通过学习提高自已的能力,而不是把它当做一个任务,随便应付了事。
二、确立课题,明确设计任务以学生成绩管理系统为例,我们先要确立课题,即用户需求,明确通过程序设计需要实现的功能,具体设计的要求如下:1、由键盘输入20个学生的姓名,学号,某门课程的学习成绩(10~99分)。
2、将分数由低到高排序(用直接排序法和冒泡法),并显示学生姓名和对应的分数。
3、用线性搜索法检索某个学生的成绩(输入姓名,显示成绩)。
4、用二分法检索某个学生的成绩(输入学号,显示成绩)5、设计个性化的界面。
三、绘制程序设计框图根据程序设计的任务,确定设计框图;四、梳理C语言重点知识要点结构化程序设计的方法;函数的定义、函数和模块设计;数组、指针、结构体的应用;编译调试各个函数,实现正确的联调。
五、程序设计#include "stdafx.h"#include <stdio.h>#include <string.h>#define TOTAL 20typedef struct {char name[30]; // 姓名int score; // 分数} REC; // 学生记录类型// 全局变量20个学生记录REC rec[20];// 交换两个记录值void Swap(REC *rec1, REC *rec2){REC r; // 临时变量memcpy(&r, rec1, sizeof(REC)); // 先拷贝到临时变量memcpy(rec1, rec2, sizeof(REC)); // 复制rec2到rec1memcpy(rec2, &r, sizeof(REC)); // 复制临时变量值到rec2 }// 复制记录值void CopyRec(REC *from, REC *to) {memcpy(to, from, sizeof(REC));}// 冒泡排序, 按分数void SortByScore(){for (int i = 0; i < TOTAL; i++) {for (int j = i + 1; j < TOTAL; j++) {if (rec[i].score > rec[j].score) { // 若分数高Swap(&rec[i], &rec[j]); // 则交换}}}}// 插入排序,按分数void InsertionSort(){int i, j, first = 0, last = TOTAL - 1;REC temp;for (i = first + 1; i <= last; i++) {CopyRec(&rec[i], &temp);for (j = i - 1; j >= first && rec[j].score > temp.score; j--) { CopyRec(&rec[j], &rec[j + 1]);}CopyRec(&temp, &rec[j + 1]);}}// 显示/选择菜单int Menu(){int n = 0;while (n < 1 || n > 6) {printf("\n\n 1. 输入学生资料\n"" 2. 输出成绩列表(冒泡法)\n"" 3. 输出成绩列表(插入法)\n"" 4. 按姓名检索(顺序)\n"" 5. 按姓名检索(二分法)\n"" 6. 退出\n""请选择[1-6]: ");scanf("%d", &n);}return n;}// 输入20个学生记录void Input(){FILE *file;for (int i = 0; i < TOTAL; i++) {printf("输入学生%d资料:\n", i + 1);printf(" 姓名: ");scanf("%s", &(rec[i].name));printf(" 分数: ");scanf("%d", &(rec[i].score));}file = fopen(".\\data", "wb+");if (file) {fwrite(&rec, sizeof(rec), 1, file);fclose(file);}}// 输出学生记录,冒泡法void PrintList_Bubble(){SortByScore();printf("\n\n学生成绩列表:\n");for (int i = 0; i < TOTAL; i++) {printf("%10s %d\n", rec[i].name, rec[i].score);}}// 输出学生记录, 插入法void PrintList_Insertion(){InsertionSort();printf("\n\n学生成绩列表:\n");for (int i = 0; i < TOTAL; i++) {printf("%10s %d\n", rec[i].name, rec[i].score);}}// 顺序检索void SearchByName(){char name[30];printf("\n请输入学生姓名: ");scanf("%s", &name);for (int i = 0; i < TOTAL; i++) {if (strcmp(name, rec[i].name) == 0) {printf("检索结果【学生姓名: %s, 分数: %d】", rec[i].name, rec[i].score);return;}}printf("检索结果【没有找到该学生信息】\n");}// 二分法检索void SearchById(){char name [30];int left = 0, right = TOTAL - 1, mid = (left + right) / 2;printf("\n请输入学生姓名: ");scanf("%s", &name);while (left < right && strcmp(rec[mid].name, name) != 0) { // 二分法查找if (strcmp(name, rec[mid].name) <0) {left = mid + 1;} else if (strcmp(name, rec[mid].name) > 0) {right = mid - 1;}mid = (left + right) / 2;}if (strcmp(rec[mid].name, name) == 0) {printf("检索结果【学生姓名: %s, 分数: %d】", rec[mid].name, rec[mid].score);} else {printf("检索结果【没有找到该学生信息】\n");}}// 主程序int main(int argc, char *argv[]){int selected;FILE *file = fopen(".\\data", "rb+");if (file) {fread(&rec, sizeof(rec), 1, file);}printf("学生成绩管理\n");do {selected = Menu();switch (selected) {case 1: Input(); break;case 2: PrintList_Bubble(); break;case 3: PrintList_Insertion(); break;case 4: SearchByName(); break;case 5: SearchById(); break;}} while (selected != 6);return 0;}。
C语言课程设计任务书(18份)详细版
C语言课程设计任务书详细版(18份)C语言课程设计任务书1题目:某学院教学信息管理系统功能:1、每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部教师记录的显示。
4、查找功能:完成按姓名或课程查找教师的相关记录,并显示。
5、排序功能:按职工号或教学效果综合评分进行排序。
6、插入功能:按教学效果综合评分高低插入一条教师记录。
7、将教师记录存在文件中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!要求:1、用C语言实现系统;2、利用结构体数组实现教学信息的数据结构设计;3、系统具有增加,查询,插入,排序等基本功能;4、系统的各个功能模块要求用函数的形式实现;5、将教学信息存在文件中。
课程设计的最后成果是实验报告一份,内容包括:1、预习报告(题目、流程图、程序的设计思想等);2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。
C语言课程设计任务书2题目:酒店房间登记与计费管理系统功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。
3、进一步要求:完成计费和费用查询功能。
要求:1、用C语言实现系统;2、函数功能要划分好(结构化程序设计);3、界面友好(良好的人机交互),加必要的注释;4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
C语言课程设计题目汇总
C语言课程设计题目汇总在C语言学习过程中,课程设计是一项重要的任务,它能够帮助学生巩固所学知识,培养实践能力。
下面是一些常见的C语言课程设计题目汇总,供同学们参考和实践。
1. 学生成绩管理系统设计一个学生成绩管理系统,要求能够记录学生的信息,包括学号、姓名和各科成绩。
系统能够实现添加学生信息、删除学生信息、查询学生成绩、计算平均成绩等功能。
2. 图书管理系统设计一个图书管理系统,要求能够记录图书的信息,包括书名、作者、出版社等。
系统能够实现添加图书信息、删除图书信息、查询图书信息、借阅图书等功能。
3. 学生选课系统设计一个学生选课系统,要求能够记录学生的选课信息,包括学生姓名、选课科目、上课时间等。
系统能够实现学生选课、退选课程、查询已选课程等功能。
4. 考试成绩分析系统设计一个考试成绩分析系统,要求能够读取学生的考试成绩,计算平均分、最高分、最低分等统计数据,并能够按照分数进行排名。
5. 电话簿管理系统设计一个电话簿管理系统,要求能够记录联系人的姓名、电话号码等信息。
系统能够实现添加联系人、删除联系人、查询联系人等功能。
6. 学生信息管理系统设计一个学生信息管理系统,要求能够记录学生的基本信息,包括学号、姓名、性别、年龄等。
系统能够实现添加学生信息、删除学生信息、查询学生信息等功能。
7. 银行账户管理系统设计一个银行账户管理系统,要求能够记录用户的账户信息,包括账号、姓名、余额等。
系统能够实现存款、取款、查询余额等功能。
8. 学生成绩排名系统设计一个学生成绩排名系统,要求能够读取学生的考试成绩,根据成绩进行排名,并能够显示每个学生的排名和分数。
9. 图形绘制程序设计一个图形绘制程序,能够绘制常见的几何图形,如矩形、圆形、三角形等,并能够计算图形的面积和周长。
10. 简易计算器设计一个简易计算器程序,能够实现基本的数学运算,如加法、减法、乘法、除法等,并能够处理异常输入。
以上是一些常见的C语言课程设计题目汇总,希望对同学们的学习和实践有所帮助。
c语言实践项目案例
c语言实践项目案例
以C语言实践项目案例为题,列举一下:
1. 学生成绩管理系统
该项目可以实现学生信息的录入、查询、删除等功能,并可以计算学生的总分和平均分,并按照成绩进行排序。
2. 图书管理系统
该项目可以实现图书的录入、查询、借阅、归还等功能,可以记录图书的基本信息,并可以根据书名、作者等条件进行查询。
3. 超市收银系统
该项目可以模拟超市的收银操作,实现商品的录入、结算、打印小票等功能,可以计算商品的总价和折扣金额。
4. 学生考勤系统
该项目可以记录学生的考勤情况,包括出勤、迟到、早退等信息,可以统计学生的出勤率和迟到率,并可以生成考勤报表。
5. 银行管理系统
该项目可以模拟银行的基本操作,包括开户、存款、取款、查询余额等功能,可以记录用户的基本信息和账户余额。
6. 简易计算器
该项目可以实现简单的数学运算,包括加法、减法、乘法、除法等,
可以接受用户输入并计算结果。
7. 学生选课系统
该项目可以模拟学生选课的过程,包括课程的录入、学生的选课、查询已选课程等功能,可以记录学生的选课信息。
8. 学生作业管理系统
该项目可以记录学生的作业情况,包括作业的布置、提交、批改等功能,可以统计学生的作业成绩和完成情况。
9. 电影票订购系统
该项目可以模拟电影票的订购过程,包括电影的查询、座位的选择、订单的生成等功能,可以记录用户的订购信息。
10. 人事管理系统
该项目可以记录公司员工的基本信息,包括姓名、性别、年龄等,可以实现员工信息的录入、查询、修改等功能。
C语言课程设计实现选课系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedef struct SUBJECT //临时保存课程信息{char c_name[10]; //名称char time[10]; //上课时间char didian[10]; //上课地点};typedef struct STUDENT //临时保存选课信息{int no; ///学号char s_name[10]; //名字char cla[10]; //班级char c_name[10]; //所选课程名称};#define SIZE_SUB sizeof(SUBJECT) //定义常量保存课程结构的大小#define SIZE_STU sizeof(STUDENT) //定义常量保存学生结构的大小void search_stu_no(); //按学号查询选课状态void insert_stu();//保存学生选课信息void search_stu_name();// 按名字查询选课状态void insert_sub();//录入课程信息void search_sub_name();//按课程名称查询void print_all_sub();//显示所有选修课程信息int main(){int i;for(;;){printf("\t\t*********************************\n");printf("\t\t************学生选课系统***********\n");printf("\t\t*********************************\n");printf("1.---------------增加选修课程:\n");printf("2.---------------显示所有选修课程:\n");printf("3.---------------按课程名称查询:\n");printf("4.---------------开始选课:\n");printf("5.---------------按学号查询选课记录:\n");printf("6.---------------按姓名查询选课记录:\n");printf("7.---------------退出系统:\n");printf("\n\n请选择功能:");scanf("%d",&i);switch(i){case 1:{system("cls");insert_sub();}break;case 2:{system("cls");print_all_sub();}break;case 3:{system("cls");search_sub_name();}break;case 4:{system("cls");insert_stu();}break;case 5:{system("cls");search_stu_no();}break;case 6:{system("cls");search_stu_name();}break;case 7:{return 0;}}}system("pause");return 0;}void search_stu_no() //按学号查询{FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];int no;printf("请输入需要查询的学号:");scanf("%d",&no);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!feof(fp)){if(no == student[i].no){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}}else{printf("没有此学生的选课记录\n");}}fclose(fp);system("pause");system("cls");}void insert_stu(){STUDENT student;printf("请输入学号:");scanf("%d",&student.no);printf("请输入姓名:");scanf("%s",&student.s_name);printf("请输入班级:");scanf("%s",&student.cla);printf("请输入所选课程名称:");scanf("%s",&student.c_name);FILE *fp;fp = fopen("student.txt","ab");if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&student,SIZE_STU,1,fp); //以二进制写入文件中fclose(fp);printf("选课成功:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_stu_name(){FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];char name[10];printf("请输入需要查询的姓名:");scanf("%s",name);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!strcmp(name,student[i].s_name)){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}else{printf("没有选课记录\n");}}fclose(fp);}void insert_sub(){SUBJECT subject;FILE *fp;fp = fopen("subject.txt","ab");printf("请输入课程名称:");scanf("%s",&subject.c_name);printf("请输入开课时间:");scanf("%s",&subject.time);printf("请输入上课地点:");scanf("%s",&subject.didian);if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&subject,SIZE_SUB,1,fp); //以二进制写入文件中fclose(fp);printf("\n\n************课程已增加***********:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_sub_name(){FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];char name[10];printf("请输入需要查询的课程名称:");scanf("%s",name);printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //读取文件内所有信息{if(!feof(fp)) //判断文件指针是否到达文件末尾{if(!strcmp(name,subject[i].c_name)) //字符串比较,判断是否相等{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}}else{printf("没有该课程信息\n");}}fclose(fp);system("pause");system("cls");}void print_all_sub() //显示所有课程信息{FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //如果没有到达文件末尾则始终读取{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}fclose(fp);system("pause");system("cls");}。
c语言程序设计之学生选修课系统设计代码
c语言程序设计之学生选修课系统设计代码在学生选修课系统设计中,C语言程序设计是必不可少的一部分。
本文将详细介绍学生选修课系统的设计代码,包括学生信息管理、课程信息管理、选课与退课等功能。
一、学生信息管理在学生选修课系统中,首先需要实现学生信息的管理功能。
以下是学生信息管理的代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>struct Student {char id[20];char name[20];int age;};void addStudent(struct Student students[], int *count) {printf("请输入学号:");scanf("%s", students[*count].id);printf("请输入姓名:");scanf("%s", students[*count].name);printf("请输入年龄:");scanf("%d", &students[*count].age);(*count)++;printf("添加学生信息成功!\n");}void deleteStudent(struct Student students[], int *count) { char id[20];printf("请输入要删除的学生学号:");scanf("%s", id);for (int i = 0; i < *count; i++) {if (strcmp(students[i].id, id) == 0) {for (int j = i; j < *count - 1; j++) {strcpy(students[j].id, students[j+1].id);strcpy(students[j].name, students[j+1].name); students[j].age = students[j+1].age;}(*count)--;printf("删除学生信息成功!\n");return;}}printf("未找到对应学生信息!\n");}void displayStudents(struct Student students[], int count) {printf("学号\t姓名\t年龄\n");for (int i = 0; i < count; i++) {printf("%s\t%s\t%d\n", students[i].id, students[i].name, students[i].age);}}二、课程信息管理除了学生信息管理外,还需要实现课程信息的管理功能。
学生选课系统说明书
*******************实践教学*******************兰州理工大学计算机与通信学院2011年春季学期算法与数据结构课程设计题目:学生选课系统专业班级:计算机(4)班姓名:杨国亮学号:09240415指导教师:张其文成绩:_______________目录摘要 (1)前言 (2)正文 (3)1.采用类C语言定义相关的数据类型 (3)2.各模块的伪码算法 (3)3.函数的调用关系图 (6)4.调试分析 (7)5.测试结果 (8)6.源程序(带注释) (14)总结 (16)参考文献 (17)致谢 (18)附件Ⅰ部分源程序代码 (19)摘要选课系统是针对在校学生和教师使用,从学生的角度来说,由于学校教学制度的改革,现在大部分高等院校开始实行的是学生的自主选课模式,传统的教学模式(学生按照学校安排好的课程上课)已经不能适应新型的教学手段,如果仍然通过纸上的方式选课,一方面浪费的大量的人力、物力资源,另一方面浪费时间以及在人为的统计过程中不可避免出现的差错等情况。
随着高校人数的增多,这种弊端会越来越多的暴露出来。
因此,学生只要在计算机前输入自己的个人选课信息即可完成原来几倍的作业量。
从教师的角度来说,同样是节省了大量的工作量,由于教师提出代课申请完成课程发布的工作较学生选课而言更加的复杂,因此通过进行课程发布能大幅度的减少教师的工作量,减少错误的发生几率。
作为教师,也只要通过自己的电脑来操作即可,不用再奔波于教务处和办公室之间。
选课管理系统,它是结构化的系统,它能更有效,更快速的实现学生选课的管理过程,而且管理的安全机制也更完善,这样就可以为学生的管理花费更少的人力和物力资源。
随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。
以往的选课方法是随堂报名。
这种方法虽然直接,但是造成选课的盲目性和教务处处理数据的繁重性。
为了减轻教务处工作,以及每个学生更好的选择自己所喜欢的科目。
- 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;}。