C语言实现学生信息管理系统(单链表)
本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下
/*copyright(c)2016.烟台大学计算机学院 *Allrightsreserved, *文件名称:text.Cpp *作者:吴敬超 *完成日期:2016年7月1日 *版本号:codeblock * *问题描述:学生信息管理系统 *输入描述: *程序输出:输出结果 */ #include#include #include #include #include #defineLENsizeof(structStudent) structStudent{ charnum[100];//学号 charname[200];//姓名 charsex[100];//性别 intage;//年龄 charphone[120];//电话 charaddress[120];//地址 charbirthday[200];//生日 charmail[200];//邮件 structStudent*next; }; voidmenu(); voidstart(); voidwelcome(); charfilename[30];//全局变量,用来保存要打开的文件名字 structStudent*Creat(intn); //生成链表 structStudent*Creat(intn) { voidmenu_print_in(void); structStudent*head; structStudent*p1,*p2; system("cls"); for(inti=1;i num,p1->name,p1->sex, &p1->age,p1->phone,p1->address,p1->birthday,p1->mail); p1->next=NULL; if(i==1) { head=p2=p1; } else{ p2->next=p1; p2=p1; } } return(head); } //数据存盘(wb只写) voidWriteData_wb(structStudent*head){ FILE*fp; structStudent*p; if((fp=fopen(filename,"wb"))==NULL) printf("\a文件打开错误"); p=head; while(p!=NULL){ if(fwrite(p,LEN,1,fp)!=1){ printf("写入数据出错\n"); fclose(fp); return; } p=p->next; } fclose(fp); } //数据存盘(ab追加) voidWriteData_ab(structStudent*head) { FILE*fp; structStudent*p; if((fp=fopen(filename,"ab"))==NULL) printf("\a文件打开错误!"); p=head; while(p!=NULL){ if(fwrite(p,LEN,1,fp)!=1){ printf("写入数据出错\n"); fclose(fp); return; } p=p->next; } fclose(fp); } //读取数据文件保存到链表中,返回指向此链表头指针 structStudent*ReadData(void) { structStudent*head=NULL; structStudent*p1,*p2;//s=p1;p=p2; FILE*fp; if((fp=fopen(filename,"rb+"))==NULL) { printf("打开文件出错\n"); exit(0); } while(!feof(fp)){ if((p1=(structStudent*)malloc(LEN))==NULL){ printf("内存申请出错\n"); fclose(fp); exit(0); } if(fread(p1,LEN,1,fp)!=1){ free(p1); break; } if(head==NULL) head=p2=p1; else{ p2->next=p1; p2=p1; } } fclose(fp); return(head); } //全部查询 voiddisplay() { system("cls"); voidmenu_print_out(void); structStudent*p; p=ReadData(); menu_print_out(); do { printf("%-10s%6s%8s%4d%13s%11s%4s%4s",p->num,p->name,p->sex, p->age,p->phone,p->address,p->birthday,p->mail); p=p->next; printf("\n\n"); }while(p!=NULL); printf("\n\n"); } //学号查询 intquery_num() { system("cls"); voidmenu_print_out(); structStudent*p; charstr_num[10]; printf("请输入您要查询的学号:"); scanf("%s",str_num); p=ReadData(); menu_print_out(); do{ if(strcmp(p->num,str_num)==0){ printf("%-10s%6s%8s%4d%13s%11s%4s%4s",p->num,p->name,p->sex, p->age,p->phone,p->address,p->birthday,p->mail); printf("\n\n"); return0; } p=p->next; }while(p!=NULL); printf("数据库中没有存储您要查询的数据!\n"); printf("\n\n"); return0; } //姓名查询 intquery_name() { system("cls"); voidmenu_print_out(void); structStudent*p; charstr_name[20]; printf("请输入您要查询的姓名:"); scanf("%s",str_name); p=ReadData(); menu_print_out(); do{ if(strcmp(p->name,str_name)==0) { printf("%-8s%6s%8s%4d%13s%11s%4s%4s",p->num,p->name,p->sex, p->age,p->phone,p->address,p->birthday,p->mail); printf("\n\n"); return0; } p=p->next; }while(p!=NULL); printf("数据库中没有存储您要查询的数据!\n"); printf("\n\n"); return0; } //【1】修改数据之删除记录 intdelStudent() { structStudent*p1,*p2,*head; charstr_num[20]; printf("\n请输入您要删除的学号信息:"); scanf("%s",str_num); p1=ReadData(); p2=p1->next; head=p1; while(p2!=NULL) { if(strcmp(p1->num,str_num)==0){ WriteData_wb(p2); } elseif(strcmp(p2->num,str_num)==0){ p1->next=p2->next; WriteData_wb(head); } p2=p2->next; p1=p1->next; } if(p2!=NULL) printf("数据库中没有存储您要删除的数据!\n"); printf("\n\n"); return0; } //【2】修改数据之修改记录 intchange1() { voidmenu_print_in(void); structStudent*p1,*p2,*head; charstr_num[20]; printf("请输入您要修改的学号信息:"); scanf("%s",str_num); p1=ReadData(); p2=p1->next; head=p1; while(p2!=NULL) { if(strcmp(p1->num,str_num)==0){ menu_print_in(); scanf("%s%s%s%d%s%s%s%s",p1->num,p1->name,p1->sex, &p1->age,p1->phone,p1->address,p1->birthday,p1->mail); WriteData_wb(head); } elseif(strcmp(p2->num,str_num)==0) { menu_print_in(); scanf("%s%s%s%d%s%s%s%s",p2->num,p2->name,p2->sex, &p2->age,p2->phone,p2->address,p2->birthday,p2->mail); WriteData_wb(head); } p2=p2->next; p1=p1->next; } if(p2!=NULL) printf("数据库中没有存储您要删除的数据!\n"); return0; } voidstart()//欢迎界面 { system("color1E"); printf("\n\n\n\n\n\n\n\n\n\t\t\t⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("\t\t\t⊙⊙\n"); printf("\t\t\t⊙欢迎使用学生信息管理系统⊙\n"); printf("\t\t\t⊙⊙\n"); printf("\t\t\t⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙⊙\n"); printf("\n\t\t\t\t系统开始启动.........\n"); printf("===============================================================================\r"); for(inti=1;i<80;i++) { Sleep(40); printf(">"); } system("CLS"); welcome(); } voidwelcome()//登录界面 { system("CLS"); system("color2"); printf("\n\n\n\n\n\n\t\t\t★★★★★★★★★★★★★★★★\n"); printf("\t\t\t★★\n"); printf("\t\t\t★欢迎使用学生信息管理系统★\n"); printf("\t\t\t★★\n"); printf("\t\t\t★设计者:吴敬超★\n"); printf("\t\t\t★★\n"); printf("\t\t\t★日期:2016.7.1★\n"); printf("\t\t\t★★\n"); printf("\t\t\t★★★★★★★★★★★★★★★★\n"); printf("\n\t\t\t按任意键继续..."); getchar(); system("CLS"); menu(); } //主菜单 voidmenu() { voidaddStudent(); voidquery(); intFile_name(); voidchange(); system("CLS"); system("colorD"); printf("\t\t\t★★★★★★主菜单※※※※※\n"); printf("\n\n\n\n\n\t\t\t※※※※※※※※※※※※※※\n"); printf("\t\t\t※※\n"); printf("\t\t\t※1.录入学生信息※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※2.查询学生信息※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※3.修改学生信息※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※4.退出系统※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※※※※※※※※※※※※※※\n"); printf("\n\t\t请输入功能前的序号选择服务项目:"); inta=0; a=getchar(); while(a!='1'&&a!='2'&&a!='3'&&a!='4'){ printf("错误,请输入正确的号码!\n"); putchar('\a'); getchar(); printf("\n\t\t请输入功能前的序号选择服务项目:"); a=getchar(); } switch(a){ case'1':File_name();addStudent(); break; case'2':File_name();query(); break; case'3':File_name();change(); break; case'4':exit(0); break; } getchar(); } intFile_name() { printf("\n\t\t请输入您要打开的文件:"); if(scanf("%s",filename)!=1) printf("\aerror!"); return0; } //二级菜单之添加数据 voidaddStudent() { intCreat_num(); system("cls"); getchar(); system("CLS"); system("colorB"); printf("\t\t\t★★★★★★添加数据※※※※※\n"); printf("\n\n\n\n\n\t\t\t※※※※※※※※※※※※※\n"); printf("\t\t\t※※\n"); printf("\t\t\t※1.新建文件※\n"); printf("\t\t\t※----------------------※\n"); printf("\t\t\t※2.增添数据※\n"); printf("\t\t\t※----------------------※\n"); printf("\t\t\t※3.返回菜单※\n"); printf("\t\t\t※----------------------※\n"); printf("\t\t\t※※※※※※※※※※※※※\n"); printf("\n\t\t请输入功能前的序号选择服务项目:"); inta=0; a=getchar(); while(a!='1'&&a!='2'&&a!='3') { printf("错误,请输入正确的号码!\n"); putchar('\a'); getchar(); printf("\n\t\t请输入功能前的序号选择服务项目:"); a=getchar(); } switch(a){ case'1':WriteData_wb(Creat(Creat_num())); printf("\n新建文件成功且数据已成功保存\n"); system("pause"); system("cls"); addStudent(); break; case'2':WriteData_ab(Creat(Creat_num())); printf("\n数据已成功添加\n"); system("pause"); system("cls"); addStudent(); break; case'3':system("cls"); getchar(); menu(); break; } } //二级菜单之查询数据 voidquery() { system("cls"); getchar(); while(1) { system("CLS"); system("colorC"); printf("\t\t\t★★★★★查询数据※※※※※\n"); printf("\n\n\n\n\n\t\t\t※※※※※※※※※※※※※※\n"); printf("\t\t\t※※\n"); printf("\t\t\t※1.全部查询※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※2.学号查询※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※3.姓名查询※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※4.返回菜单※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※※※※※※※※※※※※※※\n"); printf("\n\t\t请输入功能前的序号选择服务项目:"); inta=0; a=getchar(); while(a!='1'&&a!='2'&&a!='3'&&a!='4') { printf("错误,请输入正确的号码!\n"); putchar('\a'); getchar(); printf("\n\t\t请输入功能前的序号选择服务项目:"); a=getchar(); } switch(a){ case'1':display();system("pause");getchar(); break; case'2':query_num();system("pause");getchar(); break; case'3':query_name();system("pause");getchar(); break; case'4':system("cls");getchar();menu(); break; } } } intCreat_num(){ printf("\n\t\t请输入您要添加的数据个数:"); intn; if(scanf("%d",&n)!=1){ printf("\aerror!"); } returnn; } //二级菜单之修改数据/ voidchange() { system("cls"); getchar(); while(1) { system("CLS"); system("colorA"); printf("\t\t\t★★★★★★修改数据※※※※※\n"); printf("\n\n\n\n\n\t\t\t※※※※※※※※※※※※※※\n"); printf("\t\t\t※※\n"); printf("\t\t\t※1.删除记录※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※2.修改记录※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※3.返回菜单※\n"); printf("\t\t\t※------------------------※\n"); printf("\t\t\t※※※※※※※※※※※※※※\n"); printf("\n\t\t请输入功能前的序号选择服务项目:"); inta=0; a=getchar(); while(a!='1'&&a!='2'&&a!='3') { printf("错误,请输入正确的号码!\n"); putchar('\a'); getchar(); printf("\n\t\t请输入功能前的序号选择服务项目:"); a=getchar(); } switch(a){ case'1':delStudent(); printf("\n\n已成功删除指定数据\n"); system("pause"); getchar(); break; case'2':change1(); printf("\n\n已成功修改指定数据\n"); system("pause"); getchar(); break; case'3':system("cls"); getchar(); menu(); break; } } } //输入输出提示栏 voidmenu_print_in(){ printf("------------------------------------------------------------------------\n"); printf("学号姓名性别年龄电话地址生日邮件\n"); printf("------------------------------------------------------------------------\n"); } voidmenu_print_out(void){ printf("--------------------------------------------------------------------------\n"); printf("学号姓名性别年龄电话地址生日邮件\n"); printf("--------------------------------------------------------------------------\n"); } //主函数 intmain() { start(); return0; }
更多学习资料请关注专题《管理系统开发》。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。