欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年南航C语言_课设 .pdf

    • 资源ID:35309920       资源大小:642.21KB        全文页数:11页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年南航C语言_课设 .pdf

    、程序简介 : 程序名称 :学生成绩简单管理程序二(Student Score Manager)程序功能:程序主要功能是用于学生成绩的管理,可以帮助统计人员对学生成绩进行简单的管理,程序包括: 10 个菜单项,其中9 个管理项、 1 个为退出程序项。菜单项包括:一名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 1. Create List:按学生姓名汉语拼音顺序建立有序列表。2. Display All Record:在屏幕上显示列表记录。3. Insert a Record:向已建立的有序列表中按序添加记录。4. Delete a Record:在有序列表中查找并删除记录。5. Query:给出学生姓名,在有序列表中查找相关记录并在屏幕上显示该记录。6. Add Records from a Text File:从文本文档输入学生记录并按序插入已有列表。7. Write to a Text File:将列表写入指定位置的文档。8. Reverse List:将现有列表按逆序存放。9. Delete the Same Record:删除列表中相同姓名的记录。0. Quit:退出程序。、题目分析及心得感想题目分析 :该程序要求9 个子程序项,分别实现9 个不同的操作。分析后知:需建立14 个函数才能实现。函数的具体解析请参见第三部分的源文件中。编程中所遇到问题及解决:(1)在程序刚写完时,找出所有错误后,运行程序,但不能完美执行程序的第一项功能:即在进入 1.Create List 程序项后,一次只能输入一个学生的信息。一旦输入一次后,自动调回到主选单(如上图所示)分析后发现:printf(Do You Want To Continue To Input?(Y/N)n) ;scanf(%s, a);while( strcmp (a,Y)!=0& strcmp ( a,N)!=0)其中的 a在函数的开头已被定义,且自己下意识的将其赋值为:a=Y由于这个错误,使a 成为了一个该函数中的一个全局变量,而后的对a的输入赋值对其不起任何作用,于是导致了我设计的程序不能循环输入学生成绩。发现后,我果断将起赋值处给删去,程序完美运行了。(2)在写 Insert 函数时,暴露出我写程序时的思想的不全面性。如下:在Insert 函数的编写中,对于插入节点的情况分析欠缺。没有完全考虑到:链表是空链表时情况,链表插入节点在链表的头、链表插入节点在链表的尾等情况。而后通过于同学讨论,相互帮助,让我想通了所有可能的情况,最后还是成功编写出了。编程心得体会:(1)在编写课程设计之前,可以这样说, 对 C 语言的学习对C 语言这门学科的整体把握还是不强!但在课程设计中,各函数的说明,函数的调用,函数的编写,让我真正明白了 C 语言这门学科,其实是很强的一门学科,它训练我们的思维缜密,训练我对新事物的领悟能力。(2)在课程设计中,让我明白了:也许书上的一个小小的知识点,在实际的编程中还是非常重要的,比如:全局变量的定义,各种循环(dowhile, for , while )以及函数的嵌套调用等到等等的实现都非常重要!(3)课程设计我觉得是对书本上所学知识的一个实际运用,在书本上的知识都是死的,只有活学活用才能成功。课程设计的过程非常辛苦,但也非常充实, 它让我复习了课上所学的知识,锻炼了编程的思维。也为 C 语言的最终考试做了准备。新增功能:(1)Reverse List:将现有列表按逆序存放:首先判断链表是否为空,再判断是否为单节点, 或为双节点, 若为两个节点以上, 则定义三个Student指针来循环逆序存放节点,返回头指针。(2)Delete the Same Record:删除列表中相同姓名的记录:首先判断链表是否为空,再判断是否为单节点。若为两节点以上链表则运用两个Student 指针循环比较是否有两个相同的节点,若有则调用Delete 函数删除其中一个,若无返回头指针。、源文件及函数说明#include #include #include #include 二三名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - #include struct stud /*定义结构体 */ char Name20; int Score; struct stud*next; ; typedef struct stud Student; /* 定义结构体stud 替代为 Student * / int menu_select(); Student *Create(void); /* 从键盘输入若干条记录,调用 Insert 函数建立以学生姓名为序的单向链表,返回链表头指针* / void Display(Student *head); /* 显示所有学生的姓名和成绩,每10 条一页,并暂停一下*/ Student *Insert(Student *head,Student *p0); /*按学生姓名序记录s 插入链表 head,返回链表头指针 */ Student *Insert_a_Record(Student *head); /* 输入待插入的学生姓名、成绩,调用Insert函数按姓名作有序插入,输出插入成功信息,返回链表头指针* / Student *Delete(Student *head,char *name); /*删除姓名为name的记录,输出成功与否的信息。返回链表头指针* / Student *Delete_a_Record(Student *head); /*输入待删除的学生记录的姓名,经确认后调用 Delete 函数删除该姓名记录,返回链表头指针 */Student *Query(Student *head,char *name); /*查找学生姓名为name的记录,查找成功返回该节点地址;否则,返回空指针* / void Query_a_Record(Student *head); /*输入待查找的学生记录的姓名,调用Query函数查找该姓名的记录,输出查找成功与否的信息和节点信息* / Student *AddfromText(Student *head,char *fileame); /*从文件 filename 添加一批记录到链表中,调用 Insert 函数作有序插入,并显示成功输入的记录, 并返回头指针 */void WritetoText(Student *head,char *fileame); /*将链表中的节点记录全部写入使用者想输入的文件中*/ Student *Reverse(Student *); /*将现有的链表记录逆序存放,返回逆序后的链表头指针* / Student *Delete_Same(Student *); /* 删除链表中姓名形同的记录,返回链表头指针*/ void Quit(Student *head); /*释放链表的动态空间,退出程序* / int n=0; main() Student *head=NULL; while(1) /*菜单选择 */ char filename20; switch(menu_select() case 1:printf(Execution of Create Listn); /* 菜单项 1. Create List* / head=Create(); system(pause); break; case 2:printf(Execution of Display All Recordn); /* 菜单项 2. Display All Record */ Display(head); system(pause); break; case 3:printf(Execution of Insert a Recordn); /* 菜单项 3. Insert a Record * / head=Insert_a_Record(head); system(pause); break; case 4:printf(Execution of Delete a Recordn); /* 菜单项 4. Delete a Record */ head=Delete_a_Record(head); system(pause); break; case 5:printf(Execution of Queryn); /* 菜单项 5. Query */ Query_a_Record(head); system(pause); break; case 6:printf(Execution of Add Records from a Text Filen); /*菜单项 6. Add Records from a Text File */ printf(Please Input The Name Of The Text File!n); gets(filename); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - AddfromText(head,filename); system(pause); break; case 7:printf(Execution of Write to a Text Filen); /* 菜单项 7. Write to a Text File */ printf(Please Input The Name Of The Text That You Want To Outputn); gets(filename); WritetoText(head,filename); system(pause); break; case 8: printf(Reverse List:n); /* 菜单项 8. Reverse List * / head=Reverse(head); system(pause); break; case 9: printf(Delete the Same Recordn); /* 菜单项 9. Delete the Same Record */ head=Delete_Same(head); system(pause); break; case 0:printf(Execution of Quitn); /* 菜单项 0. Quit * / Quit(head); system(pause); exit(0); int menu_select() /*菜单选择函数 * / int c; dosystem(cls); printf(+WELCOME TO TC PROGRAME+n); printf( Programe Maker:ZHJ 060930118n); printf(1.Create Listn); printf(2.Display All Recordn); printf(3.Insert A Recordn); printf(4.Delete A Recordn); printf(5.Queryn); printf(6.Add Records From A Texl Filen); printf(7.Write To A Texl Filen); printf(8.Reverse Listn); printf(9.Delete The Same Recordn); printf(0.Quitn:); printf(+n); printf(Please Choice And Input 07:n); scanf(%d,&c); while(c9); return(c); /*返回菜单选择的输入序号*/ Student *Create() /* 创建链表函数,函数返回链表头指针* / Student *head,*s; char a20; head=NULL; printf(Now Create An Increasing List:nn); do /*询问用户循环输入学生成绩*/ printf(Input An Students Name:n); s=(Student *)malloc(sizeof(Student); scanf(%s,s-Name); printf(And Then Input The Students Score n); scanf(%d,&s-Score); head=Insert(head,s); printf(Do You Want To Continue To Input?(Y/N)n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - scanf(%s,a); while(strcmp(a,Y)!=0&strcmp(a,N)!=0) printf(Y/N); scanf(%s,a); while(strcmp(a,Y)=0); return(head); /*返回头指针 */ void Display(Student *head) /* 屏幕输出所有节点函数* / Student *p; int i=0; p=head; if(head=NULL) printf(This List is NULL!n); /*链表为空链表时情况*/ while(p!=NULL) printf(ntttDisplay All Records:n+n); Do /*链表不为空时,循环输出所有节点内容*/ printf(%st%dn,p-Name,p-Score); p=p-next; i+; if(i%10=0&p!=NULL) /* 控制 10行每页,每输出10 行暂停 */ system(pause); system(cls); while(p!=NULL); printf(+n); Student *Insert(Student *head,Student *p0) /* 有序插入函数,函数返回链表头指针*/ Student *p1,*p2; if(head=NULL) /*链表为空链表时情况*/ head=p0;p0-next=NULL;return(head); p1=head; while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL) /*寻找插入点 * / p2=p1;p1=p1-next; if(strcmp(p0-Name,p1-Name)next=p0; p0-next=p1; else p1-next=p0;p0-next=NULL; /*插入位置为末节点* / return(head); Student *Insert_a_Record(Student *head) /*插入一项新输入学生数据*/ Student *q; printf(Please Input The Name Of The Student!n); q=(Student *)malloc(sizeof(Student); scanf(%s,q-Name); printf(And Then Please Input The Score Of The Student!n); scanf(%d,&q-Score); head=Insert(head,q); /*调用 Insert 函数 */ printf(+n); printf(ttThe Record Insert successfully!n); printf(+n); return(head); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - Student *Delete(Student *head,char *name) /*条件删除节点函数,函数返回链表头指针*/ Student *p3,*p4; if(head=NULL) printf(This List is Null !(Fail.)n); return(head); p3=head; while(p3-next!=NULL&strcmp(p3-Name,name)!=0) /* 寻找要删除节点 * / p4=p3; p3=p3-next; if(strcmp(p3-Name,name)=0) /* 判断要删除节点 */ if(p3=head) head=p3-next; else p4-next=p3-next; printf(+n); printf(The Record Which You Have Input:NAME:%sttSCORE:%dt Is Deleted!n,p3-Name,p3-Score); printf(+n); free(p3); else printf(+n); printf(The Record Which You Have Input:NAME:%sttSCORE:%dt Is Not Found And Delete!n,name); printf(+n); return(head); Student *Delete_a_Record(Student *head) /*删除一项纪录函数, 函数返回链表头指针*/ char t,name20; printf(Please Input A Records Name That You Want To Delete:n); scanf(%s,name); printf(Do You Really Want To Delete This Record(Y/N):); do t=getchar(); while(t!=Y&t!=N&t!=y&t!=n); if(t=N|t=n) printf(Record is not delete!); system(pause);return(head); head=Delete(head,name); /*调用条件删除节点函数Delete删除记录 */return(head); Student *Query(Student *head,char *name) /* 条件查找函数,函数返回查找到节点指针,否则返回空指针 * / if(head=NULL) printf(This List is Null!n); return(NULL); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - while(head-next!=NULL&strcmp(head-Name,name)!=0) head=head-next; if(strcmp(head-Name,name)=0) return(head); else return(NULL); void Query_a_Record(Student *head) /* 查找一项纪录函数并显示*/ char name20; Student *s; printf(Input A Name Of The Student That You Want To Find:n); scanf(%s,name); s=Query(head,name); /*调用 Query 函数来实现 */ if(s=NULL) printf(The Record of %s is not found.n,name); else printf(The Record of %s is found:n,name); printf(TName:%sttScore:%dn,s-Name,s-Score); Student *AddfromText(Student *head,char *filename) /*从文件输入记录函数,函数返回链表头指针* / FILE *fp; int i,n; Student *p; printf(Please input the filename:n); scanf(%s,filename); /*让用户自主输入想读入文件的文件名*/ fp=fopen(filename,r); /*打开文件 */ if(fp=NULL) printf(The file can not be found.n); return(head); fscanf(fp,%d,&n); /*输入文件中包含的学生数据*/ for(i=0;iName,&p-Score); head=Insert(head,p); fclose(fp); /*关闭文件 */ printf(Add successfully!n); return(head); void WritetoText(Student *head,char *filename) /* 将数据写入文件函数*/ FILE *fp; Student *p; p=head; if(head=NULL) printf(Empty list.n); else printf(Please input the filename:n); scanf(%s,filename); /*让用户输入想写入的文件的文件名*/ fp=fopen(filename,w); /*打开只写文件 */ if(fp=NULL) printf(The file can not be found.n); else while(p!=NULL) fprintf(fp,%s%dn,p-Name,p-Score); p=p-next; fclose(fp); /*关闭文件 */ printf(Write successfully!n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - Student *Reverse(Student *head ) /* 记录逆序存放函数,函数返回链表头指针* / Student *p1,*p2,*p3; /*定义 3 个局部 Student指针 */ if(head=NULL) printf(List is NULLn); /*判断节点是否为空* / return(head); if(head-next=NULL) /*判断是否只有一节点*/ printf(List Has Only One Record!tReverse Fail!n); return(head); p1=head-next; if(p1-next=NULL) /*判断是否只有两个节点* / p1-next=head; head-next=NULL; head=p1; printf(This List Is Reversed Successfully!n); return(head); p2=p1-next; /*节点数为三或三以上时*/ p3=head; while(p1-next!=NULL) p1-next=p3; p3=p1; p1=p2; p2=p2-next; p1-next=p3; head-next=NULL; head=p1; printf(+n); printf(ttThis List Is Reversed Successfully!n); printf(+n); return(head); Student *Delete_Same(Student *head) /*删除重名记录函数,函数返回链表头指针*/ Student *p1,*p2; char s20; if(head=NULL) /*判断节点是否为空* / printf(List Is NULL!n); return(head); if(head-next=NULL) /* 判断是否只有一节点*/ printf(List Has Only One Record!n); return(head); p1=head; /*节点数为二或二以上时*/ p2=p1-next; while(p2!=NULL) if(strcmp(p1-Name,p2-Name)=0) strcpy(s,p2-Name); head=Delete(head,s); /* 调用 Delete 函数实现相同记录的删除*/ printf(The same record %s is deleted!n,s); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - p1=p2; p2=p1-next; else p1=p2;p2=p2-next; return(head); void Quit(Student *head) /*释放链表函数退出程序 * / char d; printf(+n); printf(tttDo You Really Want To Quit?(Y/N)n); printf(+n); scanf(%c,&d); if(d=Y) free(head); 四、 函数调用关系图程序中主要算法的实现:Reverse List:将现有列表按逆序存放:首先判断链表是否为空,再判断是否为单节点,或为双节点,若为两个节点以上,则定义三个Student 指针来循环逆序存放节点,返回头指针。、测试设计流程一、进入程序:二、输入 1 进入 Create List 功能:五main Display Insert _a_Record Delete_a_Record Create Query_a_Record AddfromText WritetoText Reverse Delete_Same QuitInsert Insert Delete Query Insert Delete 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 三、返回后输入2 进入 Display All Record 功能:四、插入一个学生情况数据(输入学生姓名以及分数)五、删除一个学生情况数据(输入学生姓名)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 六、给出学生姓名,在有序列表中查找相关记录并在屏幕上显七、从文本文档输入学生记录并按序插入已有列表。八、将列表写入指定位置的文档。九、 Reverse List:将现有列表按逆序存放。十、 Delete the Same Record:删除列表中相同姓名的记录。十一、Quit:退出程序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

    注意事项

    本文(2022年南航C语言_课设 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开