收藏 分销(赏)

学生信息管理系统源程序(正确).docx

上传人:丰**** 文档编号:10027086 上传时间:2025-04-18 格式:DOCX 页数:10 大小:21.65KB
下载 相关 举报
学生信息管理系统源程序(正确).docx_第1页
第1页 / 共10页
学生信息管理系统源程序(正确).docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述
#i nclude ” s tdio h”#include "stdlib.h,#inc lude ”strinh” int shoudsave=0; /* 对s truct S ud entc har num[10];/* 学号 * /char name [20]; char sex[4 ; tele; int i rthint a e; char addr[30]; );type def s tru ct nod e struct sude n t data struct node *next; }Node,*Link ; ** void me nu() printf(* ***** *** *** *************** ** ****” ); printf("\t 1登记学生资料\t\t\t\t\i删除学生资料\n"); p rintf”( \t 3查询学生资料\t\ \t\ \t4修改学生资料\n"); p ri ntf("\t保存学生资料\t\t\t\Nt0退出系统\n"); pr i n t f (”**** ********** * ******** ******** ***** **** **** **** ********* ***** * * * * *** * ******* * * \n" r ; void printstar(t )prin t f(”vo id Wrong()printf (”\n = ====〉提示:输入错误!\n”);void Nofind()p rintf( \n== = ==〉提示:没有找到该学生! \n"); } void p r i ntc () /*本函数用于输出中文*/ { print f('学号\t姓名性别\t 电话\t出生年月\t年龄\t地址\n "); } vo i d p rinte( No de *p )/*本函数用于输出英文,即输出结构体中各个成员的值, 注意是通过指向结构体的指针访问结构体的成员的数据域*/ { p r intf("%—1 0 s%s \ t % s\t %d \t % d\t % d\t %s\n”,pdata.num,p->datao n ame,p-〉data. sex, p—〉data. tele,p—〉data。birth, p-〉data.age,p-〉data . a ddr ); } Node * Lo cate(Link l, char find m ess[],char nameornum []) /* 该函数用于定位连表中符合要求的接点,并返回该指针*/ { Node *r; if (stc mp(na meo rnum,” num” )==0) /* 按学号查询 */ { r=l—〉next; while(r! = NUL L) { if(s rcm p( r—〉data。num,fin dmess) = = 0) ret urn r; r=r—〉next; } } elsei(strcmp ( nameo rnum,”n ame” )== 0) /* 按姓名查询 * / { r=l—〉next; wh ile(r!=NULL ) { i f(st rcm p (r〉data。name , f in dmes s)==0) return r; r=r->next; } } return 0; /}* * ***************************************************** void Add (Link l /* 增加学生 */ { Node *p,*r,*s; cha r num [10]; r=l; s=l〉nex t; while (—>next !=NUL L) r=r—〉next; /*将指针置于最末尾,通过循环指向最后一个结点* / while(l) { printf( ”请你输入学号(以,0’返回上一级菜单”); scanf ("%s”,num); if (strcmp(n um," 0” = = 0) break; wh i le(s) { if(strcp (s〉data.num, n um)= = 0 ) { print f(” ===== >提示:学号为’ % s’的学生已经存在,若要修改请你选择,4 修改'!\n",num); printsat rt(); printc(); printe(s;) printstart(;) pr i ntf('\n”); return; } s=s—〉next; } p=(Nod e *)ma l loc (sizeof (No d e)); s trcpy(p-〉data。num,n um ); pr i ntf(请你输入姓名:”); scan f("%s' , p—>d at a.name ); getchar(); printf ”请你输入性别:”); scanf (” %s",p—〉data。sex);/*输入数据到性别的dat a域中,注意字符数组 和普通变量* / g e tch a r(); printf”请你输入年龄:”); scanf( "%d" , &p —>d ataage); getchar (); pr i ntf(请你输入出生年月:”); scanf(”% d”,&p—〉dataobir th); getch ar(); p r intf(请你输入电话:”);scan f("% d”,&p ->data. te le);getchar() printf( ”请输入地址:”); s c anf ("%s",&p-〉data。addr);g e t char(); /*信息输入已经完成*/ p >n e xt=NULL; r —>next=p; r=p; shou dsave=l ; } } v oid Qur (L ink l) /* 查询学生 */ { i nt sei; char findmess[2 0]; N ode *p; i f ( l—>n ext) { printf ( \n=====〉提示:没有资料可以查询!\占); re turn; } p rintf”( \n== ===〉1 按学号查找\n=====〉2 按姓名查找\n” ); s can f ("%d ”,&sel); if S el==1)/*学号 */ { prin t f ("请你输入要查找的学号:”); scanf (” %s",fn dmess); p = Locate(l,ifndmess,"num"); if(p) { printf (”\t\t\t蜀找结果\n” ); printstart(); printc(); printe(p); printstart(); } eise No find(); } elseif(sel==2) / 姓名 * / { print"请你输入要查找的姓名:”); sca nf ( "%s”,fin山e s s); p = Locat e(l find mess, "nam e "); if(p) { printf”( \t\ \t\t查找结果\n"); pr i ntstart(); prin tc ); p rinte(p); p r intst art() } else No f ind () } else Wrong。; } void Del Link l) /* 删除 * / { int sei; No de *p, *r; char fid mess[20]; if (! —〉ne x t) { printf(” \n=====〉提示:没有资料可以删除!\n”);return; } printf(" \n== = ==〉1 按学号删除\n=====>2 按姓名删除\if ); scanf("%d”,& el); if(sel==1) { print ft请你输入要删除的学号:”。 scan f("% s”,f indm ess); p=Locate ( l,f indmes s ,”nunf ); if(p) { r=l; w hile(r-〉next!=p) r=r->next;/*r指针指向后一个结点*/ r—〉next=p—〉next;/删除p结点*/ free(p); printf("\n = ====〉提示:该学生已经成功删除!\n"); shou d save=1; } e Ise N ofind(); } e Ise if ei= =2) { pr intf(请你输入要删除的姓名:”); s can f("%s”,findme s); p=L oc ate ( l,f id me s s, "name”); if (p) { r=l; wh i le( r> next! =p ) r=r->n ext;/*r指针指向后一个结点*/ r—>next=p—〉next;/* 删除 p 结点*/ free(p );pr i ntf ("\n=====〉提示:该学生已经成功删除! \n” ); shoud save=1; } else No find(); } else Wrong (); } void Modify ( Lin k l) { Node *p; char f indme s s[20]; if(!l—〉next) { printf(” \n== = = =>提示:没有资料可以修改! \n"); return; } print ft请你输入要修改的学生学号:"); scanf (”%s”,find mess); p=Loc ate (l ,fi ndmess,”num"); if(p) { printf(”请你输入新学号:”); scanf("%s”,p —> data.num ); printf ("请你输入新姓名:”); scanf ("%s”,p-〉data。name ); g etchar (); printf请你输入新性别:”); s canf("% s”,p—〉data. sex); printf("请你输入新的年龄:"); sc anf (" %d”,&p—〉data. age); getchar ); printf("请你输入新的出生年月:”);scan f(”%d ",&p->da ta。b ir th); getchar(); printf( ”请你输入新的电话:”); scanf("%d”,&p-〉data。tele); printf”(请输入新的地址:"); scanf( "%s " ,&p —> data. te le); printf ” \n= = = = =〉提示:资料修改成功!虹"); shou dsave=1; } else Nofind (); } void D isp(Lirk l) { /*int c ount=0; */ Node *p; p=l—〉next; if!( p) { printf(”\n=====〉提示:没有资料可以显示!\n"); return } print f(" \t \t\\ t 显示结果\n” ); prints tart;) p ri ntc (); printf"( \n ” ;) while(p) { printe(p); p =p-> nex t; } print sta rt(); prin tf ( "\n "); } void T ongji(Lin k l) { Node *pm, *pe, *pc; /*用于指向分数最高的接点*/Nod e *r =l—>next; if(!r) { printf( \n = = = ==〉提示:没有资料可以统计! \n"); r eturn ; }pm=pe=pc=r; wh ile(r! =NULL) { if (r->dat a.ag e〉=p c —> d ataoage) pc=r; if(r-〉data。birth>=p m->d ata。b i rth)pm=r; i f (r-> dataot el> =pe -〉data。tele pe=r; r=r—> n ext; } } void Sort( Lin k l) { Link ll; No de *p,* rr,*s; l l=(Lin k)ma l loc(s izeo f (Node)) ; /*用于做新的连表 */l—>next=NULL; if (l—>n ext==NULL) { printf(”\n=====〉提示:没有资料可以排序!\n” ); return ; } p=l—> next; while(p) { s=(Node*)m alloc (size of(Node)) /* 新建接点用于保存信息 */s—>da ta=p-> data; s> next=NULL ; rr=ll; while (r r-> next!=NULL )rr = r r> next; if(r—〉next==NUL L) rr-> next=s; else { s-> next= rr->ne xt; rr—>next =s ; } p=p > next; } f ree(l;) l->next= ll> next; printf(” \n===== >提示:排序已经完成!\n”); } v oid Sav e(L ink l { FIL E* fp; Nod e *p; int f a g=1, co unt=0; fp= fopen (”c \Studen t”,Wb” ); if(pf ==NUL L) { printf(”\n===== >提示:重新打开文件时发生错误! \if );exit(1); } p= l—>next; while(p) { iff write ( p,size(f (N ode),1,fp)==1 { p=p->next; count++; } else { flag=0; break; } } if(fal g) {printf”\n=====〉提示:文件保存成功。(有%《条记录已经保存.)\n ,count)shou dsave= 0; }fclose(fp); } v oid m ain(){ L i nk ; /* 连表 * / FILE * fp;/*文件指针* / int sel;char ch;char ji an;int ccun t=0;N ode *p,*r;printf( \t\tt\ \ t学生信息管理系统\n\t\t\t-信息工程学院XX X\ n”); l= ( Nod e*)malloc(sizeof(N©d));l〉next=NULL;r=l; fp=fope n("C : \\studen t",” rb”);if (fp= =NUL L)/*判断文件是否存在*/ {printf(" \n=====〉提示:文件还不存在,是否创建?(y/n)\A );scan f(”%c ",&jian); if(jian==’y'anj==’Y)fp=fopen(”C\\std e n t ","wb ");elseexit(Q) } printf(”\n = ====〉提示:文件已经打开,正在导入记录。。.。。.\n");whi le(! f eof(fp)) {p=(Node*)ma lloc(s izeof(Node))if(fr ad(p, sizeof(Node), 1 fp)) /*将文件的内容放入接点中* /{ p—〉nex t=NULL;r—〉ne xt=p;r= p; /* 将该接点挂入连中*/count++; }}fclose(fp);/* 关闭文件 * / p r intf( "\n=====〉提示:记录导入完毕,共导入% d条记录。\n” , count); w hile(1) { menu (); p r intf (请你选择操作:”); scanf ("%d" &sel) if (sel==0) { if (s hou d save==1) { getchar(; printf(”\n=====〉提示:资料已经改动,是否将改动保存到文件中(y/n)? \n"); scanf('% c”,&ch); i f(ch==’y’||ch¥=') Save(l); } p rintf( "\n= ====〉提示:你已经退出系统,再见!\n” ); break; } swi tch(se) { case 1Add ( l);bie ak; /* 增加学生 */ case 2:Del(l break; /* 删除学生 */ case 3:Qur(l) ;break; /* 查询学生 */ case 4: Mo difyl );bre ak;/* 修改学生 */ case 5: Save (l) ; b rea k; /* 保存学生 */ case 9:pr intf>,( \t \t\ t========== 帮助信息====== ====\n” );brea k; defaul t: W rong(); getc har(); break; } } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服