C语言程序设计——教室管理系统(源代码))

合集下载

c语言学籍管理系统源代码

c语言学籍管理系统源代码

c语言学籍管理系统源代码学籍管理系统的背景及意义随着社会的不断发展和教育的普及,学籍管理工作日益被重视。

传统的手工管理学籍的方式效率低下,存在着各种弊端,以致无法满足现代学校管理的需求。

因此,开发一款高效、便捷、可靠的学籍管理系统成为普遍需求,为了提高管理效率、减少工作难度,学籍管理系统被越来越广泛地使用。

本文将介绍一款基于C语言开发的学籍管理系统的源代码。

基本功能该学籍管理系统可以实现学生信息的录入、删除、修改和查询,以及学生的成绩录入、修改和查询。

此外,该系统还具备数据存储和文件读写的功能,能够自动保存学生信息和成绩数据,保障数据的安全性和可靠性。

模块设计该系统按照功能模块划分,主要分为三个模块:学生信息管理模块、学生成绩管理模块和数据存储与文件读写模块。

学生信息管理模块该模块主要实现学生信息的录入、删除、修改和查询等基本功能。

以下为该模块的主要源代码:```struct student {char name[20]; // 姓名int id; // 学号char sex[5]; // 性别char major[20]; // 专业};struct student stu[1000]; // 学生信息结构体数组int num_of_stu = 0; // 学生总数void add_student() { // 添加学生信息printf("请输入学生姓名:");scanf("%s", stu[num_of_stu].name);printf("请输入学生学号:");scanf("%d", &stu[num_of_stu].id);printf("请输入学生性别:");scanf("%s", stu[num_of_stu].sex);printf("请输入学生专业:");scanf("%s", stu[num_of_stu].major);num_of_stu++;printf("添加成功!\n");}void delete_student() { // 删除学生信息int delete_id;printf("请输入要删除的学生学号:");scanf("%d", &delete_id);int index = search_student_by_id(delete_id); if (index == -1) {printf("该学号不存在!\n");return;}for (int i = index; i < num_of_stu - 1; i++) { stu[i] = stu[i + 1];}num_of_stu--;printf("删除成功!\n");}void modify_student() { // 修改学生信息int modify_id;printf("请输入要修改的学生学号:");scanf("%d", &modify_id);int index = search_student_by_id(modify_id); if (index == -1) {printf("该学号不存在!\n");return;}printf("请输入学生姓名:");scanf("%s", stu[index].name);printf("请输入学生学号:");scanf("%d", &stu[index].id);printf("请输入学生性别:");scanf("%s", stu[index].sex);printf("请输入学生专业:");scanf("%s", stu[index].major);printf("修改成功!\n");}int search_student_by_id(int id) { // 根据学号查询学生信息for (int i = 0; i < num_of_stu; i++) {if (stu[i].id == id) {return i;}}return -1;}void query_student() { // 查询学生信息int query_id;printf("请输入要查询的学生学号:");scanf("%d", &query_id);int index = search_student_by_id(query_id);if (index == -1) {printf("该学号不存在!\n");return;}printf("姓名\t学号\t性别\t专业\n");printf("%s\t%d\t%s\t%s\n", stu[index].name,stu[index].id, stu[index].sex, stu[index].major);}```学生成绩管理模块该模块主要实现学生成绩信息的录入、修改和查询等功能。

课程信息管理系统(C语言)

课程信息管理系统(C语言)

