学生选课管理系统c语言程序
- 格式:doc
- 大小:79.50 KB
- 文档页数:39
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语言学生管理系统代码
简介
学生管理系统是一个用于管理学生信息的简单程序,它可以实现添加学生信息、显示学生信息、修改学生信息和删除学生信息等功能。
通过这个系统,学校或机构可以更方便地管理和维护学生的相关数据。
功能
1.添加学生信息:通过输入学生的姓名、学号、年龄和性别等信息,将
学生信息存储在系统中。
每个学生信息包括学号、姓名、年龄和性别等关键信息。
2.显示学生信息:可以显示系统中所有学生的信息,包括学号、姓名、
年龄和性别。
3.修改学生信息:通过输入学生的学号,可以修改该学生的姓名、年龄
和性别等信息。
4.删除学生信息:通过输入学生的学号,可以删除该学生的信息。
实现
下面是一个简单的C语言学生管理系统代码示例:
```c #include <stdio.h> #include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体 struct Student { int id; char name[100]; int age; char
gender[10]; };
// 定义全局变量,用于存储学生信息和统计学生数量 struct Student
students[MAX_STUDENTS]; int num_students = 0;
// 添加学生 void addStudent() { if (num_students >= MAX_STUDENTS) { printf(。
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. 模块化编程:讲解模块化编程思想,引导学生将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
#include<stdio.h>#include<stdlib.h>struct couse * head1;struct student * head2;struct couse//课程信息结构体{int num1;char name1[20];int score;int nelepeo;//课程已选人数int Melepeo;//课程人数上限struct couse * next;};struct student//学生信息结构体{int num2;char name2[20];int nelenum[50];//已选课程编号int nelen;//已选课程数量struct student * next;};void keyboardc()//录入课程子函数(从键盘录入){struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse)); printf("\n课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1 ->Melepeo);p1->nelepeo=0;head1=NULL;while(p1->num1!=0&&p1->num1!='#'){N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse));scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1 ->Melepeo);p1->nelepeo=0;}p2->next=NULL;}void inputc()//录入课程主函数{int i;printf("\n录入课程信息\n");printf("\n1.从键盘录入\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)//课程信息增加子函数{struct couse *p0,*p1,*p2;p1=head1;p0=incouse;if(head1==NULL){head1=p0;p0->next=NULL;}else{while((p0->num1>p1->num1)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;}if(p0->num1 <= p1->num1){if(head1==p1) head1=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N1=N1+1;}void delc(int num1)//课程信息删除子函数{struct couse *p1,*p2;if(head1==NULL){printf("\n没有课程,无法删除!\n"); goto end;}p1=head1;while(num1!=p1->num1 && p1->next!=NULL) {p2=p1;p1=p1->next;}if(num1==p1->num1){if(p1==head1) head1=p1->next;else p2->next=p1->next;printf("\n已删除该编号课程!\n");N1=N1-1;}else printf("\n无该编号的课程!\n");end:;}void managementc()//课程信息管理主函数{struct couse * incouse;int i,num1;printf("\n课程管理\n");printf("\n1.新增课程\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,&inc ouse->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()//录入学生信息子函数(从键盘录入){int i;struct student *p1,*p2;N2=0;p1=p2=(struct student *)malloc(sizeof(struct student));printf("\n学生学号\t学生姓名\n");scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;head2=NULL;while(p1->num2!=0){N2=N2+1;if(N2==1)head2=p1;else p2->next=p1;p2=p1;p1=(struct student * )malloc(sizeof(struct student));scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;}p2->next=NULL;}void inputs()//录入学生信息主函数{int i;printf("\n录入学生信息\n");printf("\n1.从键盘录入\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)//学生信息增加子函数{struct student *p0,*p1,*p2;p1=head2;p0=incouse;if(head2==NULL){head2=p0;p0->next=NULL;}else{while((p0->num2 > p1->num2) && (p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num2 <= p1->num2){if(head2==p1) head2=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N2=N2+1;}void dels(int num2)//学生信息删除子函数{struct student *p1,*p2;if(head2==NULL){printf("\n没有该学生信息,无法删除!\n"); goto end;}p1=head2;while(num2!=p1->num2 && p1->next!=NULL){p2=p1;p1=p1->next;}if(num2==p1->num2){if(p1==head2) head2=p1->next;else p2->next=p1->next;printf("\n已删除该学生信息!\n");N2=N2-1;}else printf("\n无该学号的学生!\n");end:;}void managements()//学生信息管理主函数{struct student * incouse;int i,num2;printf("\n学生信息管理\n");printf("\n1.新增学生信息\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)//学生选课子函数(进行选课){struct couse * p;int num1,i;printf("\n请输入要选课的编号:\n");scanf("%d",&num1);for(i=0;s->nelenum[i]!=0;i++);s->nelenum[i]=num1;(s->nelen)++;p=head1;while(p->num1!=num1) p=p->next;(p->nelepeo)++;}void cheak()//学生选课子函数(查询可选课程){char e;struct couse * c;struct student * s;int num2,i,j=0,t=0;printf("\n请输入你的学号:\n");scanf("%d",&num2);s=head2;while(s->num2!=num2 && s->next!=NULL) s=s->next; if(s->num2!=num2){printf("\n不存在你的信息,请进入主菜单录入你的信息!\n");goto end;}c=head1;printf("\n你的可选课程编号:\n");while(c!=NULL){for(t=0,i=0;s->nelenum[i]!=0;i++){if(c->num1==s->nelenum[i]) t=1;}if(t==0 && (c->nelepeo!=c->Melepeo)){printf("%d ",c->num1);j++;}c=c->next;}if(j==0){printf("\n你已选完所有课程,无法再多选!\n"); goto end;}printf("\n选课(y/n)?:\n");getchar();e=getchar();i=0;while(e=='y'){elect(s);printf("\n继续选课(y/n)?:\n");getchar();e=getchar();}end:;}void back(struct student * p)//退选课程{struct couse * p1;int num1,i,j;printf("\n请输入你要退掉的课程编号:\n");scanf("%d",&num1);p1=head1;while(p1->num1!=num1) p1=p1->next;for(i=0;p->nelenum[i]!=num1;i++);for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1];p->nelenum[--j]=0;(p1->nelepeo)--;printf("\n退课成功!\n");}void hcheak()//学生选课子函数(查询已选课程){char c;struct couse * p0;struct student * p;int num2,i,f=0;printf("\n请输入学号:\n");scanf("%d",&num2);p=head2;while(p->num2!=num2 && p!=NULL) p=p->next;if(p==NULL){printf("\n不存在你的信息,请回主菜单录入信息:\n");goto end;}printf("\n已选课程编号:\n");if(p->nelenum[0]==0){printf("\n你还没选课!\n");goto end;}for(i=0;p->nelenum[i]!=0;i++){printf("%d\n",p->nelenum[i]);p0=head1;while(p0->num1!=p->nelenum[i]) p0=p0->next; f=f+p0->score;}printf("\n总学分:%d\n",f);printf("\n是否进行退课(y/n)?\n");getchar();c=getchar();while(c=='y'){back(p);printf("\n继续退课(y/n)?"); getchar();c=getchar();(p->nelen)--;}end:;}void elective()//学生选课主函数{int i;printf("\n学生选课\n");printf("\n1.查询可选课程\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()//查看课程信息{struct couse * p;p=head1;printf("\n课程编号课程名称学分课程已选人数课程人数上限\n");while(p!=NULL){printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->s core,p->nelepeo,p->Melepeo);p=p->next;}}void lists()//查看学生信息{struct student * p;p=head2;printf("\n学生学号学生姓名已选课程数量\n"); while(p!=NULL){printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen); p=p->next;}}void store()//系统信息查看主函数{int i;printf("\n系统信息查看\n");printf("\n1.查看课程信息\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()//主函数{system("color f0");int i;start:printf("\n******************************欢迎使用学生选课系统******************************\n");printf("\n 菜单 \n");printf("\n 1.录入课程信息 \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语言选课管理系统的开发方法,培养其编程能力和问题解决能力。
具体目标如下: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语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
学生选课管理系统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. 培训和维护:对教师和学生进行系统培训,并进行后期的系统维护和更新。
C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。
#include〈stdio。
h>#include〈stdlib.h>#include〈string。
h>int N1,N2;struct couse *head1;structstudent* head2;struct couse ﻩ//课程信息结构体{int num1;ﻩﻩﻩ//课程编号charname1[20];ﻩ//课程名称char type[20];ﻩ//课程性质inthour;ﻩ//总学时ﻩintteach;ﻩﻩ//上课学时ﻩintexp;ﻩﻩ//实验上机学时int credit;ﻩﻩﻩ//学分ﻩint semester; ﻩ//开课学期int nelepeo;ﻩ//课程已选人数ﻩintMelepeo;//课程上限struct couse *next;};struct studentﻩﻩ//学生信息结构体{int num2;ﻩﻩﻩﻩ//学号char name2[20];ﻩ//姓名intnelenum[50];ﻩ//已选课程编号char nelename[10][20];ﻩ//已选名称int nelen; //已选课程数量ﻩint score;//总学分ﻩintgainscore; //已获得的学分struct student *next;};void manger();void student();void managementc();voidmanagements();void manage();void main();voidintoc() //存储课程信息{FILE *fp;struct couse *p;char filepath[30];ﻩprintf(”\t\t\t*****************************\n”);printf("\n\t\t\t\t欢迎使用此系统!\n”);printf(”\t\t\t*****************************\n");ﻩprintf("输入路径:");getchar();ﻩgets(filepath);ﻩif((fp=fopen(filepath,”w"))==NULL)ﻩ{ﻩﻩprintf("无法储存!”);exit(0);}p=head1;ﻩwhile(p!=NULL){fprintf(fp,”%d%s%s%d%d%d%d%d%d%d\n",p-〉num1,p->name1,p->t ype,p->hour,p—>teach,p->exp,p->credit,p—〉semester,p-〉nelepeo,p->Melepeo);ﻩp=p-〉next;ﻩ}fclose(fp);printf("已储存入%s文件!\n”,filepath);}voidkeyboardc()ﻩﻩﻩﻩﻩ//录入课程子函数(从键盘录入){structcouse*p1,*p2;N1=0;p1=p2=(structcouse*) malloc(sizeof(struct couse));printf("\t\t\t*****************************\n");printf(”\n\t\t\t\t欢迎使用此系统!\n”);printf(”\t\t\t*****************************\n");printf(”编号\\名称\\性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\已选人数\\课程上限\n");scanf(”%d%s %s %d %d %d%d %d%d %d",&p1—>num1,p1—〉name1,&p1—>type,&p1—>hour,&p1—〉teach,&p1—〉exp,&p1-〉credit,&p1—>semester,&p1-〉nelepeo,&p1—>Melepeo);head1=NULL;while(p1-〉num1!=0){N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;ﻩﻩﻩ//对这段语句有疑问p2=p1;p1=(structcouse * )malloc(sizeof(struct couse));sca nf(”%d %s %s%d %d %d%d%d%d %d”,&p1—>num1,p1—〉name 1,p1->type,&p1—>hour,&p1—>teach,&p1-〉exp,&p1-〉credit,&p1->seme ster,&p1-〉nelepeo,&p1->Melepeo);}p2-〉next=NULL;}void filec()ﻩﻩﻩﻩﻩﻩﻩ//录入键盘子函数(从文件录入){FILE* fp;charfilepath[20];structcouse*p1,*p2;N1=0;ﻩprintf(”\t\t\t*****************************\n");printf(”\n\t\t\t\t欢迎使用此系统!\n”);printf(”\t\t\t*****************************\n”);printf(”输入要读入的文件路径:");getchar();gets(filepath);if((fp=fopen(filepath,”rb"))==NULL){printf(”找不到%s文件!\n",filepath);exit(0);}p1=p2=(struct couse*)malloc(sizeof(structcouse));fscanf(fp,”%d%s%s%d%d%d%d%d%d%d”,&p1->num1,p1-〉name1,p1—>typ e,&p1—>hour,&p1—>teach,&p1—〉exp,&p1-〉credit,&p1—〉semester,&p 1-〉nelepeo,&p1—>Melepeo);head1=NULL;while(!feof(fp))ﻩﻩﻩﻩﻩ{N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse));fscanf(fp,"%d%s%s%d%d%d%d%d%d%d",&p1—>num1,p1-〉n ame1,p1-〉type,&p1—〉hour,&p1-〉teach,&p1-〉exp,&p1—〉credit,&p1->seme ster,&p1—>nelepeo,&p1-〉Melepeo);}p2->next=NULL;}void inputc()ﻩﻩﻩﻩﻩﻩ//录入课程主函数{int i;ﻩprintf("\t\t\t*****************************\n”);printf("\n\t\t\t\t欢迎使用此系统!\n”);printf("\t\t\t*****************************\n");printf("\t\t\t录入课程信息\n”);printf(”\n\t\t\t1.从键盘录入\n");printf("\t\t\t2。
从文件录入\n”);printf("\t\t\t3。
返回上一菜单\n");printf(”请选择(1~3):”);scanf(”%d",&i);switch(i){case(1):system(”cls");keyboardc();system("cls");inputc();break;case(2):system(”cls");filec();system("cls”);inputc();break;case(3):system("cls");managementc();break;}}voidinsertc(int num2)//课程管理子函数(修改课程){ﻩstruct couse*p1,*p2;if(head1==NULL){printf("\n\t\t\t没有课程,无法修改!\n”);gotoend;}p1=head1;while(num2!=p1-〉num1&&p1—>next!=NULL) {p2=p1;p1=p1—〉next;}if(num2==p1—〉num1){ﻩﻩprintf("\t\t\t请重新输入数据进行修改\n");ﻩﻩprintf("课程编号\\课程名称\\课程性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\课程已选人数\\课程上限\n");ﻩscanf(”%d%s %s %d %d %d%d%d %d%d%d",&p1—〉num1,p1->name1,p1->type,&p1—〉hour,&p1—〉teach,&p1—>exp,&p1—>credit,&p1->semester,&p1—>nelepeo,&p1—>Melepeo);ﻩprintf(”\t\t\t已修改该课程\n”);}else printf("\t\t\t无该编号的课程!\n”);end:;}voiddelc(int num1)//课程管理子函数(删除课程){struct couse*p1,*p2;if(head1==NULL){printf("\n\t\t\t没有课程,无法删除!\n”);goto end;}p1=head1;while(num1!=p1-〉num1 && p1->next!=NULL){p2=p1;p1=p1—>next;}if(num1==p1-〉num1){if(p1==head1) head1=p1—〉next;else p2->next=p1—〉next;printf(”已删除该编号课程!\n”);N1=N1—1;}else printf(”无该编号的课程!\n”);end:;}void managementc()//课程管理主函数{int i,num1,num2=1;printf(”\t\t\t*****************************\n");printf(”\n\t\t\t\t欢迎使用此系统!\n”);printf(”\t\t\t*****************************\n");printf("\t\t\t课程管理\n”);ﻩprintf(”\t\t\t1。