学生信息管理系统C程序
c语言学生管理系统代码

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、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。
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语言程序设计学生学籍管理系统实验数据存储及数据流向在学生学籍管理系统中,数据存储和数据流向是非常重要的。
系统需要存储学生的个人信息、课程成绩和学籍变动等数据,并根据这些数据做出相应的处理。
这篇文章将带你了解学生学籍管理系统中的数据存储和数据流向。
数据存储学生学籍管理系统中需要存储的数据包括学生的个人信息、课程成绩和学籍变动等数据。
这些数据可以存储在不同的位置,如磁盘、数据库等。
磁盘存储:磁盘存储是最常见的数据存储方式,数据以文件的形式存放在硬盘上。
学生学籍管理系统中的数据可以存储在一个或多个文件中,每个文件存储一个类型的数据。
例如,学生的个人信息可以存储在一个“学生信息.txt”文件中,课程成绩可以存储在一个“课程成绩.txt”文件中。
数据库存储:数据库是一种结构化的数据存储方式,可以有效地管理大量数据。
学生学籍管理系统中,可以使用关系型数据库存储学生信息、教师信息、课程信息、成绩信息等数据,方便管理和检索。
通过SQL语句可以对数据库中的数据进行增删改查等操作,实现数据的高效管理。
数据流向学生学籍管理系统中的数据流向主要包括数据采集、数据处理、数据展示等过程。
这些流程需要将数据从一个位置传输到另一个位置,以实现正确的处理和展示。
数据采集:数据采集是指将学生或其他相关信息采集到系统中的过程。
例如,学生信息可以通过录入学生信息表单实现,成绩信息可以通过录入成绩表单实现等。
数据采集需要保证数据的准确性和完整性,以保证数据的正确性。
数据处理:数据处理是指对采集到的数据进行各种处理操作的过程。
例如,对学生信息进行排序、筛选、查询等操作,对成绩信息进行计算平均分、制作成绩报表等操作。
数据处理需要对数据进行严格的逻辑检验,以保证数据的正确性。
数据展示:数据展示是指将处理后的数据以易于理解的形式展示给用户的过程。
例如,把学生信息、成绩信息等数据以列表或表格形式展示给用户,使用户能够清晰了解学生的学籍状况。
学生信息管理系统C语言源代码

#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#define len sizeof(struct student)FILE *fp;struct student{long num;char name[15];int age;char sex[3];char chushen[10];char dizhi[20];char phone[11];char email[20];struct student *next;};void menu(){printf("===========学生信息管理系统==========\n\n");printf(" 1、录入学生信息\n");printf(" 2、浏览学生信息\n");printf(" 3、查询学生信息\n");printf(" 4、删除学生信息\n");printf(" 5、插入学生信息\n");printf(" 6、修改学生信息\n");printf(" 7、排序学生信息\n");printf(" 8、退出管理系统\n");printf("=====================================\n");}struct student *creat() //录入学生信息{int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *) malloc(len);scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chushen ,p1->dizhi,p1->phone,p1->email);head=NULL;while(p1->num!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p1->num,&p1->age,p1->name,p1->sex,p1->chu shen,p1->dizhi,p1->phone,p1->email);}p2->next=NULL;return(head);}void insert(struct student *head) //插入学生信息{int search_num;struct student *p,*q,*s;p=head;printf("在哪个学生前插入请输入学号:\n");scanf("%d",&search_num);while((p!=NULL)&&(p->num!=search_num)){q=p;p=p->next;}s=(struct student *)malloc(len);q->next=s;system("cls");printf("请输入学生信息:\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&s->num,&s->age,s->name,s->sex,s->chushen,s->diz hi,s->phone,s->email);s->next=p;}void printList(struct student *head) //浏览全部学生信息{struct student *p;p=head;if(head==NULL)printf("没有学生信息!!\n");else{do{fread(p,len,1,fp);printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->diz hi,p->phone,p->email);p=p->next;}while(p!=NULL);}}void findList_num(struct student *head,long search_num) //按学号查找{struct student *p;p=head;while((p!=NULL)&&(p->num!=search_num))p=p->next;if(p!=NULL)printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->diz hi,p->phone,p->email);elseprintf("没有该学生信息!!\n");}void findList_name(struct student *head,char *search_name) //按姓名查找{struct student *p;int cmp1=0,cmp=0;p=head;while(p!=NULL)if(strcmp(p->name,search_name)!=0){p=p->next;cmp++;}else{printf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->age,p->name,p->sex,p->chushen,p->dizhi,p->phone,p->email);p=p->next;cmp1=1;}if(cmp!=0&&cmp1==0)printf("没有该学生信息!!\n");}void xiugai(struct student *p1,long xiu_num) //修改学生信息{struct student *p2;p2=p1;while((p2!=NULL)&&(p2->num!=xiu_num))p2=p2->next;if(p2!=NULL){scanf("%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&p2->num,&p2->age,p2->name,p2->sex,p2->chu shen,p2->dizhi,p2->phone,p2->email);}elseprintf("没有该学生信息!!\n");}struct student *delList(struct student *head,long del_num) // 删除学生信息{struct student *p,*q;p=head;q=head;while(p &&(p->num != del_num)){q=p;p=p->next;}if(p==NULL)printf("无此学号!\n");else{if(p == head){head = p->next;free(p);}else{q->next = p->next;free(p);}}return head;}void paixu(struct student *head) //按学号排序{struct student *p,*f,*t;char ch[100];int i;t=f=p=head;for(p=head;p->next!=NULL;p=p->next){for(t=head,f=t->next;t->next!=NULL;t=t->next,f=f->next){if(t->num>f->num>0){i=t->num;t->num=f->num;f->num=i;i=t->age;t->age=f->age;f->age=i;strcpy(ch,t->name);strcpy(t->name,f->name);strcpy(f->name,ch);strcpy(ch,t->sex);strcpy(t->sex,f->sex);strcpy(f->sex,ch);strcpy(ch,t->chushen);strcpy(t->chushen,f->chushen);strcpy(f->chushen,ch);strcpy(ch,t->dizhi);strcpy(t->dizhi,f->dizhi);strcpy(f->dizhi,ch);strcpy(ch,t->phone);strcpy(t->phone,f->phone);strcpy(f->phone,ch);strcpy(ch,t->email);strcpy(t->email,f->email);strcpy(f->email,ch);}}}// return head;}void save(struct student *head) //保存为磁盘文件{struct student *p;if((fp=fopen("keshe","w"))==NULL){printf("cannot open this file\n");exit(0);}p=head;while(p!=NULL){fprintf(fp,"%d\n",p->num);fprintf(fp,"%d\n",p->age);fprintf(fp,"%s\n",p->name);fprintf(fp,"%s\n",p->sex);fprintf(fp,"%s\n",p->chushen);fprintf(fp,"%s\n",p->dizhi);fprintf(fp,"%s\n",p->phone);fprintf(fp,"%s\n",p->email);p=p->next;}fclose(fp);}struct student *read() //从磁盘读取文件{struct student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;// fp=fopen("keshe","r");if((fp=fopen("keshe","r"))==NULL){printf("cannot open this file\n");exit(0);}while(1){t=(struct student *)malloc(len);a=fscanf(fp,"%d\t%d\t%s\t%s\t%s\t%s\t%s\t%s",&t->num,&t->age,t->name,t->sex,t->chush en,t->dizhi,t->phone,t->email);if(a==0||a==-1)return head;t->next=NULL;if(p==NULL){p=t;head=t;}else{p->next=t;p=p->next;p->next=NULL;}}fclose(fp);}void main(){int code=0;struct student *pt = NULL;while(code!=8){menu();printf("请输入上述序号进行操作:\n");scanf("%d",&code);system("cls");switch(code){case 1:{system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================录入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=creat();save(pt);system("cls");printf("===========================录入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("************录入学生信息成功***********!!\n");printf("按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 2:{system("cls");printf("===========================学生信息表================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();printList(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 3:{int search=0;system("cls");printf("===========================查询学生信息==============================\n");printf("---------------------------------------------------------------------\n");while(search!=3){printf("1、按学号查询\n2、按姓名查询\n3、退出查询\n");scanf("%d",&search);switch(search){case 1:{long search_num;system("cls");printf("请输入学生学号\n");scanf("%d",&search_num);system("cls");printf("===========================查询结果==================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_num(read(),search_num);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};break;case 2:{char search_name[15];system("cls");printf("请输入学生姓名\n");scanf("%s",search_name);system("cls");printf("===========================查询结果==================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_name(read(),search_name);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};}}system("cls");};break;case 4:{long del_num;system("cls");printf("===========================删除学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("请输入要删除学生信息的学号:\n");scanf("%d",&del_num);system("cls");pt=delList(read(),del_num);save(pt);printf("===========================删除结果================================\n");printf("-------------------------------------------------------------------\n");printf("学号为%d的学生信息成功删除\n",del_num);printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 5:{system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================插入学生信息==============================\n");printf("---------------------------------------------------------------------\n");insert(pt);save(pt);system("cls");printf("===========================插入学生信息==============================\n");printf("---------------------------------------------------------------------\n");printf("****插入学生信息成功***!!\n\n");printf("按回车键返回主菜单\n");getchar();getchar();system("cls");}break;case 6:{long search_num;system("cls");printf("请输入要修改的学生学号:\n");scanf("%d",&search_num);system("cls");printf("每个学生的信息之间用Tab键分隔\n");printf("===========================修改学生信息==================================\n");printf("-------------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");findList_num(read(),search_num);printf("\n");printf("请输入修改信息:\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();xiugai(pt,search_num);save(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("****修改学生信息成功***!!\n\n");printf("\n按回车键返回查询菜单\n");getchar();getchar();system("cls");};break;case 7:{system("cls");printf(" 按学号从小到大排序\n\n");printf("===========================学生信息表================================\n");printf("---------------------------------------------------------------------\n");printf("学号\t年龄\t姓名\t性别\t出生\t地址\t电话\te-mail\n");pt=read();paixu(pt);printList(pt);save(pt);printf("================================================================ =====\n");printf("---------------------------------------------------------------------\n");printf("\n按回车键返回主菜单\n");getchar();getchar();system("cls");};break;case 8:read();break;}}}。
学生管理系统c语言简单版