课程信息管理系统源代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct Class{int Number;int ClassNumber;char Name[10];float TeachTime;float PracticeTime;float Credit;char Semester[10];char TextWay[10];} Class[10],CL;/**********输入模块***********/void save()//定义函数save,向文件输出课程信息{FILE *fp;int i;if ((fopen("Class.txt", "r")) == NULL)//打开输出文件Class fp = fopen("Class.txt", "w+");elsefp = fopen("Class.txt", "r+");for (i = 0; i<10; i++){fprintf(fp, "%d", Class[i].Number);fputc('\n', fp);fprintf(fp, "%d", Class[i].ClassNumber);fputc('\n', fp);fprintf(fp, "%s", Class[i].Name);fputc('\n', fp);fprintf(fp, "%f",Class[i].TeachTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].PracticeTime);fputc('\n', fp);fprintf(fp, "%f", Class[i].Credit);fputc('\n', fp);fprintf(fp, "%s", Class[i].Semester);fputc('\n', fp);fprintf(fp, "%s", Class[i].TextWay);fputc('\n', fp);}fclose(fp);}void Input(){int i = 0;char c;for (int t = 1; t;i++){printf("请输入要输入的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);printf("是否继续输入Y/N\n");fflush(stdin);scanf("%c",&c);switch (c){case 'Y':break;case 'N':t = 0;break;default:printf("输入错误\n");}}save();}/*******修改模块*******/void Modification()int n,i;printf("请输入您要修改的课程的记录编号:");scanf("%d", &n);for ( i = 0; i < 10; i++){if (Class[i].Number == n)break;}FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("请输入要修改的课程的相关信息:\n");printf("请输入课程编号:");scanf("%d", &CL.ClassNumber);Class[i].Number=CL.ClassNumber;printf("请输入课程名:");scanf("%s", );strcpy(Class[i].Name,);printf("请输入讲课学时:");scanf("%f", &CL.TeachTime);Class[i].TeachTime=CL.TeachTime;printf("请输入实践学时:");scanf("%f", &CL.PracticeTime);Class[i].PracticeTime=CL.PracticeTime;CL.Credit = (CL.TeachTime+ CL.PracticeTime) / 16;Class[i].Credit=CL.Credit ;printf("请输入开课学期:");scanf("%s", CL.Semester);strcpy(Class[i].Semester,CL.Semester);printf("请输入考核方式:");scanf("%s", CL.TextWay);strcpy(Class[i].TextWay,CL.TextWay);save();fclose(fp);}/***********统计模块***********/void Statistics()int i,n1=0,n2=0;float m1=0,m2=0;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (strcmp(Class[i].Semester,"春季")==0){n1++;m1= m1 + Class[i].Credit;}else if (strcmp(Class[i].Semester,"秋季")==0){n2++;m2 = m2 + Class[i].Credit;}}printf("春季学期总课程数为%d\n", n1);printf("春季学期总学分数为%f\n", m1);printf("秋季学期总课程数为%d\n", n2);printf("秋季学期总学分数为%f\n", m2);}/**********查询模块**************/void Query(){int i, k,a;float b;char m[10];FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i= 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);printf("查询模块:");printf("\n");printf("***********************************************\n");printf("* *\n");printf("* 1:课程编号2:课程学分*\n");printf("* *\n");printf("* 3:开课学期*\n");printf("* *\n");printf("***********************************************\n");printf("\n\n请输入查询选项:");scanf("%d", &k);for (; k<1 || k>4;){printf("请输入1到4之间的整数:");scanf("%d", &k);}if (k==1){printf("请输入要查询的课程编号:");scanf("%d", &a);for ( i = 0; i < 10; i++){if (Class[i].ClassNumber == a)break;}printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}else if (k==2){printf("请输入要查询的课程的学分:");scanf("%f", &b);for ( i = 0; i < 10; i++){if (Class[i].Credit == b){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}else{printf("请输入要查询的开课学期:");scanf("%s", m);for ( i = 0; i < 10; i++){if (strcmp(Class[i].Semester,m)==0){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}}}}/**********添加模块*************/void Add(){int i;FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (i=0; i<10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].Number == 0)break;}printf("请输入要添加的课程的相关信息:\n");printf("请输入记录编号:");scanf("%d", &Class[i].Number);printf("请输入课程编号:");scanf("%d", &Class[i].ClassNumber);printf("请输入课程名:");scanf("%s", Class[i].Name);printf("请输入讲课学时:");scanf("%f", &Class[i].TeachTime);printf("请输入实践学时:");scanf("%f", &Class[i].PracticeTime);Class[i].Credit = (Class[i].TeachTime + Class[i].PracticeTime) / 16;printf("请输入开课学期:");scanf("%s", Class[i].Semester);printf("请输入考核方式:");scanf("%s", Class[i].TextWay);save();}/********删除模块**********/void Delete(){int n,i;printf("请输入要删除的课程的课程编号:");scanf("%d", &n);FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for ( i = 0; i < 10; i++){fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);if (Class[i].ClassNumber == n)Class[i].Number = 0;Class[i].ClassNumber=0;Class[i].Credit = 0;strcpy(Class[i].Name, "0");Class[i].PracticeTime = 0;strcpy(Class[i].Semester, "0");Class[i].TeachTime=0;strcpy(Class[i].TextWay, "0");break;}}save();fclose(fp);}/*******显示模块**********/void Display(){FILE*fp;if ((fp = fopen("Class.txt", "r")) == NULL){printf("cannot open file\n");exit(0);}for (int i = 0; i<10; i++)fscanf(fp, "%d%d%s%f%f%f%s%s\n",&Class[i].Number,&Class[i].ClassNumber, Class[i].Name, &Class[i].TeachTime, &Class[i].PracticeTime, &Class[i].Credit, Class[i].Semester, Class[i].TextWay);for (i = 0; i < 10&&Class[i].Number!='\0'; i++){printf("记录编号:%d\n",Class[i].Number);printf("课程编号:%d\n",Class[i].ClassNumber);printf("课程名:%s\n",Class[i].Name);printf("讲课学时:%f\n",Class[i].TeachTime);printf("实践学时:%f\n",Class[i].PracticeTime);printf("学分:%f\n",Class[i].Credit);printf("开课学期:%s\n",Class[i].Semester);printf("考核方式:%s\n\n",Class[i].TextWay);}fclose(fp);}/**********退出模块*************/{exit(0);}/**********主函数*************/int main(){char c;while(1){int n;printf("*********************MENU********************\n");printf("* *\n");printf("* 1:课程信息输入2:课程信息修改*\n");printf("* *\n");printf("* 3:课程信息统计4:课程信息查询*\n");printf("* *\n");printf("* 5:课程添加6:课程信息删除*\n");printf("* *\n");printf("* 7:浏览8:退出*\n");printf("* *\n");printf("*********************************************\n");printf("\n\n请选择功能序号:");scanf("%d", &n);/*对选择的数字进行判断*/for (; n<1 || n>8;){printf("请输入1到8之间的整数:");scanf("%d", &n);}/*选择功能*/switch (n){case 1:Input(); Display(); break;case 2:Modification(); Display(); break;case 3:Statistics(); break;case 4:Query(); break;case 5:Add(); Display(); break;case 6:Delete(); Display(); break;case 7:Display();break;case 8:Quit();}printf("是否继续Y/N\n");fflush(stdin);scanf("%c",&c);if(c=='N')Quit();system("cls");}return 0;}。

c语言管理系统设计源代码

c语言管理系统设计源代码

c语言管理系统设计源代码以下是一个简单的C语言管理系统示例,用于管理学生信息。

该系统可以添加、删除、修改和查找学生信息。

c复制代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct student {char name[50];int roll;float marks;};struct student students[100];int count = 0;void add_student() {struct student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter roll number: ");scanf("%d", &new_student.roll);printf("Enter marks: ");scanf("%f", &new_student.marks);students[count] = new_student;count++;}void delete_student() {int index;printf("Enter index of student to delete: ");scanf("%d", &index);for (int i = index; i < count - 1; i++) {students[i] = students[i + 1];}count--;}void modify_student() {int index;struct student new_student;printf("Enter index of student to modify: "); scanf("%d", &index);printf("Enter new name: ");scanf("%s", new_);printf("Enter new roll number: ");scanf("%d", &new_student.roll);printf("Enter new marks: ");scanf("%f", &new_student.marks);students[index] = new_student;}void find_student() {char name[50];printf("Enter name of student to find: "); scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) { printf("Roll number: %d\n", students[i].roll); printf("Marks: %.2f\n", students[i].marks); return;}}printf("Student not found.\n");}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Delete student\n");printf("3. Modify student\n");printf("4. Find student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case1: add_student(); break;case2: delete_student(); break;case3: modify_student(); break;case4: find_student(); break;case5: exit(0); break; // exit the program here, otherwise the loop will keep running indefinitely, as it is in the do-while loop above. We are not returning, but rather exiting the program completely, so we do not need to return anything. The return value of main is always 0, and this is how the program exits. If you want to return a value other than 0, you can do so like this: return 1; or return -1; or return any other integer value you want to represent an error condition. The operating system will interpret this as the program's exit status. In this case, it will be seen as successful, as it is returning 0. The return value of main is not used for anything in this program, but it can be used in other programs to determine whether the program exited successfully or with an error. For example, if you were writing a shell script that executed this program and needed to know if it was successful or not, you could check the return value of the program and act accordingly. This is a common practice in programming, and it is important to understand how it works so that you can use it effectively in your own programs.。

C语言课程设计代码:多功能上课点名系统.c

C语言课程设计代码:多功能上课点名系统.c

void title(); //display the intruction
void menu(); //display the intruction
void borderup(); //display the intruction
p=stu[i].name; //name
c='\0';
while(c!='\t')
{
c=fgetc(fp);
if(c!='\t')
{
*p=c;
p++;
}
else
{
void function(Student *stu,int *a,int *b,int *c);
void pickn(Student *stu,int *a,int *b,int *c);
void pickc(Student *stu,int *a,int *b,int *c);
void pickhistory(Student *stu,int *b,int *c);
saverecord(a,b); //creat a new sturecord.data a,b=0
exit (0);
}
if(fread(a,sizeof(int),N,fp)!=N)
c[r]++;
printf(" %s\n",stu[r].name);
printf(" %s\n",stu[r].num);
printf("\n Enter 'y' or 'n' to record attendance:[ ]\b\b");

C语言学籍管理系统(内含源代码)

C语言学籍管理系统(内含源代码)

学籍管理系统一、系统简介设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作二、需求分析学籍管理系统应该实现以下功能:1、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。

2、能根据输入的学号查询学生,进行信息的修改。

3、能根据输入的学号从结构体数组中删除学生的记录。

4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。

5、能在屏幕上以列表的方式输出所有学生的信息。

三、概要设计1、系统功能根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。

系统功能机构图如下:2、重要数据的数据结构设计学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday 分另U代表学生的学号、专业、年级、性另U和出生日期,其中birthday 类型为自定义的结构体类型Date.Struct stumessage {Char stuno[11]: // 学号Char name[9]: // 姓名Char spec[2]: // 专业Char grade: // 年级Char sex : // 性别Stuct date birthday: // 出生日期};日期类型date包括三个属性,分别代表年、月、日Struct date{int year : // 年Int month: //Int day: // H};3、函数设计学籍管理系统程序采用了结构化程序设计的思想,由1个.h 头文件和3个C源文件组成。

程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。

以下是这些函数原型及功能设计。

(1) void sysinfo(void)函数功能:在屏幕上输入系统及信息并等待用户响应。

教务管理系统c语言课程设计

教务管理系统c语言课程设计

教务管理系统c语言课程设计一、教学目标本课程的教学目标是使学生掌握教务管理系统的基本原理和设计方法,能够运用C语言进行简单的教务管理系统开发。

具体分为以下三个部分:1.知识目标:使学生掌握C语言的基本语法、数据结构、算法和面向对象编程思想,了解教务管理系统的功能和结构。

2.技能目标:培养学生具备运用C语言进行程序设计的能力,能够独立完成简单的教务管理系统模块设计与实现。

3.情感态度价值观目标:培养学生对编程事业的热爱,提高学生解决实际问题的积极性,培养学生的团队协作精神和自主学习能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、表达式、语句、函数等。

2.数据结构:数组、链表、栈、队列、树、图等。

3.算法:排序算法、查找算法、常用算法分析等。

4.面向对象编程:类、对象、封装、继承、多态等。

5.教务管理系统设计:系统需求分析、系统架构设计、模块划分、功能实现等。

三、教学方法为了达到本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解知识点,使学生掌握基本概念和原理。

2.案例分析法:分析实际案例,使学生了解教务管理系统的应用场景和设计方法。

3.实验法:让学生动手编写代码,培养实际编程能力。

4.讨论法:分组讨论问题,培养学生的团队协作精神和解决问题的能力。

四、教学资源为了支持本课程的教学内容和教学方法,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。

2.参考书:《数据结构与算法分析》(C语言版)、《深度探索C++对象模型》等。

3.多媒体资料:教学PPT、视频教程、在线编程练习等。

4.实验设备:计算机、网络环境、编程调试工具等。

五、教学评估本课程的评估方式包括以下几个部分:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

2.作业:布置课后作业,评估学生的编程能力和对知识的理解程度。

课程信息管理系统c语言

课程信息管理系统c语言

课程信息管理系统c语言课程信息管理系统(C语言)一、引言课程信息管理系统是一种用来管理和组织课程信息的软件系统。

它能够对教学计划、课程表、学生选课等进行管理,帮助学校、教育机构或教师高效地管理课程信息。

本文将通过介绍课程信息管理系统的功能、特点和实施过程,详细阐述C语言在该系统中的应用。

二、功能介绍1. 学生管理:该系统能够记录学生的个人信息,如学号、姓名、班级等,并能进行学生选课管理,包括选课、退课等操作。

2. 课程管理:系统可以管理各门课程的信息,如课程编号、课程名称、学分等,并能进行课程安排,制定教学计划。

3. 教师管理:系统可以记录教师的基本信息,提供教师选课、授课安排等功能。

4. 成绩管理:系统能够记录学生的各科成绩,并提供成绩查询、统计等功能,方便学生和教师进行学业评估。

5. 课程评价:系统可以记录学生对课程的评价和反馈,帮助学校和教师改进教学质量。

三、特点和优势1. 数据集中管理:课程信息管理系统将学生、教师、课程等信息集中管理,方便快捷,减少重复工作。

2. 数据安全性高:系统采用数据库来存储和管理数据,确保数据的安全性和完整性。

3. 操作简便:系统界面友好,操作简单明了,即使对计算机操作不熟悉的教师和学生也能够轻松上手。

4. 信息共享:系统支持信息共享,学生、教师和管理者可以通过系统查询相关信息,提高工作效率。

5. 数据分析功能:系统能够对学生选课情况、成绩分布等进行统计和分析,为教学改革提供数据支持。

四、实施过程1. 需求分析:通过与学校、教师和学生的沟通,明确系统的需求和功能。

2. 系统设计:根据需求分析的结果,设计系统的数据库结构、界面和功能模块。

3. 编码实现:使用C语言编写相应的代码,实现系统的各个功能模块。

4. 测试调试:对系统进行功能测试和性能测试,确保系统的稳定性和可靠性。

5. 上线部署:将系统部署到服务器上,并进行相关的数据迁移和备份工作。

6. 培训和维护:对教师和学生进行系统培训,并进行后期的系统维护和更新。

C语言的教务管理系统(2000行代码)

C语言的教务管理系统(2000行代码)

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,这将是您的登录账号。

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

C语言程序设计——教室管理系统(源代码)
非常有用的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
char num[szSTR];/*教室编号*/
char site[szSTR];/*教室位置*/
char snum[szSTR];/*座位数*/
char tv[szSTR];/*有无多媒体*/
char use[szSTR];/*是否可用*/
};
typedef struct CONTACT CON;
#define ANUM 1
#define ASITE 2
#define ASNUM 3
#define ATV 4
#define AUSE 5
#define BFULL 0xFF
int OPER[6] = {BFULL, ANUM, ASITE, ASNUM, ATV,AUSE};
void input(CON * s, int mask)
{
if(mask & ANUM) { printf("请输入教室编号:"); scanf("%s", s->num); }
if(mask & ASITE) { printf("请输入教室位置:"); scanf("%s", s->site); }
if(mask & ASNUM) { printf("请输入座位数:"); scanf("%s", s->snum); }
if(mask & ATV){printf("请输入是否有多媒体(有/Y*无/N):");scanf("%s",s->tv);}
if(mask & AUSE) { printf("请输入是否可用(可/Y*否/N):"); scanf("%s", s->use); } }/*end input*/
void show (int id, CON * s)
{
if(!s) return ;
if(id)
printf("%d\t%s\t\t%s\t%s\t\t%s\t\t%s\n",
id, s->num , s->site , s->snum , s->tv,s->use );
else
printf("【编号】%s【教室编号】%s【位置】%s【座位数】%s【有无多媒体】%s【是否可用】%s\n",
s->num , s->site , s->snum , s->tv,s->use );
/*end if*/
}/*end show*/
void regist(void)
{
CON s; FILE * f = 0;
input(&s, BFULL);
f = fopen(fileDB, "ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("资料已保存!\n\n\n\n");
}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
if(!s) return 0;
f = fopen(fileDB, "rb");
if(!f) {
printf("数据库暂无记录\n\n\n\n");
return 0;
}/*end if*/
printf("编号\t教室编号\t位置\t座位数\t有无多媒体(Y/N)\t是否可用(Y/N)\n");
printf("----------------------------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&t, sizeof(t), 1, f);
if(r<1)break;
if(t.num[0]==0) continue;
if(key) {
a = strstr(t.num , key);
b = strstr(t.site , key);
if(a == 0 && b == 0) continue;
}/*end if*/
if(p) *p = q;
if(s) memcpy(s, &t, sizeof(t));
i++;
show(i, &t);
}/*end while*/
printf("----------------------------------------------------------------------\n\n\n\n\n");
return i;
}/*end browse*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("请输入教室编号或者位置:");
scanf("%s", key);
r = browse(key, &p, s);
return r?p:-1;
}/*end query*/
void clear(void)
{
FILE * f = 0; CON s;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
memset(&s, 0, sizeof(s));
fwrite(&s, sizeof(s),1, f);
fclose(f);
printf("记录已删除!\n\n\n\n\n");
}/*end clear*/
void modify(void)
{
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
for(;;) {
show(0, &s);
printf("请选择:1-编号;2-位置;3-座位数;4-有无多媒体;5-是否可用;6-保存并退出;7-放弃修改并退出\n\n\n\n");
scanf("%d", &cmd);
switch(cmd) {
case 1:
case 2:
case 3:
case 4:
input(&s, OPER[cmd]);
break;
case 6:
fsetpos(f, &p);
fwrite(&s, sizeof(s), 1, f);
case 7:
fclose(f);
return;
default:
printf("错误的操作,请重新输入。

\n\n\n\n\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
char cmd = 0; CON s;
for(;;) {
printf(" 欢迎使用教室信息管理系统!\n请选择:\n1-添加;\n2-查询;\n3-删除;\n4-修改;\n5-全部输出;\n0-退出\n\n\n\n");
scanf("%d", &cmd);
switch(cmd) {
case 0: return 0;
case 1: regist(); break;
case 2: query(&s); break;
case 3: clear(); break;
case 4: modify(); break;
case 5: browse(0, 0, &s); break;
}//end case
}
return 0;
}。

相关文档
最新文档