您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > c语言 学生信息管理系统linux下
一、本设计涉及的重要C语言知识有:1.单链表的各种操作2.文件流的操作3.单链表的排序二、本设计主要以下几个模块组成1.学生成绩添加模块2.学生成绩删除模块3.学生成绩修改模块4.学生成绩检索模块5.学生成绩显示模块(包括成绩排序)6.学生成绩保存模块效果图:本设计大概5、6百行代码左右,通过这个设计,本人感觉C语言熟练了很多,希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码!三、程序代码1.main.c这个文件内主要完成主菜单的跳转和接受用户信息完成到各个模块的跳转。[cpp]viewplaincopyprint?1.SPANstyle=FONT-SIZE:16px#includestdio.h2.#includestudents.h3.4.intselect_menu(void);5.voidhand_menu(intcmd,int*flag);6.voidquit();7.8.9.10.intmain(intargc,char*argv[])11.{12.intcmd;13.intflag=0;14.15.while(1){16.cmd=select_menu();17.hand_menu(cmd,&flag);18.}19.}20.21.intselect_menu(void)22.{23.intselect=0;24.printf(**************************************************************\n\n);25.printf(学生管理系统\n);26.printf(1:添加学生信息2:删除学生信息\n);27.printf(3:修改学生信息4:查询学生信息\n);28.printf(5:查看学生信息6:保存\n);29.printf(0:退出\n\n);30.printf(**************************************************************\n);31.printf(请选择:);32.33.select=getch();34.while(select'0'||select'6'){35.printf(\n输入错误,请重新选择:);36.select=getch();37.}38.returnselect;39.}40.41.voidhand_menu(intcmd,int*flag)42.{43.staticSTU*stu_head=NULL;44.if(*flag==0){45.stu_head=init_student(stu_head);46.*flag=1;47.}48.49.switch(cmd){50.case'0':51.save_student(stu_head);52.quit();53.break;54.case'1':55.system(cls);56.stu_head=add_student(stu_head);57.system(cls);58.break;59.case'2':60.system(cls);61.stu_head=del_student(stu_head);62.system(cls);63.break;64.case'3':65.system(cls);66.modify_student(stu_head);67.system(cls);68.break;69.case'4':70.system(cls);71.search_student(stu_head);72.system(cls);73.break;74.case'5':75.system(cls);76.stu_head=display_student(stu_head);77.system(cls);78.break;79.case'6':80.system(cls);81.save_student(stu_head);82.system(cls);83.break;84.default:85.break;86.}87.}88.89.voidquit()90.{91.printf(\n感谢使用学生管理系统!\n);92.exit(0);93.}94./SPAN2.students.h这个文件主要包含students.c文件函数操作所需的定义。[cpp]viewplaincopyprint?1.#ifndef_STUDENTS_H_2.#define_STUDENTS_H_3.4.typedefstructst{5.unsignedlongID;6.charname[10];7.floatchinese;8.floatmath;9.floatenglish;10.doubleall_sub;11.floataverage;12.structst*next;13.}STU;14.15.#defineASK_STU(p)do{p=(STU*)malloc(sizeof(STU));\16.if(p==NULL){printf(mallocmemoryfailed!\n);exit(1);}\17.}while(0)18.19.STU*search_by_nb(STU*stu_head,unsignedlongnb);20.STU*search_by_name(STU*stu_head,charname[]);21.STU*select_sort(STU*g,charflag);22.STU*add_student(STU*stu_head);23.STU*del_all(STU*stu_head);24.STU*del_one(STU*stu_head,intflag);25.STU*del_student(STU*stu_head);26.voidmodify_student(STU*stu_head);27.STU*display_student(STU*stu_head);28.STU*search_by_name(STU*stu_head,charname[]);29.STU*search_by_nb(STU*stu_head,unsignedlongnb);30.#endif3.store.h[cpp]viewplaincopyprint?1.#ifndef_STORE_H_2.#define_STORE_H_3.voidsave_student(STU*stu_head);4.STU*init_student(STU*stu_head);5.#endif4.students.c这个文件是本设计的核心部分,包括各个模块的实现函数,包括添加,删除,修改,查找,显示学生信息这几个模块的实现。[cpp]viewplaincopyprint?1.SPANstyle=FONT-SIZE:16px#includestdio.h2.#includestudents.h3.4.STU*select_sort(STU*g,charflag)5.{6.STU*p,*q,*t,*s,*h;7.8.h=(STU*)malloc(sizeof(STU));9.h-next=g;10.p=h;11.while(p-next-next!=NULL)12.{13.for(s=p,q=p-next;q-next!=NULL;q=q-next)14.{15.if(flag=='1')16.if(q-next-IDs-next-ID)17.s=q;18.19.if(flag=='2')20.if(q-next-chineses-next-chinese)21.s=q;22.23.if(flag=='3')24.if(q-next-maths-next-math)25.s=q;26.27.if(flag=='4')28.if(q-next-englishs-next-english)29.s=q;30.31.if(flag=='5')32.if(q-next-averages-next-average)33.s=q;34.}35.36.if(s!=q)37.{38.t=s-next;39.s-next=t-next;40.t-next=p-next;41.p-next=t;42.}43.p=p-next;44.}45.g=h-next;46.free(h);47.returng;48.}49.50.STU*add_student(STU*stu_head)51.{52.STU*stu;53.STU*head=stu_head;54.STU*node=stu_head;55.STU*node_fd;56.intsel;57.58.ASK_STU(stu);59.stu-next=NULL;60.61.printf(请输入学生学号:);62.scanf(%d,&stu-ID);63.64.while(search_by_nb(node,stu-ID)){65.printf(已经存在该学号!请重新输入一个学号:);66.scanf(%d,&stu-ID);67.}68.69.printf(请输入学生名字:);70.scanf(%s,stu-name);71.printf(请输入该学生英语成绩:);72.73.scanf(%f,&stu-english);74.while(stu-english0.0||stu-english100.0){75.printf(输入错误,请重新输入英语成绩:);76.scanf(%f,&stu-english);77.}78.printf(请输入该学生数学成绩:);79.scanf(%f,&stu-math);80.while(stu-math0.0||stu-math100.0){81.printf(输入错误,请重新输入数学成绩:);82.scanf(%f,&stu-math);83.}84.printf(请输入该学生语文成绩:);85.scanf(%f,&stu-chinese);86.while(stu-chinese0.0||stu-chinese100.0){87.printf(输入错误,请重新输入数学成绩:);88.scanf(%f,&stu-chinese);89.}90.91.stu-all_sub=stu-chinese+stu-math+stu-english;92.stu-average=stu-all_sub/3;93.94.if(!head){95.head=stu;96.returnhead;97.}98.99.while(node-next)100.node=node-next;101.102.node-next=stu;103.head=select_sort(head,'1');104.returnhead;105.}106.STU*del_all(STU*stu_head)107.{108.if(!stu_head)109.returnNULL;110.del_all(stu_head-next);111.free(stu_head);112.stu_head=NULL;113.returnNULL;114.}115.116.STU*del_one(STU*stu_head,intflag)117.{118.STU*node=stu_head;119.STU*head=stu_head;120.STU*pre;121.122.charname[10];123.unsignedlongID;124.125.if(head=NULL){126.printf(没有任何学生信息!\n);127.returnhead;128.}129.130.if(flag=='2'){131.pr
本文标题:c语言 学生信息管理系统linux下
链接地址:https://www.777doc.com/doc-3166839 .html