学生管理系统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语言编写的一个学生信息管理系统

用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作。
在主函数里能实现以下功能。
运行后出现一个选择提示。
可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"jiemian();struct student{char name[50];char sex[5];int age;char num[50];float score1;float score2;float score3;float sum;float ave;}stu[50],del;void gn1(){int i=0;char num1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n'){system("cls");jiemian();}}}void gn2(){int i;char num[50];printf("请输入要查找的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(stu[i].num,num)==0){stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);break;}if(i==50)printf("查找不到!请重新输入!\n");getch();system("cls");jiemian();}void gn3(){char num1,i=0;printf("请输入要修改的学生学号:\n");scanf("%s",stu[i].num);printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续修改:y/n?\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N' || num1=='n')system("cls");jiemian();}void gn4(){int i;char num[50];printf("请输入要删除的学生学号:\n");scanf("%s",num);for(i=0;i<50;i++)if(strcmp(num,stu[i].num)==0){printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);stu[i]=del;printf("信息已删除,按任意键返回..\n");break;}if(i==50)printf("您输入的信息不存在!\n");getch();system("cls");jiemian();}void gn5(){int i=0;stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;stu[i].ave=stu[i].sum/3;printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t总成绩\t 平均成绩\n"); for(i=0;i<50;i++){if(stu[i].age==0)break;printf("%s\t%s\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f:\n",stu[i].num,stu[i].name,stu[i].sex,stu[i] .age,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum,stu[i].ave);}printf("按任意键返回...");getch();system("cls");jiemian();}void gn6(){FILE *fp;int i;char filename[50];printf("\n");printf("\n");printf("请输入要保存的文件名:");scanf("%s",filename);if((fp=fopen(filename,"wb"))==NULL)printf("文件名为空,不能保存!\n");for(i=0;i<50;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件保存失败!\n");}fclose(fp);printf("文件已保存!\n");printf("按任意键返回...\n");getch();system("cls");jiemian();}void gn7(){FILE *fp;int i=0; //打开文件流char filename[50];printf("请输入文件名:");scanf("%s",filename); //输入要载入的文件名if((fp=fopen(filename,"rb"))==0) //如果当前目录下不存在相对应的文件,输出文件不存在,退出系统。
c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。
通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考) #include"stdio.h"#include”stdlib。
h"#include"string。
h”typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!”);return 0;}else{p—>next=NULL;p-〉date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”=〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("=〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL) n=1;}}}p—〉date。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>//getch();kibhit()的头文件struct student{int id;char name[20];char password[11];char classs[6];struct like{float physics;//物理float biology;//生物float chemistry;//化学}grade;int age;int ranking;};typedef struct student ST;//为已有的数据类型命名struct administrator{char name[20];char password[11];}ad={"lichao","12343456"};void Chushihua();//系统初始化函数void Stucpw(int i);//学生改密函数void Ssave(ST stu[30],int r);//系统保存函数void Stuadd();//添加学生函数int Save_enquiry();//修改确定询问函数void Studelete();//删除学生函数void Stualter();//修改学生函数void Sturefer();//学生查询函数void Sturank(ST stu0[30],int i);//终极排名函数void Stuclassesrank();//学生班级挑选函数void Stuallout();//少女通灵之术char* Passwordinputhide();int main(){int flag0=0;//选择登陆方式的标志int flag1;//密码错误次数标志int flag3;//选择操作方式的标志char ad_name[20];//输入的管理员名字char ad_password[11];//输入的管理员密码char stu_name[20];//输入的学生名字char stu_password[11];//输入的学生密码Chushihua();//判断系统是否需要初始化FILE *fp1,*fp2;ST stu[30];int i;//for控制变量int j;//临时控制变量int r;//学生人数/*printf("学生人数为%d。
\n",r);printf("学号:%d\n姓名:%s\n密码:%s\n班级:%s\n年龄:%d\n排名:%d\n",stu[2].id,stu[2].name,stu[2].password,stu[2].classs,stu[2].age,stu[2].ranking);*/ while(flag0!=3){//读取本地信息fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(i=0;i<r;i++){fread(&stu[i],sizeof(ST),1,fp1);}fclose(fp1);//系统开始system("cls");printf("/* *******************学生信息管理系统****************** */\n");printf("欢迎登陆学生管理系统!");printf("请选择管理员登陆/学生登陆/退出系统(1/2/3):");scanf("%d",&flag0);flag1=3;//定义密码出错上限switch(flag0){case 1:while(flag1>0){fflush(stdin);printf("请输入管理员账户名:");gets(ad_name);printf("请输入管理员密码:");strcpy(ad_password,Passwordinputhide());if((!strcmp(ad_name,))&&(!(strcmp(ad_password,ad.password)))){printf("登陆成功!亲爱的管理员李超,欢迎回来!\n");system("cls");break;}else{flag1--;printf("管理员账户名或密码错误!您还有%d次机会",flag1);}}if(flag1==0){flag0=3;//让出现三次密码错误的家伙退出}else{flag3=1;while(flag3){system("cls");//清屏函数printf("请输入您想进行的操作:\n1,添加新学生信息;\n2,删除学生信息;\n3,修改学生信息;\n4,查询学生信息;\n5,为学生排序;\n6,退出登陆;\n7,少女召集之术。
\n");fflush(stdin);scanf("%d",&i);switch(i){case 1:Stuadd();system("pause");//系统暂停函数break;case 2:Studelete();system("pause");//系统暂停函数break;case 3:Stualter();system("pause");//系统暂停函数break;case 4:Sturefer();system("pause");//系统暂停函数break;case 5:Stuclassesrank();system("pause");//系统暂停函数break;case 6:flag3=0;system("pause");//系统暂停函数break;case 7:system("cls");printf("忍法,多重少女通灵之术!");Stuallout();system("pause");//系统暂停函数break;default:printf("输入有误!");system("pause");//系统暂停函数}}}break;case 2:while(flag1>0){fflush(stdin);printf("请输入学生姓名:");gets(stu_name);for(i=0;i<r;i++){if(!strcmp(stu[i].name,stu_name)){printf("你好,%s同学!请输入密码:",stu[i].name);break;}}/*fflush(stdin);gets(stu_password);*/strcpy(stu_password,Passwordinputhide());if(!strcmp(stu[i].password,stu_password)){printf("滴……滴……学生卡,登陆成功!");system("cls");break;}else{flag1--;printf("学生姓名或学生密码有误!你还有%d次机会\n",flag1);}}if(flag1==0){flag0=3;//让出现三次密码错误的家伙退出}else{system("cls");//清屏函数printf("亲爱的%s!大人\n",stu[i].name);printf("学生信息\nID:%d\n姓名:%s\n班级:%s\n年龄:%d\n学生成绩:\n物理:%.1f分\n生物:%.1f分\n化学:%.1f\n排名:%d\n",stu[i].id,stu[i].name,stu[i].classs,stu[i].age,stu[i].grade.physics,stu[i].grade.biology,stu [i].grade.chemistry,stu[i].ranking);while(1){printf("请选择你想进行的操作:\n1,修改登陆密码;\n2,给管理员留言;\n3,退出登陆\n");scanf("%d",&j);switch(j){case 1:Stucpw(i);system("pause");//系统暂停函数break;case 2:printf("该功能已经被管理员禁用!\n");system("pause");//系统暂停函数break;case 3:flag0=3;system("pause");//系统暂停函数break;default:printf("输入有误!请重现选择!\n");system("pause");//系统暂停函数}if(flag0=3){system("pause");//系统暂停函数break;}}}break;case 3:printf("成功退出!");break;default:printf("输入有误!");system("pause");//系统暂停函数}}printf("感谢您的使用!老司机再见!\n");system("pause");return 0;}void Chushihua(){FILE *fp1,*fp2;int i;STstu[5]={{1,"Yaya","1234","16-01",{70,70,70},24,5},{2,"Nico","1234","16-01",{75,75,75},24,4},{3," Miku","1234","16-01",{80,80,80},24,3},{4,"Kurumi","1234","16-01",{85,85,85},24,2},{5,"Ayame"," 1234","16-01",{100,100,100},24,1}};fp1=fopen("D:\\学生信息.txt","r");fp2=fopen("D:\\学生数目.txt","r");if((fp1==NULL)||(fp2==NULL)){printf("本地没有记录,系统开始初始化……");fp1=fopen("D:\\学生信息.txt","w+");for(i=0;i<5;i++){fwrite(&stu[i],sizeof(ST),1,fp1);}fclose(fp1);fp2=fopen("D:\\学生数目.txt","w+");fprintf(fp2,"%d",5);fclose(fp2);}}void Stucpw(int i){char str[11],str1[11],str2[11];//从文件读取数据int r;//人数int m;//控制变量ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//开始修改密码printf("请输入旧密码:");fflush(stdin);gets(str);if(!strcmp(stu[i].password,str)){printf("请输入新密码:");fflush(stdin);gets(str1);printf("请再次输入新密码:");fflush(stdin);gets(str2);if(!strcmp(str1,str2)){strcpy(stu[i].password,str1);printf("新密码为%s!",stu[i].password);Ssave(stu,r);printf("密码修改成功!请重新登录~");}else{printf("新密码两次输入不一致,修改失败!\n");}}else{printf("旧密码不正确!");}}void Ssave(ST stu[30],int r){int i;FILE *fp1,*fp2;printf("正在将修改写入文件……");fp1=fopen("D:\\学生信息.txt","w+");for(i=0;i<r;i++){fwrite(&stu[i],sizeof(ST),1,fp1);}fclose(fp1);fp2=fopen("D:\\学生数目.txt","w+");fprintf(fp2,"%d",r);fclose(fp2);}void Stuadd(){//从文件读取数据int r;//人数int m;//控制变量printf("正在调用学生信息添加功能……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//开始添加新学生信息printf("准备完毕,let's go!\n");printf("新学生的id自动生成为%d\n",r);stu[r].id=r;printf("请输入新学生的姓名;");fflush(stdin);gets(stu[r].name);printf("新学生的密码自动初始化为1234!\n");strcpy(stu[r].password,"1234");printf("请输入新学生的班级(xx-xx):");fflush(stdin);gets(stu[r].classs);printf("请输入新学生的成绩:(物理/生物/化学)\n");scanf("%f/%f/%f",&stu[r].grade.physics,&stu[r].grade.biology,&stu[r].grade.chemistry);printf("请输入学生的年龄:");scanf("%d",&stu[r].age);stu[r].ranking=0;printf("新学生信息\nID:%d\n姓名:%s\n班级:%s\n年龄:%d\n学生成绩:\n物理:%.1f 分\n生物:%.1f分\n化学:%.1f\n排名:%d\n",stu[r].id,stu[r].name,stu[r].classs,stu[r].age,stu[r].grade.physics,stu[r].grade.biology,st u[r].grade.chemistry,stu[r].ranking);if(Save_enquiry()){r++;Ssave(stu,r);printf("新学生添加完毕!");}else{printf("新学生添加失败!");}}int Save_enquiry(){char c1,c2;printf("您即将对系统信息进行修改,是否继续?(y/n)");fflush(stdin);c1=getchar();printf("您即将对系统信息进行修改,请再次确定是否继续?(y/n)");fflush(stdin);c2=getchar();if((c1=='y')&&(c2=='y')){printf("系统开始修改,请稍候片刻……");return 1;}else{printf("信息修改取消……");return 0;}}void Studelete(){int flag=0;//是否找到目标标志char str[20];int i;//从文件读取数据int r;//人数int m;//控制变量printf("正在调用学生信息删除功能……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//删除程序printf("请输入你想删除的学生姓名:");fflush(stdin);gets(str);for(i=0;i<r;i++){if(!strcmp(stu[i].name,str)){flag=1;break;}}if(flag){for(m=i;m<r-1;m++){stu[m].id=m;strcpy(stu[m].name,stu[m+1].name);strcpy(stu[m].password,stu[m+1].password);strcpy(stu[m].classs,stu[m+1].classs);stu[m].grade.physics=stu[m+1].grade.physics;stu[m].grade.biology=stu[m+1].grade.biology;stu[m].grade.chemistry=stu[m].grade.chemistry;stu[m].age=stu[m].age=stu[m+1].age;}if(Save_enquiry()){r--;Ssave(stu,r);printf("学生%s信息删除完毕!",str);}{printf("删除失败!");}}else{printf("未找到该学生信息!");}}void Stualter(){int n;//选择标志int flag=0;//是否找到目标标志int flag1=0;//是否输入错误标志char str[20];//被修改学生的姓名char str1[20];//新姓名char str2[11];//新密码char str3[6];//新班级//从文件读取数据int r;//人数int m;//控制变量printf("正在调用学生信息删除功能……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//修改程序printf("请输入你想修改的学生姓名:");fflush(stdin);gets(str);for(m=0;m<r;m++){if(!strcmp(stu[m].name,str)){flag=1;break;}if(flag){printf("请输入你想修改哪种信息:\n1,姓名\n2,密码\n3,班级\n4,年龄\n学生成绩:\n5,物理\n6,生物\n7,化学");scanf("%d",&n);switch(n){case 1:printf("请输入新的姓名:");fflush(stdin);gets(str1);strcpy(stu[m].name,str1);flag1++;break;case 2:printf("请输入新的密码:");fflush(stdin);gets(str2);strcpy(stu[m].password,str2);flag1++;break;case 3:printf("请输入新的班级(xx-xx):");fflush(stdin);gets(str3);strcpy(stu[m].classs,str3);flag1++;break;case 4:printf("请输入新的年龄:");scanf("%d",&stu[m].age);flag1++;break;case 5:printf("请输入新的物理成绩:");scanf("%f",&stu[m].grade.physics);flag1++;break;case 6:printf("请输入新的生物成绩:");scanf("%f",&stu[m].grade.biology);flag1++;break;case 7:printf("请输入新的化学成绩:");scanf("%f",&stu[m].grade.chemistry);flag1++;break;default:printf("输入有误!默认您放弃此次更改……");}if(flag1){if(Save_enquiry()){Ssave(stu,r);}}}else{printf("未找到该学生信息!");}}void Sturefer(){char str[20];int flag=0;//从文件读取数据int r;//人数int m;//控制变量printf("正在调用学生信息查询功能……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//查询程序printf("请输入你想修改的学生姓名:");fflush(stdin);gets(str);for(m=0;m<r;m++){if(!strcmp(stu[m].name,str)){flag=1;break;}}if(flag){printf("学生信息\nID:%d\n姓名:%s\n班级:%s\n年龄:%d\n学生成绩:\n物理:%.1f分\n生物:%.1f分\n化学:%.1f\n排名:%d\n",stu[m].id,stu[m].name,stu[m].classs,stu[m].age,stu[m].grade.physics,stu[m].grade.bi ology,stu[m].grade.chemistry,stu[m].ranking);}else{printf("未找到该学生信息!");}}void Sturank(ST stu0[30],int i){printf("\n开始排名……");float temp;//中间变量int m;int p,q;//冒泡控制变量float gradesum[30];for(m=0;m<i;m++){/*printf("%.1f",stu0[m].grade.physics);*/gradesum[m]=stu0[m].grade.physics+stu0[m].grade.biology+stu0[m].grade.chemistry;/*printf("%.1f",gradesum[m]);*/}//冒泡排序for(p=0;p<i-1;p++)//总共需要冒i-1次泡{for(q=0;q<i-1-p;q++)//第p次冒泡需要比较q次{if(gradesum[q]<gradesum[q+1])//将较小值后移{temp=gradesum[q+1];gradesum[q+1]=gradesum[q];gradesum[q]=temp;}}}for(m=0;m<i;m++){printf("%.1f\t",gradesum[m]);}//根据数组顺序修改排名值printf("\n少女们开始报数!");for(m=0;m<i;m++)//依次重现数组数据{q=gradesum[m];printf("%.1f\t",q);for(p=0;p<i;p++)//重复结构体的每个数据{temp=stu0[p].grade.physics+stu0[p].grade.biology+stu0[p].grade.chemistry;printf("%.1f\t",temp);if(temp==q)//挑出数组与结构体对应的值{stu0[p].ranking=m+1;//得出排名printf("%s\t",stu0[p].name);}}}printf("\n成功ranking……");//从文件读取数据int r;//人数printf("正在调用学生信息查询功能……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//部分结构体与总结构体进行比较for(p=0;p<i;p++){for(q=0;q<r;q++){if(!strcmp(stu0[p].name,stu[q].name))//找出同名人{stu[q].ranking=stu0[p].ranking;//修改成正确的排名}}}system("cls");printf("新的排名为:\n");for(m=0;m<i;m++){printf("ID:%d\t姓名:%s\t理综分数:%.1f\t排名:%d\n",stu0[m].id,stu0[m].name,(stu0[m].grade.physics+stu0[m].grade.biology+stu0[m].grad e.chemistry),stu0[m].ranking);}Ssave(stu,r);//保存数据printf("排名完成!\n");}void Stuclassesrank(){//从文件读取信息int m;int r;//人数printf("正在准备……");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);//开始分班ST stu1[30];//16-01班ST stu2[30];//16-02班ST stu3[30];//16-03班ST stu4[30];//16-04班int p,q=0;for(p=0;p<r;p++){if(!strcmp(stu[p].classs,"16-01")){stu1[q].id=q+1;strcpy(stu1[q].name,stu[p].name);strcpy(stu1[q].password,stu[p].password);strcpy(stu1[q].classs,stu[p].classs);stu1[q].grade.physics=stu[p].grade.physics;stu1[q].grade.biology=stu[p].grade.biology;stu1[q].grade.chemistry=stu[p].grade.chemistry;stu1[q].age=stu[m].age=stu[p].age;printf("%.1f\t",stu1[q].grade.physics);++q;}}Sturank(stu1,q);}void Stuallout(){int i;//从文件读取数据int r;//人数int m;//控制变量printf("正在积攒查克拉……\n");ST stu[30];FILE *fp1,*fp2;fp2=fopen("D:\\学生数目.txt","r");fscanf(fp2,"%d",&r);fclose(fp2);fp1=fopen("D:\\学生信息.txt","r");for(m=0;m<r;m++){fread(&stu[m],sizeof(ST),1,fp1);}fclose(fp1);printf("咻咻咻……\n");for(i=0;i<r;i++){printf("ID:%d\t姓名:%s\t班级:%s\t年龄:%d\n学生成绩:物理:%.1f分\t生物:%.1f分\t化学:%.1f\t排名:%d\n",stu[i].id,stu[i].name,stu[i].classs,stu[i].age,stu[i].grade.physics,stu[i].grade.biology,stu [i].grade.chemistry,stu[i].ranking);}}char* Passwordinputhide(){char str[11];int i;char ch;for(i=0;i<10;i++){fflush(stdin);ch=getch();if(ch==13)//输入是回车符时就结束{break;}else if(ch==8){printf("\b \b");i-=2;}else{putchar('*');str[i]=ch;}}str[i]='\0';return str;}。