C语言学籍管理系统(内含源代码)..
- 格式:doc
- 大小:124.80 KB
- 文档页数:23
#include<stdio.h>#include<string.h>#include<stdlib.h>struct Date{ int year;//年int month;//月int day;//日};struct StuMessage{char stuNo[11];//学号char name[9];//姓名char spec[21];//专业int grade;//年级char sex;//性别struct Date birthday;//出生日期}stu[5];int load(){ FILE *fp;int i;if ((fp=fopen("results.txt","rb"))==NULL){printf("文件打开错误");return 0;}for (i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct StuMessage),1,fp);fclose(fp);return(i-1);}void save(int n){int i;FILE *fp;if ((fp=fopen("results.txt","wb"))==NULL){printf("文件打开错误:");}for (i=0;i<n;i++)fwrite(&stu[i],sizeof(struct StuMessage),1,fp);fclose(fp);}void SysInfo(void);void MenuOfMain(struct StuMessage stu[]);void Append(struct StuMessage stu[]);void Modify(struct StuMessage stu[]);void Delet(struct StuMessage stu[]);void MenuOfSear(struct StuMessage stu[]);void ListAll(struct StuMessage stu[]);void Quit(struct StuMessage stu[]);void SearNum(struct StuMessage stu[]);void SearGrade(struct StuMessage stu[]);int NumOfSear(struct StuMessage stu[],char stuNum[]); void PrintHead(void);void Listone(struct StuMessage list);int DelList(struct StuMessage stu[],int i);int i;char choose;int length;int main(){char choose;printf("~~~~~~~~~~~~welcome~~~~~~~~~~~~\n");printf(" 软件学院学籍管理系统\n");printf("^-^ ^-^\n");printf("^-^ ^-^\n");printf("请随便输入一个非0的数进入\n");printf("~~~~~~~~~~~~welcome~~~~~~~~~~~~\n");choose =getchar();MenuOfMain(stu);}void MenuOfMain(struct StuMessage stu[])//显示主菜单{while(choose!='0'){ system("cls");printf("欢迎进入学籍管理系统主页面\n");printf("1:录入学生信息模块\n");printf("2:修改学生信息模块\n");printf("3:删除学生信息模块\n");printf("4:查询学生信息模块\n");printf("5:输出学生信息\n");printf("6:清屏\n");printf("0:退出学籍管理系统\n");printf("\n");printf("请选择(0-5):\n");choose=getchar();switch(choose){case'1':Append(stu); break;case'2':Modify(stu); break;case'3': Delet(stu); break;case'4':MenuOfSear(stu); break;case'5': ListAll(stu);break;case'0': exit(0);default:printf("请在(0-5)内选择\n");}}}void Append(struct StuMessage stu[])//录入学生记录{char con;length=load();do{ system("cls");printf("\t\t\t\t 输入学号\n");printf("\t\t\t\t ");scanf("%s",&stu[i].stuNo);printf("\t\t\t\t 输入姓名\n");printf("\t\t\t\t ");scanf("%s",&stu[i].name);printf("\t\t\t\t 输入专业\n");printf("\t\t\t\t ");scanf("%s",&stu[i].spec);printf("\t\t\t\t 输入年级\n");printf("\t\t\t\t ");scanf("%d",&stu[i].grade);printf("\t\t\t\t 输入性别\n");printf("\t\t\t\t ");scanf("%s",&stu[i].sex);printf("输入出生年月日\n");printf("年:\n");scanf("%d",&stu[i].birthday.year);printf("月:\n");scanf("%d",&stu[i].birthday.month);printf("日:\n");scanf("%d",&stu[i].birthday.day);length++;printf("如果继续请输入'Y'\n");scanf("%c",&con);save(length);}while(con=='Y');}void Modify(struct StuMessage stu[])//通过输入学号查询学生记录,或重新修改{int i;char m[11];length=load();do{printf("请输入修改学生的学号:\n");scanf("%s",m);for (i=0;i<length;i++)if (!strcmp(stu[i].stuNo,m)){printf("请输入修改后的学生信息");printf("学号:");scanf("%s",stu[i].stuNo);printf("姓名:");scanf("%s",stu[i].name);printf("专业:");scanf("%s",stu[i].spec);printf("年级:");scanf("%d",&stu[i].grade);printf("性别:");scanf("%s",&stu[i].sex);printf("出生年月日\n");printf(" 年:");scanf("%d",&stu[i].birthday.year);printf(" 月:");scanf("%d",&stu[i].birthday.month);printf(" 日:");scanf("%d",&stu[i].birthday.day);printf("修改成功\n");save(length);} elseprintf("没有找到相关记录\n");printf("是否继续,继续请输入'Y',不继续请输入'N'\n");choose=getchar();choose=getchar();}while(choose=='Y');}void Delet(struct StuMessage stu[])//通过输入学号查询学生记录,并可选择删除{int i;char m[11];char con;length=load();printf("请输入要删除学生的学号");scanf("%s",m);for(i=0;i<=length;i++){if(strcmp(m,stu[i].stuNo)==0){printf("%s\t%s\t%s\t%d\t%c\t",stu[i].stuNo,stu[i].name,stu[i].spec,stu[i].grade,stu[i].sex);printf("%d %d %d\n",stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);break;}}if(i<length){printf("是否删除该学生信息?(Y/N)");scanf("%c",&con);if(con=='y'||con=='Y')//判断是否删除{DelList(stu,i);}printf("删除成功");}}void MenuOfSear(struct StuMessage stu[])//显示查询的主菜单{int flag = 0;char m[11];int i=0;length=load();printf("请输入学号:");scanf("%s",m);for(;i<length ;i++){ if(!strcmp(stu[i].stuNo,m)){PrintHead();printf("学号%s\t",stu[i].stuNo);printf("姓名%s\t",stu[i].name);printf("专业%s\t",stu[i].spec);printf("年级%d\t",stu[i].grade);printf("性别%c\t",stu[i].sex);printf("年%d\t",stu[i].birthday.year);printf("月%d\t",stu[i].birthday.month);printf("日%d\t",stu[i].birthday.day);printf("\n");flag = 1;}}if(flag == 0)printf("没有找到相关记录\n");}void ListAll(struct StuMessage stu[])//以列表的方式显示所有学生记录{do{void PrintHead(void);PrintHead();i=0;length=load();for (;i<length;i++){printf("学号%s\t",stu[i].stuNo);printf("姓名%s\t",stu[i].name);printf("专业%s\t",stu[i].spec);printf("年级%d\t",stu[i].grade);printf("性别%c\t",stu[i].sex);printf("年%d\t",stu[i].birthday.year);printf("月%d\t",stu[i].birthday.month);printf("日%d\t",stu[i].birthday.day);printf("\n");}if(i>=length)printf("选择非'0'返回主菜单\n");choose=getchar();choose=getchar();}while(choose=='0');}void ListOne(struct StuMessage stu[],int i){printf("%s\t%s\t%s\t%d\t%c\t",stu[i].stuNo,stu[i].name,stu[i].spec,stu[i].grade,stu[i].sex);printf("%d %d %d\n",stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);}void Quit(struct StuMessage stu[])//退出菜单系统{exit(0);}void SearNum(struct StuMessage stu[])//通过输入学号查询学生记录{char m[11];length=load();do{ system("cls");printf("请输入查询的学号:\n");scanf("%s",m);for(i=0;i<length ;i++){if(!strcmp(stu[i].stuNo,m)){ void PrintHead(void);PrintHead();printf("学号%s\t",stu[i].stuNo);printf("姓名%s\t",stu[i].name);printf("专业%s\t",stu[i].spec);printf("年级%d\t",stu[i].grade);printf("性别%c\t",stu[i].sex);printf("年%d\t",stu[i].birthday.year);printf("月%d\t",stu[i].birthday.month);printf("日%d\t",stu[i].birthday.day);printf("\n");}elseprintf("没有找到相关记录\n");}printf("选择'Y'继续\n");choose=getchar();choose=getchar();}while(choose=='Y');}void SearGrade(struct StuMessage stu[])//通过输入年级查询学生记录{int meau();do{ printf("请输入查询的年级:\n");int grade;length=load();scanf("%d",&grade);void PrintHead(void);PrintHead();int count=0;i=0;for(;i<length ;i++){printf("学号%s\t",stu[i].stuNo);printf("姓名%s\t",stu[i].name);printf("专业%s\t",stu[i].spec);printf("年级%d\t",stu[i].grade);printf("性别%c\t",stu[i].sex);printf("年%d\t",stu[i].birthday.year);printf("月%d\t",stu[i].birthday.month);printf("日%d\t",stu[i].birthday.day);printf("\n");count++;i++;}if( count>0)printf("共找到%d条记录\n",count);if(count<=0)printf("没有找到相关记录\n");printf("按'Y'继续\n");choose=getchar();choose=getchar();}while(choose=='Y');}int NumOfSear(struct StuMessage stu[],char stuNum[])//根据接收到的学生学号,进行查询{int i;length=load();printf("输入学生学号");scanf("%s",stuNum);for(i=0;i<length;i++){if(strcmp(stuNum,stu[i].stuNo)==0)break;}if(i<length)return i;else return -1;}void PrintHead(void) //显示表头{printf("学号:\t 姓名:\t 专业:\t 年级:\t 性别:\t 年:\t 月:\t 日:\t\n");}int DelList(struct StuMessage stu[],int i)//如果数组中存在下标为i的记录,删除该记录返回{ int j;if(i<length){for(j=i+1;j<length;j++)stu[j-1]=stu[j];length--;printf("删除成功");return 1;}elsereturn 0;}。
C语言课程设计——学生管理系统源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define MY1 printf("学号\t姓名\t性别\t年龄\t生日")#define MY2 printf("\n%d %6s %4s\t%2d %8d%2d%2d \n",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].a.year,s[i].a.month,s[i].a.day)#define MY3 printf("家庭住址联系方式高数英语大物总成绩")#define MY4 printf("\n%4s %4s %2d %2d %2d %2d\n",s[i].address,s[i].tel,s[i].c.gao,s[i].c.ying,s[i].c.wu,s[i].c.total)#define MAX 30int i;int sum;/*时间结构体类型*/struct date{int year;int month;int day;}a;/*学生成绩结构体类型*/struct score{int gao;int ying;int wu;int total;}c;/*学生信息结构体类型*/struct s_message{int num;char name[20];char sex[5];int age;struct date a;char address[50];char tel [11];struct score c;}s[MAX];/*保存学生信息模块*/void save_message(int sum){int i;FILE*fp;if((fp=fopen("D:\\s.txt","wb"))==NULL){printf("reading file is wrong!\n");return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1)printf("writing file is wrong!\n");}fclose(fp);}/*读取学生信息模块*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s.txt","rb"))==NULL){printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");return 0 ;}while(feof(fp)==0){if(fread(&s[i],sizeof(struct s_message),1,fp)!=1) break;i++;}fclose(fp);return(i);}/*输入学生信息模块*/putin_message(){system("cls");int i=0,m=0;printf("\n\n***********输入学生信息****************\n\n");printf("输入要输入的学生的个数(m<MAX)\n");scanf("%d",&m);for(i=sum;i<sum+m;i++){ printf("\n\n第%d个学生的信息\n",i+1);printf("\n 学生学号:");scanf("%d",&s[i].num);if(s[i].num==0) break;printf("\n 学生姓名:");scanf("%s",s[i].name);printf("\n 学生性别:");scanf("%s",s[i].sex);printf("\n 学生年龄:");scanf("%d",&s[i].age);printf("\n 学生生日:");scanf("%d%d%d",&s[i].a.year,&s[i].a.month,&s[i].a.day);printf("\n 家庭住址:");scanf("%s",s[i].address);printf("\n 联系方式:");scanf("%s",s[i].tel);printf("\n 高数--英语--大物(成绩0-100):");scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);s[i].c.total=s[i].c.gao+s[i].c.ying+s[i].c.wu;flushall();}printf("\n***********************学生信息输入完毕**********************\n");sum+=m;printf("\n 按回车键返回主菜单!");getch();return 0;}/*输出学生信息模块*/void putout_message(){system("cls");int i=0;printf("\n*****************************学生信息表**********************\n\n");for(i=0;i<sum;i++){MY1;MY2;MY3;MY4;printf("\n\n");}printf("按回车键返回主菜单!");getch();}/*添加学生信息*/insert_message(){system("cls");int i=sum,flag=0;char choice;printf("\n\n**********添加一个学生信息***********\n");do{printf("\n 学生学号:");scanf("%d",&s[i].num);if(s[i].num==0) break;printf("\n 学生姓名:");fflush(stdin);scanf("%s",s[i].name);printf("\n 学生性别:");scanf("%s",s[i].sex);printf("\n 学生年龄:");scanf("%d",&s[i].age);printf("\n 学生生日:");scanf("%d %d %d",&s[i].a.year,&s[i].a.month,&s[i].a.day);printf("\n 学生家庭住址:");scanf("%s",s[i].address);printf("\n 联系方式:");scanf("%s",s[i].tel);printf("\n 高数--英语--大物(成绩0-100):");scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);s[i].c.total=s[i].c.gao+s[i].c.ying+s[i].c.wu;sum++;printf("\n 要继续吗?(Y/N)");choice=getch();if(choice=='y'||choice=='Y'){printf("\n 继续!\n");i++;flag=1;}else flag=0;}while(flag==1);printf(" 按回车键返回主菜单!");getch();return 0;}/*修改学生信息*/revise_message(){system("cls");int i=0,choice1;int revise_num,flag=0;int r=0;char choice2;printf("\n 输入要修改的学生的学号:");scanf("%d",&revise_num);for(i=0;i<sum;i++){if(revise_num==s[i].num)r=1;}if(r==0||revise_num==0)printf("没有该学生的相关信息");do{for(i=0;i<sum;i++){if(s[i].num==revise_num){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 8.高数--英语--大物--总成绩\n");printf("请选择:");scanf("%d",&choice1);switch(choice1){case 1: printf("\n 输入修改后的学生学号:");scanf("%d",&s[i].num);break;case 2: printf("\n 输入修改后的学生姓名:");scanf("%s",s[i].name);break;case 3: printf("\n 输入修改后的学生性别:");scanf("%s",s[i].sex);break;case 4: printf("\n 输入修改后的学生年龄:");scanf("%d",&s[i].age);break;case 5: printf("\n 输入修改后的学生生日:");scanf("%d%d%d",&s[i].a.year,&s[i].a.month,&s[i].a.day);break;case 6: printf("\n 输入修改后的学生家庭住址: ");scanf("%s",s[i].address);break;case 7: printf("\n 输入修改后的联系方式:");scanf("%s",s[i].tel);break;case 8: printf("\n 输入修改后的高数--英语--大物(成绩0-100):");scanf("%d%d%d",&s[i].c.gao,&s[i].c.ying,&s[i].c.wu);break;}}}printf("\n 要继续吗?(Y/N)");choice2=getch();if(choice2=='y'||choice2=='Y'){printf("\n 继续!\n");flag=1;}else flag=0;}while(flag==1);printf(" 按回车键返回主菜单!");getch();return 0;}/*更新学生信息模块*/renew_message(){system("cls");int choice;do{printf("\n\n\n*****************更新学生信息*******************\n\n");printf(" 1.添加学生信息\n\n");printf(" 2.修改学生信息\n\n");printf(" 0.返回主菜单\n\n");printf(" choice(0-2)");scanf("%d",&choice);switch(choice){case 1:insert_message();break;case 2:revise_message();break;case 0:break;}}while(choice!=0);return 0;}/*按学号查询*/int inquire_num(){system("cls");int i=0,j,r=0;printf("\n 输入要查询的学生的学号:");scanf("%d",&j);for(i=0;i<sum;i++){if(j==s[i].num)r=1;}if(r==0||j==0)printf("没有该学生的相关信息");for(i=0;i<sum;i++)if(j==s[i].num){printf("\n **********学生信息**********\n");MY1;MY2;MY3;MY4;}getch();return 0;}/*按姓名查询*/int inquire_name(){system("cls");int i=0,r=0;char inquire_name[20];printf("\n 输入要查询的学生的姓名:");scanf("%s",inquire_name);for(i=0;i<sum;i++){if(strcmp(s[i].name,inquire_name)==0)r=1;}if(r==0)printf("无该学生信息\n");for(i=0;i<sum;i++)if(strcmp(s[i].name,inquire_name)==0){printf("\n **********学生信息**********\n");MY1;MY2;MY3;MY4;}getch();return 0;}/*查询高数成绩及格的学生*/ int inquire_gao(){system("cls");int i=0,j=0;int x=60;printf("\n ***高数成绩及格的学生的信息***\n");for(i=0;i<sum;i++)if(s[i].c.gao>=x){MY1;MY2;MY3;MY4;j++;}if(j==0)printf("无高数成绩及格的学生\n");getch();return 0;}/*查询英语成绩及格的学生*/ int inquire_ying(){system("cls");int i=0,j=0;int x=60;printf("\n ***英语成绩及格的学生的信息***\n");for(i=0;i<sum;i++)if(s[i].c.ying>=x){MY1;MY2;MY3;MY4;j++;}if(j==0)printf("无英语成绩及格的学生\n");getch();return 0;}/*查询大学物理成绩及格的学生*/ int inquire_wu(){system("cls");int i=0,j=0;int x=60;printf("\n ***大学物理成绩及格的学生的信息***\n");for(i=0;i<sum;i++)if(s[i].c.wu>=x){MY1;MY2;MY3;MY4;j++;}if(j==0)printf("无物理成绩及格的学生\n");getch();return 0;}/*查询各门成绩及格的学生*/int inquire_jige(){system("cls");int choice;do{printf("\n\n********查询学生信息*********\n\n");printf(" 1.查询高数成绩及格的学生\n\n");printf(" 2.查询英语成绩及格的学生\n\n");printf(" 3.查询大学物理成绩及格的学生\n\n");printf(" 0.返回主菜单\n\n");printf(" choice(0-3)\n\n");scanf("%d",&choice);switch(choice){case 1: inquire_gao();break;case 2: inquire_ying();break;case 3: inquire_wu();break;case 0: break;}}while(choice!=0);getch();return 0;}/*查询学生信息模块*/inquire_message(){system("cls");int choice;do{printf("\n\n\n********查询学生信息*********\n\n");printf(" 1.按学号查询\n\n");printf(" 2.按姓名查询\n\n");printf(" 3.查询各门成绩及格的学生\n\n");printf(" 0.返回主菜单\n\n");printf(" choice(0-3)\n\n");scanf("%d",&choice);switch(choice){case 1: inquire_num();break;case 2: inquire_name();break;case 3: inquire_jige();break;case 0: break;}}while(choice!=0);getch();return 0;}/*按学号排名*/int rank_num(){ system("cls");int i=0,j;struct s_message t;for(i=0;i<sum-1;i++){for(j=i+1;j<sum;j++){if(s[i].num>s[j].num){t=s[j];s[j]=s[i];s[i]=t;}}}printf(" 从学号小到大排列:\n");for(i=0;i<sum;i++){MY1;MY2;MY3;MY4;}getch();return 0;}/*按成绩排名*/int rank_score(){ system("cls");int i=0,j;struct s_message t;for(i=0;i<sum-1;i++){for(j=i+1;j<sum;j++){if(s[i].c.total<s[j].c.total){t=s[j];s[j]=s[i];s[i]=t;}}}printf(" 从成绩高到低排列:\n");for(i=0;i<sum;i++){MY1;MY2;MY3;MY4;}getch();return 0;}/*学生排名信息模块*/int rank_message(){ system("cls");int choice;do{printf("\n\n\n***********排名信息************\n\n");printf(" 1.按学号排名\n\n");printf(" 2.按成绩排名\n\n");printf(" 0.返回主菜单\n\n");printf(" choice(0-2)");scanf("%d",&choice);switch(choice){case 1:rank_num();break;case 2:rank_score();break;case 0:break;}}while(choice!=0);return 0;}/*统计男女学生的信息*/int count_nn(){system("cls");int i=0,j=0;char k[5];printf("\n 输入要统计的学生的性别:");scanf("%s",k);printf("\n********** %s的学生的信息**********\n",k);for(i=0;i<sum;i++){if(strcmp(s[i].sex,k)==0){MY1;MY2;MY3;MY4;j++;}}printf("统计%s的人数是:%d",k,j);getch();return 0;}/*按学号删除*/int del_num(){system("cls");int i=0,m=0,k=0,flag;char choice;char de_num;do{printf("\n 输入要删除的学生的学号:");scanf("%d",&de_num);for(i=0;i<sum;i++){if(s[i].num!=de_num);else break;}for(i=0;i<sum;i++){if(s[i].num==de_num){m=i;for(i=m+1;i<sum;i++)s[i-1]=s[i];}}sum--;printf("\n 此学生的信息已被删除**********\n");printf("\n 要继续删除吗?(Y/N)");choice=getch();if(choice=='y'||choice=='Y'){printf("\n 继续!\n");k++;flag=1;}else flag=0;}while(flag==1);printf(" 按任意键返回主菜单!");getch();return 0;}/*按姓名删除*/int del_name(){system("cls");int i=0,m=0,k=0,flag;char choice;char de_name[20];do{printf("\n 输入要删除的学生的姓名:");scanf("%s",&de_name);for(i=0;i<sum;i++){if(strcmp(s[i].name,de_name)!=0);else break;}for(i=0;i<sum;i++){if(strcmp(s[i].name,de_name)==0){m=i;for(i=m+1;i<sum;i++)s[i-1]=s[i];}}sum=sum-1;printf("\n 此学生的信息已被删除**********\n");printf("\n 要继续删除吗?(Y/N)");choice=getch();if(choice=='y'||choice=='Y'){printf("\n 继续!\n");k++;flag=1;}else flag=0;}while(flag==1);printf(" 按任意键返回主菜单!");getch();return 0;}/*删除学生信息模块*/del_message(){system("cls");int choice;do{printf("\n\n\n*****删除学生信息*****\n\n");printf(" 1.按学号删除\n\n");printf(" 2.按姓名删除\n\n");printf(" 0.返回主菜单\n\n");printf(" choice(0-2)");scanf("%d",&choice);switch(choice){case 1:del_num();break;case 2:del_name();break;case 0:break;}}while(choice!=0);getchar();return 0;}/*主函数*/void main(){system("cls");int choice,m;sum=read_message();char a[4]="110",b[4];printf("\n\n\n**********************************请您输入密码**********************************\n");printf("密码:");for(m=0;m<3;m++){ b[m]=getch();printf("*");}b[3]='\0';getch();if(strcmp(a,b)==0){do{printf("\n\n************************************************************************** ******\n");printf("\n\n************密码输入成功欢迎您进入学生信息管理系统******************************\n\n");printf("************************************************************************* *******\n");printf(" 1.录入学生信息\n\n");printf(" 2.输出学生信息\n\n");printf(" 3.更新学生信息\n\n");printf(" 4.查询学生信息\n\n");printf(" 5.学生排名信息\n\n");printf(" 6.统计学生信息\n\n");printf(" 7.删除学生信息\n\n");printf(" 0.退出系统\n\n");printf(" 请选择(0-7):");scanf("%d",&choice);switch(choice){case 1: putin_message();save_message(sum);break;case 2: putout_message();break;case 3: renew_message();break;case 4: inquire_message();break;case 5: rank_message();break;case 6: count_nn();break;case 7: del_message();break;case 0: break;}}while(choice!=0);save_message(sum);printf("学籍信息被保存!--(s.txt)\n");}}。
C 语言学生教务管理系统代码C++语言学生教务管理系统代码 #include <stdio.h> #include <string.h> struct teacher{char name[30];char teachernumber[30];char birthplace[30];char teacherID[30];char telephone[30];char course[30]; }teacher[100];struct student{char name[30];char studentnumber[30];char birthplace[30];char studentID[30];char telephone[30]; }student[1000];struct manager{char name[30];char managernumber[30];char birthplace[30];char managerID[30];char telephone[30]; }manager[100]; struct grade{char number[30];float math;float ph;float english;float c_language;float practise;float sum;float aver;}grade[30];struct grade_count {float amax;float amin;float mathmax;float cmax;float phmax;float emax;float pmax;float mathmin;float cmin;float phmin;float emin;float pmin;char str1[10];char str2[10];char str3[10];char str4[10];char str5[10];char str6[10];char str7[10];char str8[10];char str9[10];char str10[10];char str11[10];char str12[10];}grade_count;void addteacher(){FILE *fp1;int ch=1;int i=0;while(ch==1){fp1=fopen("teacher.txt","a+");printf("请输入您要添加的教师的名字:\n"); scanf ("%s",teacher[i].name);printf("请输入您要添加的教师的教师号:\n");scanf ("%s",teacher[i].teachernumber);printf("请输入您要添加的教师的出生地:\n");scanf ("%s",teacher[i].birthplace);printf("请输入您要添加的教师的身份证号:\n");scanf ("%s",teacher[i].teacherID);printf("请输入您要添加的教师的联系方式:\n");scanf ("%s",teacher[i].telephone);printf("请输入您要添加的教师的课程:\n");scanf ("%s",teacher[i].course);fwrite(&teacher[i],sizeof(struct teacher),1,fp1);printf("%5s,%5s,%5s,%5s,%5s,%5s\n",teacher[i].name,teacher[i].teachernumber,teacher[i].birthplace,teacher[i].teache rID,teacher[i].telephone,teacher[i].course);printf("是否继续添加,继续添加请输入1,否则输入0\n");scanf ("%d",&ch);fclose(fp1);i++;}}void changeteacher(){FILE *fp,*fp2;char teachername[30];int i;int choice;fp=fopen("teacher.txt","r");fp2=fopen("teacherl.txt","w");printf("------欢迎进入教师修改系统------\n\n");printf("请输入要修改的教师的名字\n");scanf("%s",teachername);for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp)!=0;i++) {if(strcmp(teacher[i].name,teachername)==0){printf("你所要修改的教师的资料如下:\n\n");printf("姓名:〈%s〉教师号:<%s> 出生地:〈%s〉身份证号: <%s> 联系方式: <%s> 课程:<%s>\n",teacher[i].name,teacher[i].teachernumber,teacher[i].birthplace,teacher[i].teacherID,teacher[i].telephone,teacher[i].course);printf(",请选择你要更新的内容:1:修改教师的姓名\n");printf(" 2:修改教师的教师号\n");printf(" 3:修改教师的出生地\n");printf(" 4:修改教师的身份证号\n");printf(" 5:修改教师的联系方式\n");printf(" 6:修改教师的课程\n");printf("请按照提示选择1-6:");scanf("%d",&choice);switch(choice){case 1:{printf("请输入新的姓名\n");scanf("%s",teacher[i].name);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;case 2:{printf("请输入新的教师号\n");scanf("%s",teacher[i].teachernumber);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;case 3:{printf("请输入新的出生地 \n");scanf("%s",teacher[i].birthplace);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;case 4:{printf("请输入新的身份证号 \n");scanf("%s",teacher[i].teacherID);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;case 5:{printf("请输入新的联系方式 \n");scanf("%d",&teacher[i].telephone);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;case 6:{printf("请输入新的课程 \n");scanf("%d",&teacher[i].course);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;default:printf("Error");break;}continue;}fwrite(&teacher[i],sizeof(struct teacher),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("teacher.txt","w");fp2=fopen("teacherl.txt","r");for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp2)!=0;i++) {fwrite(&teacher[i],sizeof(struct teacher),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("teacherl.txt","w");fclose(fp2);printf("Enter\n");getchar();return;}void tnamedele(){FILE *fp,*fp1;int i;char teachername[30];char ch1;printf("请输入教师的名字:\n");scanf("%s",teachername);fp=fopen("teacher.txt","r");fp1=fopen("teacher1.txt","w");for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp)!=0;i++) if(strcmp(teachername,teacher[i].name)!=0){fwrite(&teacher[i],sizeof(struct teacher),1,fp1);fclose(fp);fclose(fp1);}printf("确定删除该教师,\n");printf(" 1.是,请输入Y;\n");printf(" 2.否,请输入N.\n");scanf ("%s",&ch1);if(ch1=='y'||ch1=='Y'){fp=fopen("teacher.txt","w");fp1=fopen("teacher1.txt","r");for(i=0;fread(&teacher[i],sizeof(structteacher),1,fp1)!=0;i++){fwrite(&teacher[i],sizeof(struct teacher),1,fp);}fclose(fp);fclose(fp1);printf("您已经成功删除\n");}}void tnumberdele(){FILE *fp,*fp2;int i;char teachernumber[30];char ch2;printf("请输入教师的教师号:\n");scanf("%s",teachernumber);fp=fopen("teacher.txt","r");fp2=fopen("teacher1.txt","w");for(i=0;fread(&teacher[i],sizeof(structteacher),1,fp)!=0;i++)if(strcmp(teachernumber,teacher[i].teachernumber)!=0) fwrite(&teacher[i],sizeof(struct teacher),1,fp2); fclose(fp);fclose(fp2);printf("确定删除该教师,\n");printf(" 1.是,请输入Y;\n");printf(" 2.否,请输入N.\n");scanf ("%s",&ch2);if(ch2=='y'||ch2=='Y'){fp=fopen("teacher.txt","w");fp2=fopen("teacher1.txt","r");for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp2)!=0;i++) {fwrite(&teacher[i],sizeof(struct teacher),1,fp);}fclose(fp);fclose(fp2);printf("您已经成功删除\n");}}void deleteteacher(){int i;do{printf("------欢迎进入教师删除系统------\n\n");printf(">>>按照教师的姓名删除按1\n");printf(">>>按照教师的教师号删除按2\n");printf(">>>返回按0\n");scanf("%d",&i);switch(i){case 0:printf("退出\n");break;case 1:tnamedele();break;case 2:tnumberdele();break;default:break;}}while(i!=0);}void countteacher(){FILE *fp;int i,j;int n=0;do{printf("您现在进行的是统计教师的操作\n\n"); printf("请稍等......按1确定,按0退出\n"); scanf("%d",&j);switch(j){case 0:printf("退出\n");break;case 1:{fp=fopen("teacher.txt","r");for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp)!=0;i++){n=n+1;}fclose(fp);printf("现在教师的总量为:%d\n",n); getchar();return;};break;default:break;}}while(j!=0);}void tnameseek(){FILE *fp1;int i;char tname[30];int ch1;do{printf("--------您现在进入的是教师查询系统--------\n\n");printf("请输入教师的名字:\n");scanf("%s",tname);fp1=fopen("teacher.txt","r");for(i=0;fread(&teacher[i],sizeof(structteacher),1,fp1)!=0;i++){if(strcmp(tname,teacher[i].name)==0)printf("%5s---%5s---%5s---%5s--%5s--%5s\n",teacher[i].name,teacher[i].teachernumber,teacher[i].birthplace,te acher[i].teacherID,teacher[i].telephone,teacher[i].course);}printf("继续请输入1,否则输入0\n");scanf("%d",&ch1);}while(ch1==1);}void tnumberseek(){FILE *fp2;int i;char tnumber[30];int ch2;do{printf("--------您现在进入的是教师查询系统--------\n\n");printf("请输入教师的教师号:\n");scanf("%s",tnumber);fp2=fopen("teacher.txt","r");for(i=0;fread(&teacher[i],sizeof(struct teacher),1,fp2)!=0;i++) {if(strcmp(tnumber,teacher[i].teachernumber)==0)printf("%5s---%5s---%5s---%5s--%5s--%5s\n",teacher[i].name,teacher[i].teachernumber,teacher[i].birthplace,te acher[i].teacherID,teacher[i].telephone,teacher[i].course);}printf("继续请输入1,否则输入0\n");scanf("%d",&ch2);}while(ch2==1);}void seekteacher(){int i;do{printf("------欢迎进入教师查询系统------\n\n"); printf("请选择您要查询的方法\n");printf(" 1:按照教师的名字查询\n");printf(" 2:按照教师的教师号查询\n");printf(" 3:退出\n");scanf("%d",&i);switch(i){case 1: tnameseek();break;case 2: tnumberseek();break;case 3: printf("退出");break;default: printf("您的操作有误");break;}}while(i!=3);}void mteachermanage(){int i;do{printf("请按以下提示进行操作:\n\n");printf("1.<<<<教师添加\n"); printf("2.<<<<教师修改\n"); printf("3.<<<<教师删除\n"); printf("4.<<<<教师统计\n"); printf("5.<<<<教师查询\n"); printf("6.<<<<退出\n");scanf ("%d",&i);switch(i){case 1: addteacher();break; case 2: changeteacher();break; case 3: deleteteacher();break; case 4: countteacher();break; case 5: seekteacher();break; case 6: printf("退出\n");break; default:break;}}while(i!=6);}void addstudent(){FILE *fp1;int ch=1;int i=0;while(ch==1){fp1=fopen("student.txt","a+");printf("请输入您要添加的学生的名字:\n");scanf ("%s",student[i].name);printf("请输入您要添加的学生的学号:\n");scanf ("%s",student[i].studentnumber);printf("请输入您要添加的学生的出生地:\n");scanf ("%s",student[i].birthplace);printf("请输入您要添加的学生的身份证号:\n");scanf ("%s",student[i].studentID);printf("请输入您要添加的学生的联系方式:\n");scanf ("%s",student[i].telephone);fwrite(&student[i],sizeof(struct student),1,fp1);printf("%5s,%5s,%5s,%5s,%5s\n",student[i].name,student[i ].studentnumber,student[i].birthplace,student[i].studentID, student[i].telephone);printf("是否继续添加,继续添加请输入1,否则输入0\n");scanf ("%d",&ch);fclose(fp1);i++;}}void changestudent(){FILE *fp,*fp2;char studentname[30];int i;int choice;fp=fopen("student.txt","r");fp2=fopen("studentl.txt","w");printf("------欢迎进入学生修改系统------\n\n");printf("请输入要修改的学生的名字\n");scanf("%s",studentname);for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) {if(strcmp(student[i].name,studentname)==0){printf("你所要修改的学生的资料如下:\n\n");printf("姓名:〈%s〉学生号:<%s> 出生地:〈%s〉身份证号: <%s> 联系方式:<%s>\n",student[i].name,student[i].studentnumber,student[i].birthplace,student[i].studentID,student[i].telephone);printf(",请选择你要更新的内容:1:修改学生的姓名\n");printf(" 2:修改学生的学号\n");printf(" 3:修改学生的出生地\n");printf(" 4:修改学生的身份证号\n");printf(" 5:修改学生的联系方式\n");printf("请按照提示选择1-5:");scanf("%d",&choice);switch(choice){case 1:{printf("请输入新的姓名\n");scanf("%s",student[i].name);fwrite(&student[i],sizeof(struct student),1,fp2); }break;case 2:{printf("请输入新的学号\n");scanf("%s",student[i].studentnumber);fwrite(&student[i],sizeof(struct student),1,fp2); }break;case 3:{printf("请输入新的出生地 \n");scanf("%s",student[i].birthplace);fwrite(&student[i],sizeof(struct student),1,fp2); }break;case 4:{printf("请输入新的身份证号 \n");scanf("%s",student[i].studentID);fwrite(&student[i],sizeof(struct student),1,fp2); }break;case 5:{printf("请输入新的联系方式 \n");scanf("%d",&student[i].telephone);fwrite(&teacher[i],sizeof(struct teacher),1,fp2); }break;default:printf("Error");break;}continue;}fwrite(&student[i],sizeof(struct student),1,fp2); }fclose(fp);fclose(fp2);fp=fopen("student.txt","w");fp2=fopen("studentl.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++){fwrite(&student[i],sizeof(struct student),1,fp); }fclose(fp);fclose(fp2);fp2=fopen("studentl.txt","w");fclose(fp2);printf("Enter\n");getchar();return;}void snamedele(){FILE *fp,*fp1;int i;char studentname[30];char ch1;printf("请输入学生的名字:\n");scanf("%s",studentname);fp=fopen("student.txt","r");fp1=fopen("student1.txt","w");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++){if(strcmp(studentname,student[i].name)!=0)fwrite(&student[i],sizeof(struct student),1,fp1); fclose(fp);fclose(fp1);printf("确定删除该学生,\n");printf(" 1.是,请输入Y;\n");printf(" 2.否,请输入N.\n");scanf ("%s",&ch1);if(ch1=='y'||ch1=='Y'){fp=fopen("student.txt","w");fp1=fopen("student1.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp1)!=0;i++){fwrite(&student[i],sizeof(struct student),1,fp); }fclose(fp);fclose(fp1);printf("您已经成功删除\n");}}}void snumberdele(){FILE *fp,*fp2;int i;char studentnumber[30];char ch2;printf("请输入学生的学号:\n");scanf("%s",studentnumber);fp=fopen("student.txt","r");fp2=fopen("student1.txt","w");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) {if(strcmp(studentnumber,student[i].studentnumber)!=0)fwrite(&student[i],sizeof(struct student),1,fp2);fclose(fp);fclose(fp2);printf("确定删除该教师,\n");printf(" 1.是,请输入Y;\n");printf(" 2.否,请输入N.\n");scanf ("%s",&ch2);if(ch2=='y'||ch2=='Y'){fp=fopen("student.txt","w");fp2=fopen("student1.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++) {fwrite(&student[i],sizeof(struct student),1,fp);}fclose(fp);fclose(fp2);printf("您已经成功删除\n");}}}void deletestudent(){int i;do{printf("------欢迎进入学生删除系统------\n\n");printf(">>>按照学生的姓名删除按1\n");printf(">>>按照学生的学号删除按2\n");printf(">>>返回按0\n");scanf("%d",&i);switch(i){case 0:printf("退出\n");break;case 1:snamedele();break;case 2:snumberdele();break;default:break;}}while(i!=0);}void countstudent(){FILE *fp;int i,j;int n=0;do{printf("您现在进行的是统计学生的操作\n\n"); printf("请稍等......按1确定,按0退出\n"); scanf("%d",&j);switch(j){case 0:printf("退出\n");break;case 1:{fp=fopen("student.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++){n=n+1;}fclose(fp);printf("现在学生的总量为:%d\n",n); getchar();return;};break;default:break;}}while(j!=0);}void snameseek(){FILE *fp1;int i;char sname[30];int ch1;do{printf("--------您现在进入的是学生查询系统--------\n\n");printf("请输入学生的名字:\n");scanf("%s",sname);fp1=fopen("student.txt","r");for(i=0;fread(&student[i],sizeof(structstudent),1,fp1)!=0;i++){if(strcmp(sname,student[i].name)==0)printf("%5s---%5s---%5s---%5s--%5s\n",student[i].name,st udent[i].studentnumber,student[i].birthplace,student[i].stu dentID,teacher[i].telephone);}printf("继续请输入1,否则输入0\n");scanf("%d",&ch1);}while(ch1==1);}void snumberseek(){FILE *fp2;int i;char snumber[30];int ch2;do{printf("--------您现在进入的是学生查询系统--------\n\n");printf("请输入学生的学号:\n");scanf("%s",snumber);fp2=fopen("student.txt","r");for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++) {if(strcmp(snumber,student[i].studentnumber)==0)printf("%5s---%5s---%5s---%5s--%5s\n",student[i].name,student[i].studentnumber,student[i].birthplace,student[i].stu dentID,student[i].telephone);}printf("继续请输入1,否则输入0\n");scanf("%d",&ch2);}while(ch2==1);}void seekstudent(){int i;do{printf("------欢迎进入学生查询系统------\n\n"); printf("请选择您要查询的方法\n");printf(" 1:按照学生的名字查询\n");printf(" 2:按照学生的学号查询\n");printf(" 3:退出\n");scanf("%d",&i);switch(i){case 1: snameseek();break;case 2: snumberseek();break;case 3: printf("退出");break;default: printf("您的操作有误");break;}}while(i!=3);}void mstudentmanage(){int i;do{printf("请按以下提示进行操作:\n\n");printf("1.<<<<学生添加\n");printf("2.<<<<学生修改\n");printf("3.<<<<学生删除\n"); printf("4.<<<<学生统计\n"); printf("5.<<<<学生查询\n"); printf("6.<<<<退出\n");scanf ("%d",&i);switch(i){case 1: addstudent();break; case 2: changestudent();break; case 3: deletestudent();break; case 4: countstudent();break; case 5: seekstudent();break; case 6: printf("退出\n");break; default:break;}}while(i!=6);}void addmanager(){FILE *fp1;int ch=1;int i=0;while(ch==1){fp1=fopen("manager.txt","a+");printf("请输入您要添加的管理员的名字:\n");scanf ("%s",manager[i].name);printf("请输入您要添加的管理员的证件号:\n");scanf ("%s",manager[i].managernumber);printf("请输入您要添加的管理员的出生地:\n");scanf ("%s",manager[i].birthplace);printf("请输入您要添加的管理员的身份证号:\n");scanf ("%s",manager[i].managerID);printf("请输入您要添加的管理员的联系方式:\n");scanf ("%s",manager[i].telephone);fwrite(&manager[i],sizeof(struct manager),1,fp1);printf("%5s,%5s,%5s,%5s,%5s\n",manager[i].name,manager[i ].managernumber,manager[i].birthplace,manager[i].managerID, manager[i].telephone);printf("是否继续添加,继续添加请输入1,否则输入0\n");scanf ("%d",&ch);fclose(fp1);i++;}}void changemanager(){FILE *fp,*fp2;char managername[30];int i;int choice;fp=fopen("manager.txt","r");fp2=fopen("managerl.txt","w");printf("------欢迎进入管理员修改系统------\n\n");printf("请输入要修改的管理员的名字\n");scanf("%s",managername);for(i=0;fread(&manager[i],sizeof(struct manager),1,fp)!=0;i++) {if(strcmp(manager[i].name,managername)==0){printf("你所要修改的管理员的资料如下:\n\n");printf("姓名:〈%s〉证件号:<%s> 出生地:〈%s〉身份证号: <%s> 联系方式: <%s>\n",manager[i].name,manager[i].managernumber,manager[i].bir thplace,manager[i].managerID,manager[i].telephone);printf(",请选择你要更新的内容:1:修改管理员的姓名\n");printf(" 2:修改管理员的证件号\n");printf(" 3:修改管理员的出生地\n");printf(" 4:修改管理员的身份证号\n");printf("。
#include<stdlib.h>//标准库头文件#include<string.h>#include<stdio.h>#define N 100struct student{char name[10];int age;char sex[5];char classnumber[20];char birthday[15];char homeaddress[15];char hometelnum[15];}stu[N];int load(){FILE *fp;//定义文件型指针变量int i;if ((fp=fopen("results.txt","rb"))==NULL)/*检查打开操作是否出错*/ {printf("文件打开错误\n");exit (0);}for (i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp);fclose(fp);return(i-1);}void save(int n){int i;FILE *fp;if ((fp=fopen("results.txt","wb"))==NULL){printf("文件打开错误:");}for (i=0;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp);fclose(fp);}void add(){FILE *fp;int i,k;if ((fp=fopen("results.txt","wb"))==NULL){printf("文件打开错误!\n");exit(1);}printf("请输入录入信息的学生数目:");scanf("%d",&k);for (i=0;i<k;i++){printf("\n学号:");scanf("%s",stu[i].classnumber);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("生日:");scanf("%s",stu[i].birthday);printf("家庭住址:");scanf("%s",stu[i].homeaddress);printf("家庭电话号码:");scanf("%s",stu[i].hometelnum);}for (i=0;i<k;i++)fwrite(&stu[i],sizeof(struct student),1,fp);fclose(fp);}void remove(){int n,i,j;char m[5];n=load();printf("输入你要删除资料学生的姓名:");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].name,m))break;for (j=i;j<n-1;j++){strcpy(stu[j].classnumber,stu[j+1].classnumber);strcpy(stu[j].name,stu[j+1].name);stu[j].age=stu[j+1].age;strcpy(stu[j].sex,stu[j+1].sex);strcpy(stu[j].birthday,stu[j+1].birthday);strcpy(stu[j].homeaddress,stu[j+1].homeaddress);strcpy(stu[j].hometelnum,stu[j+1].hometelnum);}save(n-1);}void display(){int n,m;n=load();for (m=0;m<n;m++){printf("学号:%s\n",stu[m].classnumber);printf("姓名:%s\n",stu[m].name);printf("性别:%s\n",stu[m].sex);printf("年龄:%d\n",stu[m].age);printf("生日:%s\n",stu[m].birthday);printf("家庭住址:%s\n",stu[m].homeaddress);printf("家庭电话号码:%s\n",stu[m].hometelnum);}}void search(){int i,x;char name_1[10];x=load();printf("请输入要查找的学生姓名:\n");scanf("%s",name_1);for(i=0;i<x;i++)if (!strcmp(stu[i].name,name_1)){ printf("学号:%s\n",stu[i].classnumber);printf("姓名:%s\n",stu[i].name);printf("性别:%s\n",stu[i].sex);printf("年龄:%d\n",stu[i].age);printf("生日:%s\n",stu[i].birthday);printf("家庭住址:%s\n",stu[i].homeaddress);printf("家庭电话号码:%s\n",stu[i].hometelnum);}}void modify(){ FILE *fp;int n,i,j;char m[10];n=load();printf("请输入要修改学生的学号或姓名:");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].classnumber,m)||!strcmp(stu[i].name,m)){printf("修改项目:1.学号2.姓名3.性别4.年龄5.生日6.家庭住址7.家庭电话号码\n");printf("你选择的项目是:");scanf("%d",&j);switch (j){case 1:printf("请输入修改后的学号:");scanf("%s",stu[i].classnumber);break;case 2:printf("请输入修改后的姓名:");scanf("%s",stu[i].name);break;case 3:printf("请输入修改后的性别:");scanf("%s",stu[i].sex);break;case 4:printf("请输入修改后的年龄:");scanf("%d",&stu[i].age);break;case 5:printf("请输入修改后的生日:");scanf("%s",stu[i].birthday);break;case 6:printf("请输入修改后的家庭住址:");scanf("%s",stu[i].homeaddress);break;case 7:printf("请输入修改后的家庭电话号码:");scanf("%s",stu[i].hometelnum);break;default :printf("对不起,输入错误!\n");/*int getch();change();break;*/}save(n);}}void menu(){int n;system("cls");printf("\n\t\t*******************************************\n");printf("\n\t\t*******************************************\n");printf("\t\t\t欢迎使用学生学籍管理系统\n");printf(" \n");printf("\t\t<功能列表>\n");printf("\n\t\t1)添加新生信息");printf("\n\t\t2)删除学生信息");printf("\n\t\t3)显示学生信息");printf("\n\t\t4)查找学生信息");printf("\n\t\t5)修改学生信息");printf("\n\t\t6)退出系统");printf("\n\t\t*******************************************\n");printf("\n\t\t*******************************************\n");printf("请选择相应操作:");scanf("%d",&n);while (n>6||n<1){printf("操作错误,请重新输入:");scanf("%d",&n);}switch (n){case 1:add();break;case 2:remove();break;case 3:display();break;case 4:search();break;case 5:modify();break;default:printf("对不起,输入错误!\n");}}void main() {menu(); }。
#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语言编写一个简单的学生管理系统。
功能: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. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
说明:只提供源代码,有些需要自己创建文件请自行建立。
#include<stdio.h> /*I/O函数*/#include <conio.h>#include<stdlib.h> /*其它说明*/#include<string.h> /*字符串函数*/#define LEN 15 /* 学号和姓名最大字符数,实际请更改*/#define N 100 /* 最大学生人数,实际请更改*/struct record /*结构体*/{char code[LEN+1]; /* 学号*/char name[LEN+1]; /* 姓名*/int age; /* 年龄*/char sex[3]; /* 性别*/char time[LEN+1]; /* 出生年月*/char add[30]; /* 家庭地址*/char tel[LEN+1]; /* 电话号码*/char mail[30]; /* 电子邮件地址*/char password[20];/*密码*/char maogao[20];char gaoshu[20];char cyuyan[20];}stu[N];int k=1,n,m; /* 定义全局变量*/void readfile();/* 函数声明*/void seek();void modify();void insert();void del();void display();void save();void menu();void panduan();void mima();void students();void xueshengdenglu();void LogOn();void readfile1();void readfile2();void modify1();void mimacharge();void GetPassword(char *szFinalPass);void teachlogon();void insertchengji();int main(){ system("color 1a");while(k)panduan();system("pause");return 0;}void teachlogon(){}void insertchengji(){int i,k,item,num;k=0;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ printf("请输入要要修改的学生的学号:");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/{ k=1;printf("\n\n") ;printf("::∴★∵**☆.∴★∵**☆. 1.登记毛概分数\n");printf(" █████.☆.∵★∵∴☆. 2.登记高数分数\n");printf(" █田█田█.*☆.∴★∵. 3.登记C语言分数\n"); printf(" █田█田█.★∵∴☆.★∵∴.4.返回上层菜单\n");printf(" █田█田█.★∵∴☆.★..**.\n");printf(" █田█田█.★★∵∴☆.★*☆.\n");printf(" █████.\n");printf("◢██□██◣.~~~~~*^_^* \n ");printf("------------------\n");printf("------------------\n");while(1){printf("\n请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("\n请输入毛概分数:");scanf("%s",s2);strcpy(stu[i].maogao,s2);save();printf("\t\t\tO(∩_∩)O登录成功\n"); break;case 2:printf("\n请输入高数分数:");scanf("%s",stu[i].gaoshu);save();printf("\t\t\tO(∩_∩)O修改成功\n");break;case 3:printf("\n请输入C语言分数:");scanf("%s",sex1);strcpy(stu[i].cyuyan,sex1); save();printf("\t\t\tO(∩_∩)O修改成功\n");break;case 4:panduan();break;default:printf("\n请在-8之间选择\n");}}}if(k==0){printf("\n\t\t*****/(ㄒoㄒ)/~~输入的学号有误*******\n\n");system("pause");system("cls");menu();}}void panduan(){char i,j;printf("\n∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞【学生信息管理系统】∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");printf(" --------------------------------系统菜单显示如下------------------------------");printf("\n");printf("\n\t ①============【学生登录】\n");printf("\n\t ②============【管理员登录】\n");printf("\n\t ③============【退出系统】\n");printf("\n\n");printf("\t\t#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓§〓#\n");printf("\t\t↓↓↓↓\n");printf("\t\t☆★☆☆★☆☆★☆☆★☆\n");printf("\t\t☆北☆☆京☆☆化☆☆工☆\n");printf("\t\t☆★☆☆★☆☆★☆☆★☆\n");printf("\t\t↓↓↓↓\n");printf("\t\t※※※※\n");scanf("%s",&i);switch(i){case('1'):system("cls");students();break;case('2'):system("cls");mima();break;case('3'): exit(0);break;case('4'):insertchengji();break;default:printf("请在1-3之间选择\n");}}void mimacharge(){ char username[16],password[20],password1[20],password2[20],q;int i,j,num,item;int k=0;printf("\n\n");printf(" 请输入学号: ");scanf("%s",username);for(i=0;i<=n;i++)if(strcmp(stu[i].code,username)==0){k=1;printf("\n\n");printf(" 请输入密码:");scanf(" %s",password);if(strcmp(stu[i].password,password) ==0){ printf("\n\n");printf(" 请输入新的密码: ");scanf(" %s",password1);printf("\n\n");printf(" 请再次输入新密码: ");scanf("%s",password2);if(strcmp(password1,password2)==0){strcpy(stu[i].password,password1);save();printf("\n\n");printf(" 密码修改完毕\n");printf("\n\n");printf(" 按任意键返回上层菜单");system("pause");students();}else{system("cls");printf("\n\n");printf(" 两次输入的密码不一致,请重新输入\n");mimacharge();}}else{ printf("\n\n");system("cls");printf("\n\n");printf(" 输入密码有误,请重新输入\n");mimacharge();}}if (k==0){system("cls");printf("\n\n");printf(" 输入的学号有误,请重新输入\n");mimacharge();}}void modify1(){char username[20],password[20];char szPassword[128];char sex1[3],s1[LEN+1],s2[LEN+1];int i,j,num,item;int k=0;printf("\n 请输入学号:");scanf("%s",username);for(i=0;i<n;i++)if(strcmp(stu[i].code,username)==0){ int k=1;printf("\n 请输入密码(默认密码为0000):"); //开始以不回显且支持退格方式获取输入密码GetPassword(szPassword);if(strcmp(stu[i].password,szPassword) ==0){ system("cls");printf("\n\t\t\t\t登录成功!\n\n\n");num=i;printf("::∴★∵**☆.∴★∵**☆. 1.修改姓名\n");printf(" █████.☆.∵★∵∴☆. 2.修改年龄\n");printf(" █田█田█.*☆.∴★∵. 3.修改性别\n");printf(" █田█田█.★∵∴☆.★∵∴.4.修改出生年月\n");printf(" █田█田█.★∵∴☆.★..**.5.修改地址\n");printf(" █田█田█.★★∵∴☆.★*☆.6.修改电话号码\n");printf(" █████.7.修改E-mail地址\n"); printf("◢██□██◣.~~~~~*^_^* 8.退出本菜单\n ");printf("------------------\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2); save();printf("\t\t\tO(∩_∩)O修改成功\n");break; case 2:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);save();printf("\t\t\tO(∩_∩)O修改成功\n");break; case 3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu[num].sex,sex1);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break; case 4:printf("请输入新的出生年月:\n");scanf("%s",s2);strcpy(stu[num].time,s2);save(); printf("\t\t\tO(∩_∩)O修改成功\n");break; case 5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu[num].add,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break;printf("请输入新的电话号码:\n");scanf("%s",s2);strcpy(stu[num].tel,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break;case 7:printf("请输入新的E-mail地址:\n");scanf("%s",s2);strcpy(stu[num].mail,s2);save(); printf("\t\t\tO(∩_∩)O修改成功\n");break;case 8:students();break;default:printf("请在0-8之间选择\n");}}}else{ system("cls");printf("\n\t**************~~~~(>_<)~~~~ 输入密码有误**************\n");modify1();}}if(k==0){ system("cls");printf("\n");printf("\n\t*******~~~~(>_<)~~~~ 输入的学号有误,请重新输入**********\n");modify1();}}void lookchengji(){char szFinalPass[30];char szPassword[128];char s1[21],password[20];int i,j;int k=0;printf("\n 请输入学号:");scanf("%s",s1);for(i=0;i<=n;i++)if(strcmp(stu[i].code,s1)==0){k=1;printf("\n 请输入密码(默认密码为0000):"); //开始以不回显且支持退格方式获取输入密码GetPassword(szPassword);if(strcmp(stu[i].password,szPassword) ==0){system("cls");printf("\n\n\n");printf("------------------------你的信息如下----------------------------------\n");printf("\n");printf("毛概成绩高数成绩C语言成绩\n");printf("--------------------------------------------------------------------\n");printf("%7s %6s %6s\n",stu[i].maogao,stu[i].gaoshu,stu[i].cyuyan);printf("--------------------------------------------------------------------\n");printf("\n");printf("\n");printf("\n\n按任意键返回学生菜单");system("pause") ;students();}else{system("cls");printf("\n***************~~~~(>_<)~~~~ 输入密码有误,请重新输入**********************\n");LogOn();}if (k==0){ system("cls");printf("\n");printf("\t\t*********(>_<)****输入的学号有误,请重新输入**********\n");}LogOn();}void LogOn(){char szFinalPass[30];char szPassword[128];char s1[21],password[20];int i,j;int k=0;printf("\n 请输入学号:");scanf("%s",s1);for(i=0;i<=n;i++)if(strcmp(stu[i].code,s1)==0){k=1;printf("\n 请输入密码(默认密码为0000):"); //开始以不回显且支持退格方式获取输入密码GetPassword(szPassword);if(strcmp(stu[i].password,szPassword) ==0){system("cls");printf("\n\n\n");printf("------------------------你的信息如下----------------------------------\n");printf("\n");printf("学生学号学生姓名年龄性别出生年月地址电话printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);printf("--------------------------------------------------------------------\n");printf("\n");printf("\b");printf("\n\n按任意键返回学生菜单");system("pause") ;students();}else{system("cls");printf("\n***************~~~~(>_<)~~~~ 输入密码有误,请重新输入**********************\n");LogOn();}}if (k==0){ system("cls");printf("\n");printf("\t\t*********(>_<)****输入的学号有误,请重新输入**********\n");}LogOn();}void mima(){char szFinalPass[30];char szPassword[128];int k;char j1[20]="123";printf("\n\n");printf(" 请输入管理员密码:");GetPassword(szPassword);if(strcmp(j1,szPassword)==0){k=1;}else{k=2;}switch(k){case(1):system("cls");menu();break;case(2): printf("\n\n 输入的密码有误,按任意键返回上层菜单!\n");system("pause");system("cls");panduan();break;}}void students(){int i;readfile1();printf("\n\n");printf(" ********O(∩_∩)O欢迎您来到学生信息查询系统**********\n");printf("\n\n");printf(" 您需要以下哪项功能请输入对应数字O(∩_∩)O \n") ;printf("\n\n");printf("\t﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩\n");printf("\t﹩﹩\n");printf("\t﹩欢迎使用﹩\n");printf("\t﹩﹩\n");printf("\t﹩0 .刷新学生信息﹩\n");printf("\t﹩﹩\n");printf("\t﹩ 1.查看学生信息﹩\n");printf("\t﹩﹩\n");printf("\t﹩ 2.修改学生信息﹩\n");printf("\t﹩﹩\n");printf("\t﹩ 3.修改密码﹩\n");printf("\t﹩﹩\n");printf("\t﹩ 4.查看学生成绩﹩\n");printf("\t﹩﹩\n");printf("\t﹩ 5.返回上层菜单﹩\n");printf("\t﹩﹩\n");printf("\t﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩﹩\n");scanf("%d",&i);switch(i){case(0):system("cls");readfile2();break;case(1):system("cls");LogOn();break;case(2):system("cls");modify1();break;case(3):system("cls");mimacharge();break;case(4):system("cls");lookchengji();break;case(5):system("cls");panduan();break;default:system("cls");printf("\n\n 请输入0-5的数字,按任意键返回上一菜单\n");system("pause");students();break;}}void help(){printf("\n0.欢迎使用系统帮助!\n");printf("\n1.本系统由309为您提供;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.如有疑问或者遇到bug请联系309小组;\n");printf("\n4.谢谢您的使用!O(∩_∩)O\n\n\n");void readfile1()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("D:\\student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s %s %s %s %s ",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail,stu[i].password,stu[i].maogao,stu[i].gaoshu,stu[ i].cyuyan)==12){i++;i=i;}fclose(fp);n=i;}void readfile2()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("D:\\student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s %d %s %s %s %s %s %s %s %s %s",stu[i].code,stu[i].name,&stu[i]. age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail,stu[i].password,stu[i].maogao,stu[i].gaoshu,stu[i].cyuyan)==12){i++;i=i;}fclose(fp);n=i;students();}void readfile()/* 建立信息*/{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("D:\\student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s %s %s %s %s ",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail,stu[i].password,stu[i].maogao,stu[i].gaoshu,stu[i].cyuyan)==12){i++;i=i;}fclose(fp);n=i;}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准*/printf("\n\t\t********O(∩_∩)O欢迎来到查询系统,请按提示操作******\n\n");printf("╭⌒╮¤` \n") ;printf("╭╭⌒╮●╭○╮ 1.按学号查询\n");printf("╰----╯/█∨█\\ 2.按姓名查询\n");printf("~~~~~~~~~~∏~~∏~~~~~~~~~~~ 3.返回上层菜单\n");while(1){printf("\n请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case 1:printf("\n请输入要查询的学生的学号:");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("\n\n\t\t\tO(∩_∩)O~~您要查找的信息如下\n\n");printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n"); printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);printf("\n\n");system("pause");system("cls");seek();break;}if(flag==0){system("cls");printf("\n\t\t\t~~o(>_<)o ~~该学号不存在,请重新选择*********\n");seek();break;};break;case 2:printf("\n请输入要查询的学生的姓名:");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("\n\n\t\t\tO(∩_∩)O~~您要查找的信息如下\n\n");printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n"); printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);printf("\n\n");system("pause");system("cls");seek();}if(flag==0){ system("cls");printf("\n\t\t\t~~o(>_<)o ~~该姓名不存在*********\n");seek();}break;case 3:system("cls");menu();break;default:system("cls");printf("\n\t\t\t***~\(≧▽≦)/~请在1-3之间选择********\n");seek();}}}void modify() /*修改信息*/{int i,k,item,num;k=0;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准*/ printf("请输入要要修改的学生的学号:");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/{ k=1;num=i;printf("\n\n") ;printf("::∴★∵**☆.∴★∵**☆. 1.修改姓名\n");printf(" █████.☆.∵★∵∴☆. 2.修改年龄\n");printf(" █田█田█.*☆.∴★∵. 3.修改性别\n");printf(" █田█田█.★∵∴☆.★∵∴.4.修改出生年月\n"); printf(" █田█田█.★∵∴☆.★..**.5.修改地址\n");printf(" █田█田█.★★∵∴☆.★*☆.6.修改电话号码\n"); printf(" █████.7.修改E-mail地址\n"); printf("◢██□██◣.~~~~~*^_^* 8.退出本菜单\n ");printf("------------------\n");printf("------------------\n");while(1){printf("\n请选择子菜单编号:");scanf("%d",&item);switch(item){case 1:printf("\n请输入新的姓名:");scanf("%s",s2);strcpy(stu[num].name,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break; case 2:printf("\n请输入新的年龄:");scanf("%d",&stu[num].age);save();printf("\t\t\tO(∩_∩)O修改成功\n");break; case 3:printf("\n请输入新的性别:");scanf("%s",sex1);strcpy(stu[num].sex,sex1); save();printf("\t\t\tO(∩_∩)O修改成功\n");break; case 4:printf("\n请输入新的出生年月:");scanf("%s",s2);strcpy(stu[num].time,s2); save();printf("\t\t\tO(∩_∩)O修改成功\n");break; case 5:printf("\n请输入新的地址:");scanf("%s",s2);strcpy(stu[num].add,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break; case 6:printf("\n请输入新的电话号码:");scanf("%s",s2);strcpy(stu[num].tel,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break; case 7:printf("\n请输入新的E-mail地址:");scanf("%s",s2);strcpy(stu[num].mail,s2);save();printf("\t\t\tO(∩_∩)O修改成功\n"); break; case 8:system("cls");menu();break;default:printf("\n请在-8之间选择\n");}}}if(k==0){printf("\n\t\t*****/(ㄒoㄒ)/~~输入的学号有误*******\n\n");system("pause");system("cls");menu();}}void sort()/*按学号排序*/{int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}void insert() /*插入函数*/{ char s1[20]="0000";int i=n,j,flag;printf("请输入待增加的学生数:\n"); scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d 个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第%d 个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d 个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d 个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第%d 个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d 个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d 个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);strcpy(stu[i].password,s1);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");save();system("pause");system("cls");menu();}void del(){int i,j,flag=0;char s1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0){printf("\n\t\t****(⊙o⊙)…该学号不存在&&******\n");printf("\n");system("pause");system("cls");menu();}if(flag==1){printf("删除成功,显示结果请选择菜单\n");n--;save();printf("\n");system("pause");system("cls");menu();}}void display(){int i;printf("所有学生的信息为:\n");printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n"); printf("--------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}printf("\n\n");system("pause");system("cls");menu();}void save(){sort();int i;FILE *fp;fp=fopen("D:\\student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail,stu[i].password,stu[i].maogao,stu[i].gaoshu,stu[ i].cyuyan);}fclose(fp);}void menu()/* 界面*/{readfile();char num;printf("\n∞∞∞∞∞∞∞∞∞∞【学生信息管理系统(管理员界面)】∞∞∞∞∞∞∞∞∞∞∞∞∞\n");printf(" --------------------------------系统菜单显示如下------------------------------");printf("\n\t①===============【帮助信息】\n");printf("\n\t②===============【刷新数据】\n");printf("\n\t③===============【查询学生信息】\n");printf("\n\t④===============【修改学生信息】\n");printf("\n\t⑤===============【添加学生信息】\n");printf("\n\t⑥===============【删除学生信息】\n");printf("\n\t⑦===============【显示学生信息】\n");printf("\n\t⑧===============【保存学生信息】\n");printf("\n\t⑨===============【返回上层菜单】\n"); printf("请选择菜单编号:");scanf("%s",&num);switch(num){case '1':system("cls");help();system("pause");system("cls");menu();break;case '2':readfile();system("cls");menu();break;case '3':system("cls");seek();break;case '4':system("cls");modify();break;case '5':system("cls");insert();break;case '6':system("cls");del();break;case '7':system("cls");display();break;case '8':system("cls");save();system("cls");printf("\n\t\t\t$$$$O(∩_∩)O~~已保存信息&&&&&&\n\n");system("pause");system("cls");menu();break;case '9':system("cls");panduan();break;default:system("cls");printf("请在1-9之间选择\n");system("pause");system("cls");menu();}}void GetPassword(char *szFinalPass){char chValue,szPassword[20];int iCounter = 0; //定义计数器while ( 1 ){if( ( chValue = getch() ) != '\r' ) //如果输入的不是回车{if( chValue != '\b' ) //如果输入的不是退格{if ( iCounter <20) //如果长度并未超过密码的最大长度{szPassword[iCounter] = chValue;putchar( '*' ); //在屏幕上显示星号iCounter ++;}else{putchar( '\7' ); //如果密码已经超过最大长度,则响铃报警}}else{if( iCounter != 0 ) //如果按了退格,并且当前不是第一个字符{iCounter --;printf( "\b \b" ); //注意两个\b之间是有个空格的,含义是先退格,//然后打印空白字符将之前的字符覆盖掉,然后再退格使光标退回}}}else{szPassword[iCounter] = 0; //密码输入结束时将末尾以\0结尾!break;}}strcpy( szFinalPass ,szPassword ); //最终将密码复制出来}。
学籍管理系统设计学籍管理系统管理学生的基本信息与各科目成绩。
功能如下:1 学生(10个学生),每个学生是一个纪录,包括的信息有:班级、学号、姓名、C语言成绩、高数成绩、英语成绩、平均成绩等。
可以对学生的基本信息进行录入(保存到一个文件中),修改(某个学生的记录),删除(某个学生的记录),显示所有学生的信息;2 可计算每个学生的平均分;3能按学号查询单个学生的信息;4按平均成绩排序;5系统可以扩充,能管理更多学生和更多的课程。
(提示:通过宏定义来实现如:define N 10define M 3)(10,39,72,52,04)#include<stdio.h>#include<string.h>#define N 100struct date_type{int year;int month;int day;};struct baoming{char name[10];char sex[4];char address[10];int class1;int num;struct date_type date1;};struct kaichu{struct date_type date2;};struct zhuanxue{struct date_type date3;char academy [10];};struct lixiao{struct date_type date4;char quxiang[10];};struct stud_type{struct baoming bm;struct kaichu kc;struct zhuanxue zx;struct lixiao lx;char k[3];int jilu;};struct stud_type stu[N];void duru(struct stud_type stu[]); /*数据读入*/void Add(struct stud_type stu[]); /*入校、离校登记*/void Delete(struct stud_type stu[]); /*删除学生*/void Modify(struct stud_type stu[]); /*修改学生*/void Search(struct stud_type stu[]); /*查询学生*/void Print(struct stud_type stu[]); /*输出所有学生信息*/void Save(struct stud_type stu[]); /*数据存盘*/int r=0;void main(){int x;duru(stu);do{printf("\t\t|※※※※※※※※※※※※※※※※※※※※※※※※※|\n");printf("\t\t|※学籍管理※|\n");printf("\t\t ---------------------------------------------------- \n");printf("\t\t|※项目经理:Obama ※|\n");printf("\t\t|※※|\n");printf("\t\t|※组长:Bush ※|\n");printf("\t\t|※组员:。
学生管理系统c语言源代码学生管理系统c语言源代码#include stdio.h#include dos.h#include string.h#include stdlib.h#include malloc.h#define SIZE 8struct student{char name;char num;int score;float ave;struct student *next;}stu[SIZE],temp,s;void shuru(){int i,j,sum,length,flag=1,a;FILE *fp;while(flag==1){printf(“Define a rangeclass number:");scanf("%d",printf("Input the total number of the class(a):"); scanf("%d",length);if(lengtha)flag=0;}for(i=0;ilength;i++){printf("\n请输入学生的信息:");printf("\n输入姓名:");scanf("%s",stu[i].name);printf("\n输入序号.:");scanf("%s",stu[i].num);printf("\n输入成绩:\n");sum=0;for(j=0;jj++){printf("score %d:",j+1);scanf("%d",stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/3.0;}学生管理系统c语言源代码fp=fopen("stu1.txt","w");for(i=0;ilength;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)printf("File write error\n");fclose(fp);fp=fopen("stu1.txt","r");printf("\name\ NO. score1 score2 score3 sum ave\n");for(i=0;ilength;i++){fread(stu[i],sizeof(struct student),1,fp);printf("%3s%5s%7d%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i ].score,stu[i].score,stu[i].score,sum=stu[i].score+stu[i].score+stu[i].score,stu[i].ave);}}void chaxun(){ FILE *fp, *fp1;char n,name;int i,j,k,t,m,flag=1;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");k=i;printf("\nPlease select the menu(1.number ):"); scanf("%d",switch(m){case 1:printf("\nchaxun number:");scanf("%s",n);for(flag=1,i=0;ii++){if(strcmp(n,stu[i].num)==0){j=i;flag=0;break;}}break;case 2:printf("\nchaxun name:");scanf("%s",name);for(flag=1,i=0;ii++){if(strcmp(name,stu[i].name)==0){j=i;flag=0;break;学生管理系统c语言源代码}}}if(!flag){printf("\nYou can find:\n");fp1=fopen("stu2.txt","w");printf(" name NO. score1 score2 score3ave\n");fwrite(stu[j],sizeof(struct student),1,fp1);printf("%-15s%11s%7d%7d%7d%10.2f",stu[j].name,stu[j].num,stu[j].score,stu[j].score,stu[j].score,stu[j].ave);}else printf("\nNot found!");fclose(fp);fclose(fp1);}xiugai(){ int a;printf("\nplease select the menu(1.CHARU 2.__ ):");scanf("%d",switch(a){case 1:Insert(); break;case 2:Delete(); break;}}Insert(){ FILE *fp;int i,j,t,n;printf("\nNO.:");scanf("%s",s.num);printf("name:");scanf("%s",);printf("score1,score2,score3:");scanf("%d,%d,%d",s.score,s.score,s.score);s.ave=(s.score+s.score+s.score)/3.0;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)学生管理系统c语言源代码printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(t=0;stu[t].aves.avett++);printf("\nnow:\n");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fwrite(s,sizeof(struct student),1,fp);printf("\n%-15s%11s%7d%7d%7d%10.2f",,s.num,s.score,s.score, s.score,s.ave);for(i=t;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);}Delete(){ FILE *fp;int i,j,t,n,flag;char number;if((fp=fopen("stu1.txt","rb"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;学生管理系统c语言源代码printf("\nInput number deleted:");scanf("%s",number);for(flag=1,i=0;flagii++){if(strcmp(number,stu[i].num)==0){for(t=i;tt++){strcpy(stu[t].num,stu[t+1].num);strcpy(stu[t].name,stu[t+1].name);for(j=0;jj++)stu[t].score[j]=stu[t+1].score[j];stu[t].ave=stu[t+1].ave;}n=n-1;elseprintf("\n Not found!");printf("\nNow,the content of file:\n");fp=fopen("stu1.txt","wb");for(i=0;ii++)fwrite(stu[i],sizeof(struct student),1,fp);fclose(fp);fp=fopen("stu1.txt","r");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++)printf("%-15s%11s%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i].score, stu[i].score,stu[i].score,stu[i].ave);fclose(fp);}paixu(){FILE *fp;int i,j,n;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(i=0;ii++)for(j=i+1;jj++)学生管理系统c语言源代码if(stu[i].avestu[j].ave){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("\nnow:");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);tongji(){ FILE *fp;int i,j,k,labe1,b;int a5=0;int a6=0;int a7=0;int a8=0;int a9=0; int a10=0; float t;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++){printf("\n%-15s%11s",stu[i].name,stu[i].num); for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);k=i;for(i=0;ii++){labe1=0;if(stu[i].ave60){labe1++;t=labe1/(float)k*100;}}printf("\nbujigelv:");printf("%f%",t);printf("\n");for(j=0;jj++){a5=0;a6=0;a7=0;a8=0;a9=0;a10=0;k=i;printf("kemu is %d:\n",j);for(i=0;ii++)学生管理系统c语言源代码{b=stu[i].score[j]/10;if(b6)a5++;elseif(b=6b7)a6++;elseif(b=7b8)a7++;elseif(b=8b9)a8++;if(b=9b10)a9++;elseif(b==10)a10++;}printf(" 不及格is %d\n",a5);printf(" 60--69 is %d\n",a6);printf(" 70--79 is %d\n",a7);printf(" 80--89 is %d\n",a8);printf(" 90--99 is %d\n",a9);printf(" 100 is %d\n",a10);}}main(){int a;printf(" ____\n"); printf(" 欢迎进入学生成绩管理系统\n");printf(" ____\n"); while(1){printf("\n选择菜单:\n");printf("\n");printf(" 1.输入 2.查询 3.排序 4.修改 5.统计 6.退出\n"); scanf("%d",switch(a){case 1: shuru();break;case 2: chaxun(); break;case 3: paixu(); break;case 4: xiugai(); break;学生管理系统c语言源代码case 5: tongji();break; case 6: exit(0); }。
C语言课程设计——学生管理系统源代码#include〈stdio。
h>#include〈stdlib。
h〉#include<string。
h〉#include〈conio.h>#define MY1 printf(”学号\t姓名\t性别\t年龄\t生日”)#define MY2 printf(”\n%d %6s %4s\t%2d %8d%2d%2d \n",s[i].num,s[i].name,s[i]。
sex,s[i]。
age,s[i]。
a。
year,s[i].a。
month,s[i].a.day)#define MY3 printf(”家庭住址联系方式高数英语大物总成绩")#define MY4 printf(”\n%4s %4s %2d %2d %2d %2d\n”,s[i]。
address,s[i]。
tel,s[i].c。
gao,s[i]。
c.ying,s[i].c.wu,s[i].c.total)#define MAX 30int i;int sum;/*时间结构体类型*/struct date{int year;int month;int day;}a;/*学生成绩结构体类型*/struct score{int gao;int ying;int wu;int total;}c;/*学生信息结构体类型*/struct s_message{int num;char name[20];char sex[5];int age;struct date a;char address[50];char tel [11];struct score c;}s[MAX];/*保存学生信息模块*/int i;FILE*fp;if((fp=fopen(”D:\\s。
txt",”wb”))==NULL){printf(”reading file is wrong!\n”);return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1)printf(”writing file is wrong!\n”);}fclose(fp);}/*读取学生信息模块*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s。
#include<stdlib.h>#include<string.h>#include<stdio.h>#define N 100struct student{char no[9];char name[25];char sex[10];int age;char jiguan[25];char zhuanye[25];int ban;}stu[N];int load(){FILE *fp;int i;if ((fp=fopen("results.txt","rb"))==NULL){printf("文件打开错误");return 0;}for (i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp);fclose(fp);return(i-1);}void save(int n){int i;FILE *fp;if ((fp=fopen("results.txt","wb"))==NULL){printf("文件打开错误:");}for (i=0;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp);fclose(fp);}void read(){int n,m;printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");for (m=0;m<n;m++){printf("%s",stu[m].no);printf("\t%s",stu[m].name);printf("\t%s",stu[m].sex);printf("\t%d",stu[m].age);printf("\t%s",stu[m].jiguan);printf("\t%s",stu[m].zhuanye);printf("\t%d",stu[m].ban);printf("\n");}}void zengjia(){int n,m,j,i;n=load();printf("输入你想要增加多少个学生信息");scanf("%d",&m);for (i=0;i<m;i++){printf("\n学号:");scanf("%s",stu[n+i].no);printf("姓名:");scanf("%s",stu[n+i].name);printf("性别:");scanf("%s",stu[n+i].sex);printf("年龄:");scanf("%d",&stu[n+i].age);printf("籍贯:");scanf("%s",stu[n+i].jiguan);printf("专业:");scanf("%s",stu[n+i].zhuanye);printf("班级:");scanf("%d",&stu[n+i].ban);}printf("输入完成");save(n+m);}{FILE *fp;int i,m;if ((fp=fopen("results.txt","wb"))==NULL){printf("文件打开错误!\n");exit(1);}printf("你想要录入多少个学生信息?");scanf("%d",&m);for (i=0;i<m;i++){printf("\n学号:");scanf("%s",stu[i].no);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("籍贯:");scanf("%s",stu[i].jiguan);printf("专业:");scanf("%s",stu[i].zhuanye);printf("班级:");scanf("%d",&stu[i].ban);}for (i=0;i<m;i++)fwrite(&stu[i],sizeof(struct student),1,fp);fclose(fp);}void xingming(){int meau();int n,i;char m[9];n=load();printf("欢迎使用姓名查找功能,请输入你需要查找的学生的姓名:");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].name,m))printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);}}void xuehao(){int meau();int n,i;char m[9];n=load();printf("欢迎使用学号查找功能,请输入你需要查找的学生的学号:");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].no,m)){printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);}}void find(){int meau();int n;printf("请选择你要的功能:1)学号查找2)姓名查找\n");printf("你选择的功能是:");scanf("%d",&n);switch (n){xuehao();break;case 2:xingming();break;default :printf("选择的功能错误\n输入任意键返回查找");int getch();find();break;}}void change(){int meau();FILE *fp;int n,i,j;char m[9];n=load();printf("欢迎使用修改功能,输入你要修改学生的学号:");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].no,m)){printf("你要修改的项目:1)学号2)姓名3)性别4)年龄5)籍贯6)专业7)班级\n");printf("你选择的功能是:");scanf("%d",&j);switch (j){case 1:printf("输入你修改后的学号:");scanf("%s",stu[i].no);break;case 2:printf("输入你修改后的姓名:");scanf("%s",stu[i].name);break;case 3:printf("输入你修改后的性别:");scanf("%s",stu[i].sex);break;case 4:printf("输入你修改后的年龄:");scanf("%d",&stu[i].age);break;case 5:printf("输入你修改后的籍贯:");scanf("%s",stu[i].jiguan);break;case 6:printf("输入你修改后的专业:");scanf("%s",stu[i].zhuanye);break;case 7:printf("输入你修改后的班级:");scanf("%d",&stu[i].ban);break;default :printf("选择的功能错误\n");int getch();change();break;}save(n);}}void tongji_1(){int n,m,i,sum=0;n=load();printf("输入你要统计的年龄:");scanf("%d",&m);printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");for (i=0;i<n;i++)if (stu[i].age==m){printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);sum++;}printf("%d岁的学生共有%d个\n",m,sum);}void tongji_2(){int n,i,sum=0;char m[25];n=load();printf("输入你要统计的籍贯:");scanf("%s",&m);printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");for (i=0;i<n;i++)if (!strcmp(m,stu[i].jiguan)){printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);sum++;}printf("%s籍贯的学生共有%d个\n",m,sum);}void tongji_3(){int n,i,sum=0;char m[25];n=load();printf("输入你要统计的专业:");scanf("%s",&m);printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");for (i=0;i<n;i++)if (!strcmp(m,stu[i].zhuanye)){printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);sum++;}printf("%s专业的学生共有%d个/n",m,sum);}void tongji_4(){int n,m,i,sum=0;n=load();printf("输入你要统计的班级:");scanf("%d",&m);printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");for (i=0;i<n;i++)if (stu[i].ban==m){printf("%s",stu[i].no);printf("\t%s",stu[i].name);printf("\t%s",stu[i].sex);printf("\t%d",stu[i].age);printf("\t%s",stu[i].jiguan);printf("\t%s",stu[i].zhuanye);printf("\t%d\n",stu[i].ban);sum++;}printf("%d班的学生共有%d个\n",m,sum);}void tongji(){int n,m,i;n=load();printf("欢迎使用统计功能,你想统计的项目是:1) 年龄2) 籍贯3) 专业4) 班级\n");printf("输入你想选择的功能:");scanf("%d",&m);switch (m){case 1:tongji_1();break;case 2:tongji_2();break;case 3:tongji_3();break;case 4:tongji_4();break;default :printf("选择的功能错误\n");int getch();tongji();break;}}void shanchu(){int n,i,j;char m[9];n=load();printf("输入你要删除资料学生的学号");scanf("%s",&m);for (i=0;i<n;i++)if (!strcmp(stu[i].no,m))break;for (j=i;j<n-1;j++){strcpy(stu[j].no,stu[j+1].no);strcpy(stu[j].name,stu[j+1].name);stu[j].age=stu[j+1].age;strcpy(stu[j].jiguan,stu[j+1].jiguan);strcpy(stu[j].zhuanye,stu[j+1].zhuanye);strcpy(stu[j].sex,stu[j+1].sex);stu[j].ban=stu[j+1].ban;}save(n-1);}void menu(){int n;system("cls");printf("\n\t\t*******************************************\n"); printf("\n\t\t*******************************************\n"); printf("\t\t\t\t欢迎使用\n");printf("\t\t功能列表:\n");printf("\n\n\t\t1)录入新的学生资料");printf("\n\n\t\t2)查找学生");printf("\n\n\t\t3)删除学生资料");printf("\n\n\t\t4)修改学生资料");printf("\n\n\t\t5)分析统计学生资料");printf("\n\n\t\t6)查看学生资料");printf("\n\n\t\t7)增加学生资料");printf("\n\n\t\t8)退出系统");printf("\n\t\t*******************************************\n"); printf("\n\t\t*******************************************\n"); printf("想选择的功能:");scanf("%d",&n);while (n>8||n<1){printf("输入错误的功能,请重新输入功能选项:");scanf("%d",&n);}switch (n){case 1:add();break;case 2:find();break;case 3:shanchu();break;case 4:change();break;case 5:tongji();break;case 6:read();break;case 7:zengjia();break;case 8:break;}}void main() {menu();}。
#include<stdio.h> /*头文件*/#include<string.h>#include<stdlib.h>#define N 100#define M 3typedef struct student /*定义学生结构体*/{char num[11];char name[20];char sex[3];int score[M];float ave;int Max_course;}STU;STU stu[N],stu_Chinese[N],stu_Math[N],stu_English[N];int Max[M];float ave_Chinese;float ave_Math;float ave_English;int n;/*实际存储的学生个数*/void no_input(int i,int n)/*i表示第i个的学生信息,n表示比较到第n个学生*/{int j,k,w1;do{w1=0;printf("NO.:");scanf("%s",&stu[i].num);for(j=0;stu[i].num[j]!='\0';j++)/*学号输入函数,作了严格规定*/if(stu[i].num[j]<'0'||stu[i].num[j]>'9')/*判断学号是否为数字*/{puts("Input error! Only be made up of (0-9).Please reinput!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++)/*比较到第n个学生*/if(k!=i&&strcmp(stu[k].num,stu[i].num)==0){puts("This record is exist.Please reinput!\n");w1=1;break;}}while(w1==1);}void input(int i)/*输入一个记录函数*/{int j,sum;no_input(i,i);/*调用学号输入函数*/printf("name:");scanf("%s",&stu[i].name);printf("sex:");scanf("%s",&stu[i].sex);for(j=0;j<M;j++){printf("score %d:",j+1);scanf("%d",&stu[i].score[j]);}for(sum=0,j=0;j<M;j++)sum+=stu[i].score[j];stu[i].ave=sum*1.0/M;/*每一行的平均值,即每位同学的三门课总的平均分*/}void menu();/*函数声明*/void enter()/*输入模块*/{int i,j,f;system("CLS");/*清屏*/printf("How many students(0-%d)?:",N);/*要输入的记录个数*/scanf("%d",&n);printf("\nEnter data now\n\n");for(i=0;i<n;i++){printf("\nInput %dth student record.\n",i+1);input(i);/*调用输入函数*/}for(i=0;i<n;i++)/*求每一行的最大值,即求每一位学生的三门课中的最高分*/{stu[i].Max_course=stu[i].score[0];for(j=1;j<M;j++){if(stu[i].Max_course<stu[i].score[j])stu[i].Max_course=stu[i].score[j];}}for(i=0;i<n;i++)/*把输入的信息分别复制到stu_Chinese[N],stu_Math[N],stu_English[N]中*/{stu_Chinese[i]=stu[i];stu_Math[i]=stu[i];stu_English[i]=stu[i];}printf("返回主菜单请按数字0\n");do{scanf("%d",&f);if(f==0){menu();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void printf_one(int i)/*显示一个记录函数*/{int j;printf("%3s :%3s",stu[i].num,stu[i].name);for(j=0;j<M;j++)printf("%10d",stu[i].score[j]);printf("%10.2f",stu[i].ave);printf("%9d\n",stu[i].Max_course);}void browse() /*浏览模块*/{int i,j,f,k=0;system("CLS");/*清屏*/for(i=0;i<n;i++)/*求第一列的平均值,即求语文平均成绩*/{k=k+stu[i].score[0];ave_Chinese=(k*1.0)/n;}k=0;for(i=0;i<n;i++)/*求第二列的平均值,即求数学平均成绩*/{k=k+stu[i].score[1];ave_Math=(k*1.0)/n;}k=0;for(i=0;i<n;i++)/*求第三列的平均值,即求英语平均成绩*/{k=k+stu[i].score[2];ave_English=(k*1.0)/n;}Max[0]=stu[0].score[0];/*第一列的最大值,即语文成绩最高分*/for(i=1;i<n;i++){if(Max[0]<stu[i].score[0])Max[0]=stu[i].score[0];}Max[1]=stu[0].score[1];/*第二列的最大值,即数学成绩最高分*/for(i=1;i<n;i++){if(Max[1]<stu[i].score[1])Max[1]=stu[i].score[1];}Max[2]=stu[0].score[2];/*第三列的最大值,即英语成绩最高分*/for(i=1;i<n;i++){if(Max[2]<stu[i].score[2])Max[2]=stu[i].score[2];}puts("\n--------------------------------------------------------------------");printf("\n NO : name Chinese Math English average Max_course\n");for(i=0;i<n;i++){if((i!=0)&&(i%10==0))/*目的是分屏显示*/{printf("\n\nPass any key to continue...");getchar();puts("\n\n");}printf_one(i);/*调用显示一个记录函数*/}puts("\n-------------------------------------------------------------------");printf(" ave_Chinese ave_Math ave_English\n");printf("%10.2f%10.2f%10.2f\n",ave_Chinese,ave_Math,ave_English);/*显示语文、数学、英语平均成绩*/puts("\n-------------------------------------------------------------------");printf(" Max_Chinese Max_Math Max_English\n");printf("%10d%10d%10d\n",Max[0],Max[1],Max[2]);/*显示语文、数学、英语成绩*/puts("\n-------------------------------------------------------------------");printf("\n\tThere are %d record.\n",n);puts("\n-------------------------------------------------------------------");printf("返回主菜单请按数字0\n");do{scanf("%d",&f);if(f==0){menu();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void search()/*查找模块*/{int i,k,f;struct student s;k=-1;system("CLS");/*清屏*/printf("\n\nEnter name that you wang to search! num:");scanf("%s",&s.num);/*输入要查找的学生的学号*/printf("\n NO :name Chinese Math English average Max_course\n");for (i=0;i<n;i++)/*查找信息*/if(strcmp(s.num,stu[i].num)==0){k=i; /*找到要查找的学生记录*/printf_one(k);/*调用显示一个记录函数*/break;}if(k==-1){printf("\n\nNO exist!");}printf("返回主菜单请按数字0\n");do{scanf("%d",&f);if(f==0){menu();break;}else printf("输入有误,请重新输入:");}while(f!=0);}/*函数声明*/void order_ave();void order_Chinese();void order_Math();void order_English();void order()/*排序模块*/{int i,j,f,m,w1;struct student s;system("CLS");do{system("CLS");puts("\t\t\t学生成绩排序\n\n");puts("\t*************************ORDER*************************\n" );puts("\t\t\t1.对每一位学生的平均成绩排序\n");puts("\t\t\t2.对语文课成绩排序\n");puts("\t\t\t3.对数学课成绩排序\n");puts("\t\t\t4.对英语课成绩排序\n");puts("\t\t\t5.返回主菜单\n");puts("\t******************************************************\n");printf("Choice your number(1-5):[ ]\b\b");scanf("%d",&m);if(m<0||m>5){w1=1;printf("your choice is not between 1 and 5,Please input again:");getchar();}else w1=0;}while(w1==1);switch(m) /*选择功能*/{case 1:order_ave();break;case 2:order_Chinese();break;case 3:order_Math();break;case 4:order_English();break;case 5:menu();;}printf("The ordered data is:\n");browse();}void order_ave()/*对平均成绩从小到大进行冒泡排序法*/{int i,j,f;struct student s;system("CLS");for(i=0;i<n;i++){for(j=i;j<n;j++){if(stu[i].ave>stu[j].ave){s=stu[i];stu[i]=stu[j];stu[j]=s;}}}puts("\n-------------------------------------------------------------------");printf("每位学生的平均成绩从小到大的排序结果\n");printf(" NO : name average \n");for(i=0;i<n;i++)printf("%3s :%3s %11f\n",stu[i].num,stu[i].name,stu[i].ave);puts("\n-------------------------------------------------------------------");printf("返回上一级请按数字0\n");do{scanf("%d",&f);if(f==0){order();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void order_Chinese()/*对语文成绩从小到大进行冒泡排序法*/{int i,j,f;struct student s;system("CLS");for(i=0;i<n;i++){for(j=i;j<n;j++){if(stu_Chinese[i].score[0]>stu_Chinese[j].score[0]){s=stu_Chinese[i];stu_Chinese[i]=stu_Chinese[j];stu_Chinese[j]=s;}}}puts("\n-------------------------------------------------------------------");printf("语文成绩从小到大的排序结果\n");printf(" NO : name Chinese \n");for(i=0;i<n;i++)printf("%3s :%5s %6d\n",stu_Chinese[i].num,stu_Chinese[i].name,stu_Chines e[i].score[0]);puts("\n-------------------------------------------------------------------");printf("返回上一级请按数字0\n");do{scanf("%d",&f);if(f==0){order();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void order_Math()/*对数学成绩从小到大进行冒泡排序法*/{int i,j,f;struct student s;system("CLS");for(i=0;i<n;i++){for(j=i;j<n;j++){if(stu_Math[i].score[1]>stu_Math[j].score[1]){s=stu_Math[i];stu_Math[i]=stu_Math[j];stu_Math[j]=s;}}}puts("\n-------------------------------------------------------------------");printf("数学成绩从小到大的排序结果\n");printf(" NO : name Math \n");for(i=0;i<n;i++)printf("%3s :%5s %6d\n",stu_Math[i].num,stu_Math[i].name,stu_Math[i].scor e[1]);puts("\n-------------------------------------------------------------------");printf("返回上一级请按数字0\n");do{scanf("%d",&f);if(f==0){order();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void order_English()/*对英语成绩从小到大进行冒泡排序法*/{int i,j,f;struct student s;system("CLS");for(i=0;i<n;i++){for(j=i;j<n;j++){if(stu_English[i].score[2]>stu_English[j].score[2]){s=stu_English[i];stu_English[i]=stu_English[j];stu_English[j]=s;}}}puts("\n-------------------------------------------------------------------");printf("英语成绩从小到大的排序结果\n");printf(" NO : name English \n");for(i=0;i<n;i++)printf("%3s :%5s %6d\n",stu_English[i].num,stu_English[i].name,stu_English [i].score[2]);puts("\n-------------------------------------------------------------------");printf("返回上一级请按数字0\n");do{scanf("%d",&f);if(f==0){order();break;}else printf("输入有误,请重新输入:");}while(f!=0);}void menu(){int n,w1;do{system("CLS");puts("\t\t\t学生学籍管理系统\n\n");puts("\t*************************MENU*************************\n");puts("\t\t\t1.Enter new data\n");puts("\t\t\t2.Browse all\n");puts("\t\t\t3.Search by num\n");puts("\t\t\t4.Order by average\n");puts("\t\t\t5.Exit\n");puts("\t******************************************************\n");printf("Choice your number(1-5):[ ]\b\b");scanf("%d",&n);if(n<0||n>5)/*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 5,Please input again:");getchar();}else w1=0;}while(w1==1);switch(n) /*选择功能*/{case 1:enter();break;/*输入模块*/case 2:browse();break;/*浏览模块*/ case 3:search();break;/*查找模块*/ case 4:order();break;/*排序模块*/case 5:exit(0);/*退出模块*/}}void main(){menu();/*调用主菜单函数*/}。
C语言学生学籍管理系统引言现代教育离不开信息技术的支持,学籍管理系统是教育机构管理学生信息的重要工具。
C语言是一种通用的高级编程语言,广泛应用于软件开发领域。
本文将介绍使用C语言开发学生学籍管理系统的基本原理和实现方法。
功能需求学生学籍管理系统主要包括以下功能:1.添加学生信息:包括学号、姓名、性别、年龄、班级等信息。
2.查询学生信息:根据学号或姓名查询学生的详细信息。
3.修改学生信息:允许对学生的基本信息进行修改。
4.删除学生信息:删除指定学号的学生信息。
5.统计学生信息:统计学生的数量、男女比例等信息。
系统设计学生学籍管理系统可以采用面向过程的设计方法,使用结构体来存储学生信息。
以下是系统的设计思路:1.定义学生结构体:学生结构体包含学号、姓名、性别、年龄、班级等字段。
2.添加学生信息:创建一个学生结构体数组,根据用户输入的信息添加学生信息到数组中。
3.查询学生信息:根据用户输入的学号或姓名,在学生结构体数组中查找并输出学生的详细信息。
4.修改学生信息:根据用户输入的学号或姓名,在学生结构体数组中找到对应的学生信息,并允许用户修改学生的基本信息。
5.删除学生信息:根据用户输入的学号或姓名,在学生结构体数组中查找并删除对应的学生信息。
6.统计学生信息:遍历学生结构体数组,统计学生的数量、男女比例等信息,并输出结果。
系统实现以下是学生学籍管理系统的基本代码实现:```c #include <stdio.h>#define MAX_STUDENTS 100// 定义学生结构体 typedef struct { int id; // 学号 char name[20]; // 姓名 char gender; // 性别 int age; // 年龄 char class[20]; // 班级 } Student;int main() { Student students[MAX_STUDENTS]; // 学生结构体数组 int count = 0; // 学生数量while (1) {int choice;printf(\。
XX学院计算机科学与技术系 实 验 报 告
课程名称 程序设计基础实验(2) 实验项目 应用系统的面向对象设计与分析 实验类型 综合性实验 完成人 所在班级 指导教师 完成日期 2009年11月 30日 1
实验报告正文 一.实验报告简表 实验课题名称 学籍管理系统 综合性实验项目 应用系统的面向对象设计与分析 服务课程 程序设计基础实验(2) 实验小组组长 指导教师 参与实验人员及其在实验课题中承担的主要任务(包括组长) 学 号 小组成员姓名 班 级 在实验课题中的主要作用
二.设计内容与要求 设计内容:设计基于文件结构的学籍管理系统 设计要求: (1)录入学生基本信息的功能界面 (2)修改学生基本信息的功能界面 (3)查询学生基本信息的功能界面 (4)删除学生基本信息的功能界面 2
三.总体设计,包括需求分析、功能描述、设计工具与运行环境、类及类间关系描述等
a、 Student.java:程序的入口。初始化主界面,使主界面位于屏幕中
间,且用户不能改变其大小。 b、 MainFrame.java:程序的主界面。由菜单、登陆界面和操作选项所
构成。其中菜单的“文件”中各操作项必须在登陆后方可选择,输入用户名和密码点击“进入”,提示登陆成功之后(用户名和密码在数据库的Admin表中,如果用户填的密码或用户名错误或没填都会产生相应的警告框),登陆界面消失,出现“添加信息”、“修改信息”、“信息查询”和“删除信息”四个按钮,且菜单中的操作项也被激活。点击要操作的按钮或菜单项,进入要操作的界面(窗口出现在屏幕左上角)。
c、 AddInf.java:添加信息界面。按照要求添入基本信息,如果用户
填错或没填,提示错误信息(如不能添加已经注册的学号)。填写完整后,点击“增加”按钮,将信息加入数据库的BaseInf表中。
d、 ChangeInf.java:修改信息界面。按照提示输入要修改信息的学生
学号,点击“下一步”(如果数据库无此学号,则提示“无此对应信息”),从数据库中将该学生的完整信息读出,用户修改之后点击“修改”即可。注意:为了防止意外,修改学生信息时,程序禁止了对学号的修改。(为了程序设计方便和代码重用,修改信息的代码是先删此该生所有信息,再将修改后的信息全部添加到数据库,这也是数据库修改的原理)
C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。
江西农业大学 学籍管理系统 一 、系统简介 设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作。 二、需求分析
学籍管理系统应该实现以下功能: 1、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。 2、能根据输入的学号查询学生,进行信息的修改。 3、能根据输入的学号从结构体数组中删除学生的记录。 4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。 江西农业大学
5、能在屏幕上以列表的方式输出所有学生的信息。 三、概要设计
1、系统功能 根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。系统功能机构图如下:
学生档案管理系统
输出学生信息
查询学生信息系
退出系统 删除学生信息 修改学生信息 录入学生信息
按学号查询 按班级 查询 江西农业大学
2、重要数据的数据结构设计 学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday分别代表学生的学号、专业、年级、性别和出生日期,其中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: //日 }; 3、函数设计 江西农业大学
学籍管理系统程序采用了结构化程序设计的思想,由1个.h头文件和3个C源文件组成。程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。以下是这些函数原型及功能设计。 (1)void sysinfo(void) 函数功能:在屏幕上输入系统及版权信息并等待用户响应。 (2)Void menuofmain(struct stumessage stu[]); 函数功能:在屏幕上显示主菜单,接收用户选择并响应用户相应操作。 (3)Void append(struct stumessage stu[]); 函数功能:录入一条学生记录数组的末尾。
(4)void modify(struct stumessage stu[]) 函数功能:通过输入学号查询学生相关信息,如果存在在屏幕上输出相应学生记录并通过重新输入学生信息的方法修改该学生的记录,否则输出没有找到相关记录。; (5)void Delet(struct stu Message stu[]) 函数功能:通过输入学号查询学生的相应记录信息,如果存在在屏幕上输出相应学生记录,用户确认删除后用DelList()否则输出没有找到相关记录。 (6)Void menuOfsear(struct stumessage stu[]); 函数功能:在屏幕上显示查询了主菜单,接受用户选择并响应用户操作。 江西农业大学
(7)void listall(struct stumessage stu[]); 函数功能:在屏幕上以列表的方式输出学生所有信息。调用printhead()输出表头,在调用listone()函数注意输出个条记录。 (8)void quit(void); 函数功能:退出菜单系统,并调用exit(0)系统函数结束程序运行。 (9)void stear num(struct stumessage stu[]); 函数功能:通过输入学号调用numofsear()函数查询学生的相应的记录信息,如果存在调用printhead()函数和listone()函数在屏幕上输出相应学生记录,否则输出没有找到相关记录。 (10)voidsteargrade(stuct stumessage stu[]); 函数功能:通过输入年级查询学生的相关记录信息,如果存在在屏幕以列表方式输出相应学生记录,并输出统计满足条件的学生个数,否则输出没有找到相关记录。 (11)int numofsear(struct stumessage stu[].char stunumber[]); 函数功能:根据接收到的学生学号,在相应记录数组中进行查询,如果存在相应记录,返加相应的数组下标,否则返回-1. (12)void printhead(void) 函数功能:在屏幕上显示输出列表的表头。 江西农业大学
(13)void list one(struct stumessage list); 函数功能:在屏幕上以行的形式显示输出一个学生的相关信息。 (14)int dellist(struct stumessage stu[], int i): 函数功能:如果数组中存在下标为i的记录,删除该记录并返回1,否则返回0.
4、小组成员分工 四、详细设计 1、系统主函数main()设计
组员1 Main():systeminfo();menuofmain();quit(); 组员2 Printhead();listone();listall(0;apend(); 组员3 Modify();delte();dellist(0;menuofstear();seranum();seargrade();numofsear();
开始 输出系统及版权信息 Sysinfo()
显示用户主菜单并响应 用户操作 Menuofmain() 江西农业大学
2、主菜单模块函数menuofmain()设计 接收用户选择 结束
开始 清屏 清屏 清屏
choose 录入学生信息 修改学生信息
删除学生信息 查询学生信息
输出学生信息
退出系统
非法操作
显示主菜单 江西农业大学
1 2 3 4 5 6 0 Y N 3、录入学生信息功能模块函数Append()设计
Y 清屏 录入一条记录
继续录入(Y/N) 接受用户选择
Length++
Con=='Y'或con=='Y' 江西农业大学
N 4、修改学生信息功能模块函数modify()设计 5、删除学生信息功能模块函数delete()设计
Y N N Y
清屏
删除成功 Length-- --
没有找到相关记录 输出第i条记录
输出表头
查询该学生记录,用i指向它 接收要删除的学号 记录存在
删除()Y/N 江西农业大学
Y N
6.查询菜单模块函数menuofsear()设计
1 2 0 其他 返回
接收用户的选择 --
清屏 --
显示查询菜单 --
choose 按学号查询
按年级查询
返回主菜单 非法操作 江西农业大学
Y N 7、按学号查询功能模块函数searnum()设计
N Y
Y N
清屏 --
接收查询学号--
i=0
i++ --
输入表头 -- 没有找到相关记录
输出第i条记录 --
I等于学号
Choose!=0 江西农业大学
8、按年级查询功能模块函数steargrade()设计 清屏 -- 接收查询年级 -- 输出表头
--
i=0,count=0 --
输入第i条记录 --
Count++ --
i ++ --
共找到n条记录
等于年级
Choose!=0
I