综合百科

使用C语言编译一个学生信息管理系统

本篇文章给大家分享的是有关使用C语言编译一个学生信息管理系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

具体内容如下

/*运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls"))(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:1.系统以菜单方式工作2.学生信息录入功能(学生信息用文件保存)---输入3.学生信息浏览功能——输出4.查询、排序功能——算法1、按学号查询2、按姓名查询5.学生信息的删除与修改(可选项)(2)功能要求1.界面简单明了;2.有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;3.最好用链表的方式实现*//*界面:-------------学生信息管理系统---------------1.学生信息录入2.学生信息浏览3.学生信息查询1.按学号查询2.按姓名查询4.学生信息的删除与修改--------------------------------------------*/#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<unistd.h>structstudent_info{ints_no;charname[20];intage;charsex[10];intbirth;charaddr[30];chartele[30];charemail[30];structstudent_info*next;};voidmenue(void);intinfo_input(void);intinfo_review(void);intinfo_search(void);intmain(void){menue();return0;}voidmenue(void){intchoose;system("clear");printf("-------------学生信息管理系统---------------\n");printf("\t\t1.学生信息录入\n");printf("\t\t2.学生信息浏览\n");printf("\t\t3.学生信息查询\n");printf("\t\t4.学生信息的删除与修改\n");printf("\t\t0.退出系统\n");printf("--------------------------------------------\n");printf("请输入您的选择(0~~4):");scanf("%d",&choose);switch(choose){case0:exit(0);break;case1:info_input();break;case2:info_review();break;case3:info_search();break;}while(choose>4||choose<1){printf("您输入了一个无效的选择,请重新输入(0-4):");scanf("%d",&choose);}}/*ssize_tread(intfd,void*buf,size_tcount);ssize_twrite(intfd,constvoid*buf,size_tcount);intopen(constchar*pathname,intflags,mode_tmode);FILE*fopen(constchar*path,constchar*mode);size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream);*/intcreat_list(void){return0;}//1.学生信息录入intinfo_input(void){structstudent_info*head=NULL,*rear=NULL;FILE*fp;intflag=1;head=(structstudent_info*)malloc(sizeof(structstudent_info));rear=head;while(flag){structstudent_info*stu=NULL;stu=(structstudent_info*)malloc(sizeof(structstudent_info));//FILE*fopen(constchar*path,constchar*mode);fp=fopen("stuinfo.txt","a+b");fseek(fp,sizeof(structstudent_info),2);system("clear");printf("-----请依次输入学生的信息-----\n");printf("学号:");scanf("%d",&stu->s_no);printf("姓名:");scanf("%s",stu->name);printf("年龄:");scanf("%d",&stu->age);printf("性别:");scanf("%s",stu->sex);printf("出生年月:");scanf("%d",&stu->birth);printf("地址:");scanf("%s",stu->addr);printf("电话:");scanf("%s",stu->tele);printf("E-mail:");scanf("%s",stu->email);fwrite(stu,sizeof(structstudent_info),1,fp);rear->next=stu;rear=stu;fclose(fp);printf("继续输入请按1,返回上一级菜单请按2,退出请按0:");scanf("%d",&flag);if(flag==0){exit(0);}if(flag==1){continue;}if(flag==2){menue();break;}}rear->next=NULL;return0;}//2.学生信息浏览//size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);intinfo_review(void){structstudent_infostu;intret=1;intflag=0;FILE*fp=fopen("stuinfo.txt","rb");//intfd=open("stuinfo.txt",O_RDONLY);if(fp==NULL){perror("fopen");exit(0);}while(ret!=0){/*返回值为1时表示读取的字节数不足sizeof(structstudent_info),返回0表示读取成功*//**/ret=fread(&stu,sizeof(structstudent_info),1,fp);//read(fd,stdout,sizeof(structstudent_info));printf("------------------------------------------------------------------------------------------------------\n");printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n",stu.s_no,stu.name,stu.age,stu.sex,stu.birth,stu.addr,stu.tele,stu.email);}fclose(fp);printf("=====================^-^=========================================^-^==================\n");printf("退出请按0,返回上一级菜单请按1:");scanf("%d",&flag);if(flag==0){exit(0);}if(flag==1){menue();exit(0);}return0;}//学生信息查询intinfo_search(void){system("clear");structstudent_info*stu1=NULL,*stu2=NULL;stu1=(structstudent_info*)malloc(sizeof(structstudent_info));stu2=(structstudent_info*)malloc(sizeof(structstudent_info));intret=1,i=0,flag=1;FILE*fp=fopen("stuinfo.txt","rb");printf("=====按姓名查询请输入1,按学号查询请输入2=====\n");scanf("%d",&i);while(flag){if(i==1){printf("请输入学生的姓名:");scanf("%s",stu1->name);do{if(ret==0){printf("没有这个人哦^*^\n");exit(0);}ret=fread(stu2,sizeof(structstudent_info),1,fp);}while(strcmp(stu1->name,stu2->name));printf("您要找的人信息如下:\n");printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n",stu2->s_no,stu2->name,stu2->age,stu2->sex,stu2->birth,stu2->addr,stu2->tele,stu2->email);}if(i==2){printf("请输入学生的学号:");scanf("%d",stu1->s_no);do{if(ret==0){printf("没有这个人哦^*^\n");exit(0);}ret=fread(stu2,sizeof(structstudent_info),1,fp);}while(stu2->s_no!=stu1->s_no);printf("您要找的人信息如下:\n");printf("%d\t%s\t%d\t%s\t%d\t%s\t%s\t%s\n",stu2->s_no,stu2->name,stu2->age,stu2->sex,stu2->birth,stu2->addr,stu2->tele,stu2->email);}printf("=====继续查询请按1,返回上一级菜单请按2=====\n");scanf("%d",&flag);if(flag==1)continue;if(flag==2){menue();break;}}return0;}//学生信息删除intinfo_delete(void){}//学生信息修改intinfo_alter(void){}

还有部分功能未完成,下次再写吧(写的有点烦-_-)
程序截图: