合肥学院C语言课程设计报告_第1页
合肥学院C语言课程设计报告_第2页
合肥学院C语言课程设计报告_第3页
合肥学院C语言课程设计报告_第4页
合肥学院C语言课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、输入学生的信息2、读取磁 盘文件4、添加5、修改并存盘6、筛选成绩7、退出程序一、需求分析:本程序设计的名称是学生成绩信息记录簿的设计,设计内容是设计一 个学生成绩记录簿系统,该系统要求对学生成绩信息进行管理和维护。任务和要求:编制 一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:(1) 创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按 学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存 盘;(6)显示输出60分以下、6079、8089、90分以上各分数段的学生信息(可选项)。此编程用于对学生的饿C

2、语言成绩进行管理。二、算法设计:f流程图:I开始菜单选择,输入你想 选择的数字键输出结果请继续输入你想选 择输出数字键7结束重要的数据结构:(1)有主菜单menu();的编写,用printf();将相应的选项输出在 屏幕上,便于操作者进行选择,menu();中包括学生成绩信息记录簿设计,主菜单,1、输 入所有学生的学号、姓名、C语言分数2、显示所有学生的信息3、按学号或姓名查询成绩 4、添加成绩记录5、修改指定姓名或学号的学生的成绩并可存盘6、输出60分以下、6079、 8089、90分以上各分数段的学生信息7、结束;(2)子函数:主要有creat();input();search()Inse

3、rt();modi()以及 sort(); (3)主函数:main();主要使用了 switch ()语句。主要算法思想:运行程序后,会显示主菜单,根据主菜单中的提示选择相应的数字键, 会实现相应的功能。主要使用了界面的制作、使用了相应的子函数,同时使用了动态链表 的创建、文件的读写等。本程序主要有三大设计模块,第一模块是主菜单menu();的编写, 其作用是便于操作者进行相应问题的选择,具有提示信息的作用。第二模块是相应子函数 的编写,第一个子函数creat();主要思想是运用了链表的动态创建,使用了 malloc函数, 将每位学生的信息动态传递下去,并使用了文件的读取操作,使用了文件中w+

4、的打开模式, 读取磁盘文件并显示所有学生的信息。主要作用是在显示屏及磁盘文件stut.txt中显示 每个学生的信息。第二个子函数input();主要使用了文件中r+的打开模式,打开已有文件stut.txt, 并在显示屏中显示所有学生的信息第三个子函数search();主要实现了当输入一个学生的姓名或学号时,显示屏中会显 示该学生的所有信息,该子函数实现了子函数的调用,即子函数调用子函数,调用了 name ();和num();两个子函数,当输入学生的姓名或学号与文件中的name或num相等时, 即strcmp(,name)=0或xs.num=num时输出该生的所有信息包括学号、姓名

5、以及 C语言的成绩。第四个子函数insert();即插入一个学生的信息并可以读取到磁盘文件中,主要运用 了结构体数组及文件的读取操作。第五个子函数modi();实现修改指定姓名或学号的学生的成绩并可存盘,该子函数主 要使用了结构体数组及文件的打开操作,打开已有文件找到要修改的学生的成绩并修改该 生的成绩,修改后进行存盘操作。第六个子函数sort();主要是筛选显示输出60分以下、6079、8089、90分以上各 分数段的学生信息,将筛选后的结果显示在屏幕上,在该子函数中主要使用了动态链表、 结构体数组即文件的打开操作;利用链表使学生的信息动态传递下去,使用结构体数组将 各个分数段的学生的信息存

6、储下来,利用文件的r+打开模式将文件打开并通过筛选,输出 各个分数段的学生。最后一个模块即主函数main();主要使用了 switch语句对各个子函数 进行操作选择,主要实现了与主菜单的对应,选择case中相应的数字键,会运行相应的 子函数并实现主菜单中相应的要求。3、实现注释:该设计的主要任务是编制一个C语言成绩记录簿,每个学生信息包括: 学号、姓名、C语言成绩。具体要求:(1)创建信息链表并以磁盘文件保存;(2)读取磁 盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5) 修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、6079、8089

7、、 90分以上各分数段的学生信息。本程序主要运用了六个子函数来实现相应的要求;对于第 一个要求:创建信息链表并以磁盘文件保存,实现程度为:当根据提示显示数字键1时, 会提示你输入学生数,输入学生数后,按下Enter键,会提示操作者输入学生的学号、姓 名以及C语言的成绩。同时在会形成一个stut.txt文件夹,文件中中即磁盘文件中读入 了所有学生的学号、姓名及C语言的成绩;第二个读取磁盘文件并显示输出所有学生的成 绩,实现程度为:当执行了第一步操作后,再执行第二部就会将磁盘文件中的内容再次显 示在显示屏上;第三个按学号或姓名查询成绩,实现程度为:当选择数字键3时,会出现 一个提示,提示你选择姓名

8、还是学号查找,选择后,会在显示屏上出现该生的信息;第四 个添加成绩记录;实现程度为:当选择数字键4时,会在显示屏上出现添加学生的姓名、 学号及C语言成绩,还实现了将这个学生的信息也读入了磁盘文件当中;第五个修改指定 姓名或学号的学生的成绩并可存盘;实现程度为:选择数字键5时,会出现要修改成绩学 生的信息,并提示重新输入的C语言分数,最后会在显示屏上出现该生修改后的信息,同 时该生修改后的成绩也读入了 stut.txt文件中;第六个显示输出60分以下、6079、8089、90分以上各分数段的学生信息;当选择数字键6时,会在显示屏上输出各个分数段学生的 信息。数字键7用于退出改程序。4、算法设计中

9、的一些新的想法:该算法的应用是对学生C语言成绩进行管理和维护, 是一个C语言程序记录本,算法中不足之处有不能使用二级菜单,插入学生的学号或姓名 时没能按成绩进行排序一下,还可以对学生的成绩进行排序一下。三、用户手册课程设计的使用说明:输入数据时,要根据显示屏上的格式要求,使得整个界面变得 好看些,还有根据提示选择相应的数字键,输入完毕后按Enter键会执行下一步操作,操 作者可根据提示进行操作,整个操作简单易行。有些操作是要有上一步的操作基础才能进 行,例如必须有学生记录才能查找,所以操作者在操作时要认清每个数字键相应子函数的 功能。四、调试及测试调试过程中主要遇到了主菜单制作的界面掌握不好,

10、头文件的少写或多写,链表的动 态创建掌握不熟及子函数中少写参数、文件的读写具体流程掌握模糊、子函数和主函数不 能很好的相应结合、类型的定义出错或少定义、指针用法不熟、前后子函数不能很好的相 互利用等;解决方法:查阅参考文献、询问同学,让同学帮忙改一下自己改不出来的错误、 及询问老师;测试数据集:蒲姓省学号 0.0张税 1011青输入该生的C语言成绩=9。 修改后的学生的信息如下二性-省4371768旧留貌旧貌旎0弓长亨兑161 9 9.留珪貌旧貌恁2j|(AII globalasses姓名 学号 3-000000 匪锐 1001 89.00请瑜入该生的C语言成绩:醐修改后的学生的信息如下:姓名

11、 43?1?84 0.000000 长锐1001 89.000000-一一请继续输点你想选择的二输入要查学生的学号:1001canJ t open f ile!Press any key ta continue现在的界面:名的乳束f-,二 二-J.X 二 口 f -二 卜干r二 U.二 ulx IS 二 寿i 9二 绩囱 嚏二 二二二二二 二:12姓姓 择入选陶可网口可能85IBI1于10学107咨爵坯号蜡 一一害学学的- 一一的的的8 一一 一一生生辜名下一一 一一 AZ奏的姓以- 一有有生生定分= =亍蕾牌- 入-不找入改出- 输显查餐输* 12 3 4 5 6 7782数 数 =分机分

12、闿一杉 路 学长-K 名弓名方4、清选择序号H请输入学生数位主菜单输入所有学生的学号、姓名、c语言分数显示所有学生的信息按学号或姓名查询成绩舔加成绩记录修改指定姓名或学号的学生的成绩并可存盘输出W分以下、6079. 80*9.刑分以上各分数段的学生结束学生的信息如下:本课程的设计经验和体会:经验:学习不仅仅只学好学校发的教材书,还有好多教材 书上没有的知识也需要掌握,C语言是一门很大的课程,有许多知识点需要掌握,在学习 中不懂的去读书管借书,在设计中不会的函数或知识可以查阅参考书或询问老师,课程设 计的大程序需要有一个很清晰的思路并对各个知识点掌握很熟悉,能够将各个知识点有效 地连接在一起,并

13、能很好的运用在实际中。体会:我觉得C语言学的不扎实,各个知识点 的漏洞太多,会写一些小程序并可以运行但是遇到大一点的程序,就不能将各个知识点很 好的加以利用就需要有扎实的C语言基础,用到的知识很全面,在这次C语言课程设计中 我学到了自己的C语言学的不是很全面,各个知识点的不能很好的连接在一起,需要进一 步加强。五、小结:在本次课程设计中,我的设计题目是学生成绩信息记录簿的设计。任务和 要求为:编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具 体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的 成绩;(3)按学号或姓名查询成绩;(4)添加成绩

14、记录;(5)修改指定姓名或学号的学生 的成绩并可存盘;(6)显示输出60分以下、6079、8089、90分以上各分数段的学生信 息(可选项)。此编程用于对学生的饿C语言成绩进行管理。收获:在设计过程中,我学会 了菜单的制作、链表的创建、链表的插入、查找、文件的读写及子函数的正确运用等等并 可以很好的将这些知识点连接在了一起,并发现了自己C语言学习的不足:掌握的知识点 漏洞太多,许多函数不能正确的运用,看的书太少仅限于书本上的知识和老师发的讲义, 不能很好的将各个知识点连接在一起。本次课程设计,使得自己第一次将理论很好的联系 实际,写的程序能运用到实际中,而且我学会了将参考书上的知识很好的运用在

15、自己的系 统中,不会的知识点也可以向老师或同学进行询问。在调试过程中,可以进行一个子函数 一个子函数的调试,并改错。在设计过程中,往往会出现许许多多自己没见过的错误,这 时候不能放弃,对于各个错误可以百度进行查错等等,在检查错误时贵在坚持,要细心将 每一步的错误检查出来。本系统的不足:该程序没有运用二级菜单,只有一个菜单,显得 简单单调,很多知识点可以进一步加进去,而且只是简单的实现了学生学号、姓名、C语 言成绩的录入、查找、添加、筛选以及修改,这个程序还可以进一步的扩大,可以对学生 的C语言成绩进行排序、按姓名进行排序,筛选分数段的学生也可以进行成绩排名次。此 外,还可以多加几门课的成绩,计

16、算总分、平均分及求最高分最低分、筛选每门课的成绩 等等。六、参考文献:黄明等编著。语言课程设计北京:电子工业出版社郭翠英编著。语言课程设计案例精编北京:中国水利水电出版社宁正元数据结构(c语言)南京:东南大学出版社。2000年6月第1版严蔚敏等数据结构(c语言版)北京:清华大学出版社,1997年4月第1版谭浩强编著。程序设计题解与上机指导(第3版)北京:清华大学出版社谭浩强编著。程序设计(第3版)北京:清华大学出版社附录:源程序清单:#include#include#include#include#define N 100typedef struct studentlong num;char

17、name4;float score;struct student *next;stu;FILE *fp;void menu()/在这里进行主菜单的调用printf(n);printf(nttt*n);printf(nttt*学生成绩信息记录簿设计*n);printf(侦ttt*nn);printf(ttt主菜单nn);printf(tt1、t输入所有学生的学号、姓名、C语言分数nn);printf(tt2、t显示所有学生的信息nn);printf(tt3、t按学号或姓名查询成绩nn);printf(tt4、t 添加成绩记录nn);printf(tt5、t修改指定姓名或学号的学生的成绩并可存盘n

18、n);printf(tt6、t输出60分以下、6079、8089、90分以上各分数段的学生信息nn);printf(tt7、t=结束=);struct student *creat()/创建学生信息链表,将学生信息动态传递下去struct student *head,*p,*q;int i=0,n;printf(n-请输入学生数:);scanf(%d”,&n);printf(nttt学生的信息如下:n);printf(nttt 学号=姓名=分数叶);dop=(struct student *)malloc(sizeof(struct student);/ 申请内存 printf(ttt);sc

19、anf(%ld%s%f,&p-num,&p-name,&p-score);/链表的传递i+;if(i=1)head=p;elseq-next=p;q=p;while(inext=NULL;return head;void print(struct student *head)/在这里使用文件中的w+打开模式将学生信息读入磁盘 文件struct student *p=head;fp=fopen(stut.txt”,w”);while(p!=NULL)fprintf(fp,%d %s %fn,p-num,p-name,p-score);p=p-next;fclose(fp);/ 关闭文件void

20、input()/具体功能是将文件中的内容读取到显示屏上,主要使用了文件中的r+打开 模式FILE *fp;stu *p;if(fp=fopen(stut.txt,r)=NULL)printf(File open error!n);exit(0);p=(stu *)malloc(sizeof(stu);while(fscanf(fp,%ld%s%f,&p-num,&p-name,&p-score)!=EOF)printf( %ld %s %fn,p-num,p-name,p-score);fclose(fp);查找,实现了按学号或姓名查找,里面采用了子函数调用子函数的方法实现了该功 能void

21、name()FILE *fp=NULL;stu *xs=NULL,*temp=NULL,*pr=NULL;char name10;int flag=1;printf(n输入要查学生的姓名:);scanf(%s”,name);if(fp=fopen(stut.txt,r)=NULL)printf(cant open file!n); exit(0);temp=xs;dopr=(stu *)malloc(sizeof(stu);if(pr=NULL)printf(”申请内存失败! ”),exit(0);if(xs=NULL)xs=pr;elsetemp=xs;while(temp-next!=NU

22、LL)temp=temp-next;temp-next=pr;temp=pr;temp-num=0;fscanf(fp,%d%s%f”,&temp-num,temp-name,&temp-score);temp-next=NULL;while(pr-num!=0);pr=xs;while(pr!=NULL)if(strcmp(xs-name,name)=0)/当找到该生时输出该生的信息printf(ntt该学生的信息如下:n);printf(t);printf(%10s %6d %6.2fn,xs-name,xs-num,xs-score);flag=0;break;pr=pr-next;if

23、(flag)printf(没有找到该生的信息!”);fclose(fp);void num()/按学号查找FILE *fp=NULL;stu *xs=NULL,*temp=NULL,*pr=NULL;long num;int flag=1;printf(n输入要查学生的学号:);scanf(%ld,&num);if(fp=fopen(stut.txt,r)=NULL)printf(cant open file!n);exit(0);temp=xs;dopr=(stu *)malloc(sizeof(stu);if(pr=NULL)printf(”申请内存失败! ”),exit(0);if(xs

24、=NULL)xs=pr;elsetemp=xs;while(temp-next!=NULL)temp=temp-next;temp-next=pr;temp=pr;temp-num=0;fscanf(fp,%d%s%f”,&temp-num,temp-name,&temp-score);temp-next=NULL;while(pr-num!=0);pr=xs;while(pr!=NULL)if(pr-num=num)printf(nn=学生的信息如下:n);printf(-);printf(%10s %6d %6.2fn,pr-name,pr-num,pr-score);flag=0;pr=

25、pr-next;if(flag)printf(没有找到该生的信息!”);fclose(fp);void search()/主函数中的子函数调用了两个子函数,使用switch语句实现int chioce;system(cls);printf(tt1-姓名查询信息-n);printf(ntt2-学号查询信息-n);printf(n请选择以何种方式进行查询:);scanf(%d,&chioce);switch(chioce)case 1:name();break;case 2:num();break;default:printf(选择错误! n);插入学生的信息void insert()int n=

26、0;int i,j;struct student s,sxN;printf(n请输入插入的学生的姓名:,scanf(%s”,);printf(n学生的学号:,scanf(%ld,&s.num);printf(-n学生的成绩:,scanf(%f”,&s.score);if(fp=fopen(stut.txt,r+)=NULL)printf(cant open file!n);exit(0);while(fscanf(fp,%ld%s%f,&sxn.num,,&sxn.score)!=EOF)n+;fclose(fp);for(i=0;in;i+)if(s.score=

27、i;j-)sxj+1=sxj;sxi=s;if(fp=fopen(stut.txt,w)=NULL)printf(不能建立文件!n);exit(0);elsefor(i=0;iname,name)=0)/*判断输入要修改的姓名是否存在*/fprintf(fp,n=修改前学生的信息如下:n);fprintf(fp,n%10s %6s %6sn,姓名,学号,C 语言的成绩);fprintf(fp,n%10s %6d %6.2f n,xs-name,xs-num,xs-score);printf(n请输入该生的C语言成绩:);scanf(%f,&xs-score);flag=0;break;xs=x

28、s-next;fprintf(fp,n=修改后的学生的信息如下:n);fprintf(fp,n%10s %6s %6sn,姓名,学号,C 语言的成绩, fprintf(fp,n%10s %6d %6.2fn,xs-name,xs-num,xs-score);if(flag)printf(n学生不存在,修改失败!);fclose(fp);getchar();void sort(stu *head)stu *p=head;printf(60 分以下:n);while(p!=NULL)if(p-scorenum,p-name,p-score);p=p-next;p=head;printf(6079

29、分:n);while(p!=NULL)if(p-score60 & p-scorenum,p-name,p-score);p=p-next;p=head;printf(8089:n);while(p!=NULL)if(p-score80 & p-scorenum,p-name,p-score);p=p-next;p=head;printf(90 分以上:n);while(p!=NULL)if(p-score90)printf(%dt%st%fn,p-num,p-name,p-score);p=p-next;fclose(fp);getchar();void main()int chioce;stu *head;menu();printf(nn-请选择序号:);scanf(%d,&chioce);while(chioce!=0)switch(chioce)case 1:head=c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论