1、目 录一、设计目得2二、设计内容3三、设计要求4四、设计过程41.算法思想分析42.算法描述与实现5系统测试7五、设计总结11参考文献12附录3一 设计目得1 了解并掌握数据结构与算法得设计方法,具备初步得独立分析与设计能力;2. 初步掌握软件开发过程得问题分析、系统设计、程序编码、测试等基本方法与技能;3. 提高综合运用所学得理论知识与方法独立分析与解决问题得能力; 4、训练用系统得观点与软件开发一般规范进行软件开发,培养软件工作者所应具备得科学得工作方法与作风。二 设计内容、开发环境操作系统: Wino7开发工具:MicrosofVisal C+ 6、开发语言:C+2、功能简介:本程序采用
2、C+编写,用于管理学生信息,基本功能有 批量添加学生信息,单个添加学生信息,按学号查找学生,按姓名查找学生,按学号删除学生信息,排序输出全部学生信息以及退出功能.程序流程:开始选择功能按姓名查找按学号查找批量添加排序输出按学号删除添加信息结束三 设计要求1) 程序设计要求:采用交互工作方式,设计功能菜单;建立数据文件,数据包含学生得自然信息与成绩信息(设计几门课以及总成绩);对如下关键字:姓名、学号、各科成绩进行排序(冒泡、选择、插入排序等任选一种).) 用二分查找实现如下查询:按姓名查询 按学号查询 ) 用堆排序找出总成绩排名得前名学生4)输出任一查询结果(可以连续操作)四 设计过程1. 算
3、法思想分析根据设计要求,首先定义三个数组,分别存放学号、姓名、成绩、typedefsruct stud/学生信息结构 long n; harme2; flotsor; Stud; 然后编写函数,实现添加、查找、删除、排序、退出功能,对数组元素进行操作。2. 算法描述与实现添加信息:定义添加信息函数,将输入得信息添加到数组中:vod inser(lon ) Nod *last,urrent,*p; curent=ad; whie(rrn!=NULL&bcrrent-student、um)ascurren; current=currnne;查找学生:i seachname(char ) /按姓名查
4、找 ode phead; intflg=0; rt(n学号 姓名 成绩:n”); wile(p!=ULL) if(srcmp(tude、nae,)=) prntf(d %s %n”,p-stude、num,p-suet、ame,p-sdnt、core); fag=1;p=net; ontinue; else =pnext; if(!flag) prinf(没有找到相关信息”); vod find(log b) 按姓名查找 Nde *p=ad; we(p!=NUb!=p-udet、n)p=pnext;i(!p) printf(”o founn); es pintf(学号 姓名 成绩n);pitf
5、(”d s %fn,pstud、num,psudent、nae,-studnt、or); 输出信息:id pt() Node *p=head; pritf(n学号 姓名 成绩:); whl(!=ULL) prinf(”%d%s fn”,pstudnt、nm,pstdnt、nae,p-stden、score); =pn; intf(n”); 3、系统测试1. 菜单 用户运行程序后,显示如下所示菜单,用户根据菜单提示进行操作(如图、)。图2、1 、批量添加用户选择批量添加学生信息功能进行批量添加,可连续添加,按 0 结束添加操作(如图 、).图、3、按学号查找学生 将学生信息录入之后,若想查找某个
6、学生,用户可选择按学号查找学生信息(图、3).图、34. 按姓名查找学生将学生信息录入之后,若想查找某个学生,用户可选择按姓名查找学生信息(图2、)。图2、45. 添加信息用户可以在批量添加后在单个添加学生信息(图2、5)。图2、56. 按学号删除学生信息用户可根据情况对已添加得学生信息进行删除,通过学号删除(图2、)。图2、67. 排序输出程序可以将已添加得学生按照成绩得降序排列输出(图、)、图、78. 退出 操作结束后按 0退出程序(图2、)。图2、五 设计总结通过一周得课程设计,我从中受益匪浅,使得我对数据结构这门课有了更深一步得认识。在设计过程中,我们发现问题,解决问题,一同探讨问题,
7、在老师得帮助下把问题一一解决.在解决问题得过程中得到了成长,在与同学得合作过程中,我获益良多,提高了自己得团队合作能力与实际动手能力,在亲自动手得同时提升自己,锻炼自己。通过这次设计,我深深得感受到了做系统就是一件十分复杂周密得事情,不能有半点得疏忽,需要一个人有周密得思考能力,分析问题、处理问题得能力,还要有足够得耐心。参考文献数据结构程序设计题典 李春葆等编 清华大学出版社数据结构(C语言版) 黄国瑜 叶乃菁编 清华大学出版社数据结构课程设计 苏仕华 等编 机械工业出版社附录:源代码ncudesto、icludesrig、h ncudestdi、htypedef uct tud/学生信息结
8、构 g um; char name0; oat score;Stud; tdef stuctode Studstudent; trut ode next;Node; Nde *hea=NLL; oiread(id);vidinser(lng b); void pint(); vidfind(log b); void searcnae(char); Noe * el(lon n); void sort(nt flag); void menu();void ma() har chose; intlag=; while (ag) nu(); 调用功能菜单函数,显示菜单项。 rintf(” 请选择功能
9、:); choose=gtchar();itch(chos) ca 1: read(); /调用建立链表得函数;输出链表信息; print(); ritf(Press aykey Coniue ); gechr(); rea; case 2: /调用按学号查找学生信息得函数;并输出查找结果信息;logc;prin(”输入要查找得学号:”);scan(l”,&c); fin(); prnf(nPressay key Cntnu、); getar(); brak; cas 3: /调用按姓名查找学生信息得函数;并输出查找结果信息; has2; prntf(”输入要查找得姓名:”); canf(s,
10、); sarcnam(s); pitf(n rs an keyCntine、); etchar(); tchr(); break; cas4: /调用根据学号删除某个学生信息得函数;并输出删除后得链表信息; Node *h; long n; printf(”输入要删除得学生学号:); saf(%d”,&n); del(n); if(h=NUL) pintf(No fidthe stdent n); es pnt();pnf(nres ny key onn、”); getcha();getchar(); bek;cas:/调用插入新得学生信息得函数;并输出插入后得链表信息;lo a;prit(”
11、输入新学号:n);scanf(d,a);se();rn(); print(Press ny key Continu、); etcha(); gtchar(); brea;se : /调用按分数降序排序输出得函数;并输出排序后得链表信息; srt(1);prn();sort(0);printf(nPesany eyniue、);etchar(); getar(); brea;case0: /结束程序运行fla=0; rintf(n* hend! *n”); break; daut:rintf(n Wrog Seecton!(选择错误,重选)n”); gchar(); vimen() /综合作业功
12、能菜单 pintf(” n 学 生 信 息 管理系 统n”);prnf(” *菜 单*); print(” *nn);printf( 1、 批 量添 加 学生 信息 );prntf( 、 按 学 号 查 找 学 生信 息 *”); prntf( 、 按 姓 名 查 学 生 信息 ); printf(” 4、 按学 号删 除学 生 信 息 n); pintf( 、 录 入 新 得 学 生 信 息 ); pintf( 6、 按 分数 降序 排 序 输出 *n);printf(” -0、 返回-n”); print( * n”);id rad(v) loga; pntf(请输入学号:);sanf(%
13、l,&a);while(a0) nser(a); prinf(”请输入学号:”); scn(ld,a); voiinser(ong )Nlast,*curent,p;curen=hea; hile(rret!=NULL¤ttudn、nm) la=currnt; currentcuret-nt; if(cuen=NLLrentsudent、num) pin(”请输入姓名、分数:);p=(Noe )alc(sizeof(Nde);ptudnt、num=b; sanf(%sf,pstuden、nae,&pstudent、ore); p-ext=L; if(crret=hed) p-ex=
14、hed; headp; elep-next=curnt; lastnext=p; elsif(b=crrentudent、nu) prntf(”er inut differnt nmer:”); voidrint() Nodep=head;rf(n学号 姓名 成绩:); whil(!=NULL) printf(ld %s %fn,pstudnt、u,tudent、na,pstuden、score); pnx; rint(); vod fid(lo b) od *=head; whe(!=ULL!=ptunt、m)=-next;if(!)rintf(”No found); ele printf(
15、n学号 姓名 成绩n); pritf(”%ld%sn,pstude、num,p-student、am,-sudent、core); oi anae(char*s)Ne*pea; it flag=0;rinf(”n学号 姓名 成绩:n); wh(!=NUL) if(strcp(psudent、nme,s)=0) pit(d n,psudent、num,stut、name,pstudnt、cor);fla=1; p=pne;continu; lse =pne; if(!flag)prntf(没有找到相关信息”); Nde * dl(long ) *p=ead,*last; we(psdet、num
16、!n) lst=p; p-e; if(p=UL) ren p; if(p=hed) a=pnxt; elelat-nextnet; retrnhea; oid sort(int ag) ode*p1,*p2,k; floatt; lng t2; char s20; fo(p1head;p1ext;p1=p1-ext) k=p; for(p2=-net;p2;p2=p2-et)if(flag=1&kstudent、scopstude、core|!flag&kstuden、numpstdent、nm) k=p; if(k!1) t=p1studnt、scoe; p-sten、score=student、co; kt、scoe=t1;t1-stdent、num;ptudnt、nmk-sten、num; k-sudt、nmt2;try(s,pstudent、name); srpy(p1studt、name,k-student、name);srpy(kstuet、name,s);
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100