[高等教育]C语言课程设计报告电子版.doc

上传人:sccc 文档编号:4562764 上传时间:2023-04-27 格式:DOC 页数:37 大小:373KB
返回 下载 相关 举报
[高等教育]C语言课程设计报告电子版.doc_第1页
第1页 / 共37页
[高等教育]C语言课程设计报告电子版.doc_第2页
第2页 / 共37页
[高等教育]C语言课程设计报告电子版.doc_第3页
第3页 / 共37页
[高等教育]C语言课程设计报告电子版.doc_第4页
第4页 / 共37页
[高等教育]C语言课程设计报告电子版.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《[高等教育]C语言课程设计报告电子版.doc》由会员分享,可在线阅读,更多相关《[高等教育]C语言课程设计报告电子版.doc(37页珍藏版)》请在三一办公上搜索。

1、大连交通大学 软件学院 C语言课程设计报告SOFTWARE INSTITUTEOF DALIAN JIAOTONG UNIVERSITY EXPERIMENT DESIGNINGC语言课程设计报告Experiment Designing reporter课程名称 : C语言课程设计英文名称 : C Program Experiment Designing 专 业 :交通工程+软件工程08学 号 :0818080104 姓 名 :田国敏指导教师 : 邱占芝日 期: 2009年 6 月 8日至 2009 年6 19日大连交通大学软件学院C语言课程设计报告C Program Experiment D

2、esigning 课程编号:01200308005 学时: 40学时适用专业:软件工程专业 授课单位:软件学院一、 C语言课程设计目的及要求目的:根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。要求:1 熟悉Turbo C 的编程环境、主要菜单功能。2 通过上机验证运算符、表达式、运算规则、函数使用。3 熟练使用C语言的典型语句编写简单程序。4 调试典型例题或习题。5 提高上机编程能力二、 实验类型设计类型三、 实验学时40学时四、 实验设备微型计算机、WI

3、NDOWS98XP以上版本的操作系统、Turbo C2.0 软件一套五、 C语言课程参考教材:1C语言程序设计 清华大学出版社 马靖善主编与大纲保持一致最好2.谭浩强.C语言程序设计(第三版).北京:高等教育出版社,2002课程设计(报告)任务书任务及要求:1. 设计(研究)内容和要求研究内容:投票选举、计算并按序输出学生平均成绩及总分、字符串排序、统计单词、学生成绩管理系统任务和要求:(1)学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2)对指导教师下达的题目进行系统分析。(3)根据分析结果完成系统设计。(4)编程:在计算机上实现题目的代码实现。(5)完成对该系统的测试和调试。(

4、6)提交课程设计报告。(7)指标:要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献1 黄明等. C语言程序设计辅导教材.大连理工大学出版社,20062 马靖善等.C语言程序设计.清华大学出版社,20053 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002 2008年6月20日目录C语言课程设计报告11 黄明等. C语言程序设计辅导教材.大连理工大学

5、出版社,200631统计选票11.1 系统分析11.2 设计说明11.3 程序运行截图21.4源程序代码22 成绩输出32.1 功能说明32.2 设计说明32.3 程序运行截图42.4 源程序代码43 字符串排序53.1 功能说明53.2 设计说明53.3 程序运行截图63.4 源程序代码64 统计单词74.1 功能说明74.2 设计说明74.3 程序运行截图84.4 源程序代码85 学生成绩管理系统95.1 需求分析95.2 总体设计105.3 详细设计与实现125.3 程序运行截图1511统计选票格式:标题2,黑体,3号1.1 系统分析统计候选人的选票。1.2 设计说明1、定义:#incl

6、ude string.h2、子函数,输入候选人。函数名: struct person返回值:候选人的序号,姓名参数:int num; char name20; int count;处理流程:定义候选人3、主函数main()从键盘上输入一候选人,for循环输入选票,若选票与候选人匹配,增加票数,最后统计最终的票,选出候选人。如:li li zhao zhao zhao li li wang wang zhang zhang zhang zhao li li,则在屏幕上显示:=The result is:li 7zhang 2zhao 3wang 3*thang you for you vote*

7、1.3 程序运行截图1.4 源程序代码#include string.h /*统计4候选人的得票情况*/struct person char name20; int count;leader= li,0, zhang,0, zhao,0,wang,0;main() int i,j; char select20; clrscr();printf(=n); printf( * vote for our leader * nnn); for (i=0;i15;i+) printf(%dtPlease input your result: ,i+1); scanf(%s,select); for(j=

8、0;j4;j+) if(strcmp(leaderj.name,select)=0) leaderj.count+; printf(The result is :n); for(j=0;j4;j+) printf(%st%dn,leaderj.name,leaderj.count); printf(nnn* thank you for your vote *n); printf(=); getch(); printf(*n);2 成绩输出2.1 功能说明 根据提示输入学生姓名年龄和成绩,求出总成绩和平均值 2.2 设计说明1、定义:#include stdio.h2、子函数,求出总成绩及平均值

9、。函数名:float aver(float a)返回值:av,求出成绩平均值参数:int i,含义:数字Float av,s=a, 含义:数组处理流程:For循环求出平均值3、主函数main()从键盘上输入成绩,调用结构数组,输入成绩,然后调用子函数float aver(float a)如:= Welcome to the systemPlease input your name:LilyPlease input your age:19Please input your score:89 98 78 96 64*conclusion*Name:LilyAge:19Score1:89.00000

10、0 score2:98.000000 score3:78.000000 Score4:96.000000 score5:64.000000Final: sum=425 ave=85.0000002.3 程序运行截图2.4 源程序代码#include stdio.hmain() struct student char name10; int age; float score5,ave; stu; int i,sum; sum=0; stu.ave=0;printf(=n welcome to the systemn); printf(nPlease input your name:); scan

11、f(%s,stu.name); printf(nPlease input your age:); scanf(%s,&stu.age); printf(nPlease input your score:); for(i=0;i5;i+) scanf(%f,&stu.scorei); sum=sum+stu.scorei; stu.ave+=stu.scorei/5.0; printf(nn*conclusion*); printf(nnName:%snn,stu.name); printf(Age:%dnn,stu.age); for(i=0;i5;i+) printf(Score %d :%

12、2.lf ,i+1,stu.scorei); printf(nnFinal: sum=%d ,sum); printf(average=%6.lfn,stu.ave); printf(nn=); getch();3 字符串排序格式:标题2,黑体,3号3.1 功能说明统计三个字符串中的元素,并按从小到大的顺序排列3.2 设计说明1、定义:#include stdio.h#include string.h#define M 3#define N 202、主函数main(),根据提示从键盘上输入字符串,然后用strcmpt统计字符串长度,根据长度不同,运用for循环和复制函数strcpy,重新排列字

13、符串如:Please input the first string:hahahahahaPlease input the second string:hiPlease input the third string:nihaoThe result is: The first:hi The second:nihao The third:hahahahaha 3.3 程序运行截图 3.4 源程序代码#include stdio.h#include string.h#define M 3#define N 20main() char strMN,tempN; int i,j; for(i=0;iM;i

14、+) printf(please input number %d string:,i+1); scanf(%s,&stri); printf(= ); printf(Before:n); for(i=0;iM;i+) printf(the %d string:%sn,i+1,stri); for(j=0;jM-1;j+) for(i=0;i0) strcpy(temp,stri); strcpy(stri,stri+1); strcpy(stri+1,temp); printf(After:n); for(i=0;iM;i+) printf(the number%d string:%sn,i+

15、1,stri); printf(=); getch();4 统计单词4.1 功能说明统计字符串中的单词数量4.2 设计说明1、定义: #include “stdio.h”2、主函数 main() 定义变量,运用for语句循环统计字符串中单词的数量 如:输入The little boy is very smart 则屏幕上显示: There are 6 words in the line.4.3 程序运行截图4.4 源程序代码#include stdio.hmain( ) char str80,c,i; int word,num; num=1; printf(=); printf(nPlease

16、 input a line:n);gets(str); for(i=0;(c=stri)!=0;i+) if(c= ) word=0; else if (word=0) word=1; num+; printf(nne are %d words in the line.n,num); printf(=); getch(); 5 学生成绩管理系统建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化规范化和自动化。利用单链表结构实现学生成绩管理,了解数据管理的基本功能,掌握C语言中的结构体,指针,函数文件

17、操作等知识,是一个C语言知识的综合应用。5.1 需求分析需求分析是软件开发中最重要的环节,它直接影响着项目的成功与失败。通过对用户需求进行调查分析,写出需求分析的文档。需求分析的文档可以作为项目设计的基本要求,也可以作为系统分析员进行系统分析和测试人员进行软件测试的手册。1需求概述设计一个学生成绩管理系统,使之能提供以下功能:(1)信息录入功能(2)信息查询功能(3)信息删除功能(4)信息修改功能(5)信息浏览功能2需求说明(1)系统中的每个信息包含学生的学号,姓名,课程成绩,平均成绩等。(2)录入的信息要以文件或其他形式保存,并可以进行查询、修改、删除和浏览等基本操作。(3)系统中的信息显示

18、要求有一定的规范格式。(4)对系统中的信息修改应分别按照学号或姓名两种方式进行查询,要求能返回所有符合条件的信息。(5)对系统中的信息修改应该逐个的进行,一个信息记录的修改不应影响其他的信息记录。(6)所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,根据用户的选择进行各种处理,并要求要此过程中能尽可能地兼容使用中的异常情况。菜单选择成绩管理系统成绩录入成绩处理成绩删除成绩查询成绩插入成绩保存成绩排序计算总分计算平均分5.2 总体设计根据需求分析的文档可以,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出总体设计说明书,为详细设计做准备。1功能模块根据需求分析

19、,得到系统的功能模块。如图1-1所示:图1-1系统模块图说明:(1)菜单选择模块完成用户命令的接收功能。是学生成绩管理系统的入口,用户想要进行的各种操作都要在此模块中选择,并进而调用其他模块实现相应的功能。(2)成绩录入模块用于完成成绩的输入功能。输入的信息包括学号、姓名、课程成绩等数据,且每一项输入有误时用户能直接修改。(3)成绩删除模块用于完成成绩的删除功能,用户根据个人的需求,输入所要删除的记录,系统将执行该程序,并输出删除后剩余的原有存储信息。(4)成绩查询模块完成成绩查询功能。可以按照序号和姓名两种方式进行,并输出符合条件的信息。(5)成绩处理模块完成成绩的排序,计算总分和平均分的功

20、能。(6)成绩插入模块完成成绩的插入功能。该模块和成绩删除模块可以完成成绩的修改功能。(7)成绩保存模块完成成绩保存到文件的功能。2数据结构本系统中主要的数据结构就是学生的成绩信息,包含学号、姓名、三门课程成绩、总分、平均分等。3程序流程系统的执行应从系统菜单的选择开始,根据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如图1-2所示:否否否否是开始菜单选择录入?删除?查询?处理?插入?否成绩录入成绩删除成绩查询成绩处理成绩插入是是是是结束图1-2程序流程图5.3 详细设计与实现在总体设计的基础上进行详细设计,为下一步编码做准备。1 数

21、据结构#define N 3typedef struct sl /*定义课程门数,可以根据情况而定*/ char no11; /*学号*/ char name20; /*学生姓名*/ int scoreN; float sum /*总分*/ float average; /*平均分*/ int order; /*名次*/ struct sl *next; /*指向后继结点的指针*/STUDENT /*定义结构体类型*/2各个功能模块的处理流程2各个功能模块的设计与实现(1)菜单的设计与实现本系统设计了友好且功能丰富的主菜单界面,提供打11项功能的选择。利用switch case 语句来实现调用

22、主菜单函数,返回值整数作开关语句的条件。值不同,执行的函数不同,具体函数如下:l head=init()实现对数据执行初始化;l head=create()创建链表,进行数据录入;l head=delete(head)删除记录;l print(head)显示全部记录;l search(head)查找记录;l save(head)保存文件; l head=load()读文件;l computer(head)计算总分和平均分;l head=insert(head)插入记录;l head=sort(head) 排序;l exit(0)(2)数据录入当在主菜单中输入了字符1时,进入创建链表函数- cr

23、eate(),即输入学生信息,按照提示信息输入学号(字符串不超过5位)、姓名(字符串不超过10位)、三门课程的成绩(整数0100),每输入一个数就按一下回车键,当在输入学号首字符为时结束输入,返回主函数,单链表创建完毕。当成绩输入后,系统自动计算该生的总分和平均分,并将名次数据先置0,待排序后再赋予新值。数据输入后,将其后继结点指针指向当前头结点,新头指针指向新插入结点,这样新插入结点总在头。数据输入结束后返回链表的头指针到主函数。(3)删除数据删除指定学号的学生记录,使用delete()函数实现。首先输入要删除结点的学号,输入后根据学号顺序查找结点,如果没找到,则输出没找到信息;否则,显示找

24、到的结点信息,按任意键后显示已删除信息。注意删除结点时的操作,如果该结点是首结点,则要修改头指针;否则,将该结点的前趋指针的后继指向其后继结点,然后释放该结点。 (4)显示数据学生成绩表建立好后,更频繁的操作是显示和查找记录,print()函数实现显示链表数据功能。由于单链表只能采取顺序访问的方法,所以定义一个指向结点的临时变量p,初值为单链表的头指针,输出指针所指记录的数据后,将指针后移一个记录,直到p指针值为空,则所有记录输出完毕。设计本函数时注意输出格式以二维表格的形式输出,直观漂亮。输出的第一列为记录号。注意调整格式,对齐表格线。(4)查找数据按照姓名查找结点,使用search()函数

25、实现。从头结点开始顺序查找,成功则显示记录信息,失败,显示没找到。学号是字符串,比较功能利用字符串比较函数strcmp()实现。(6)保存数据到文件将学生成绩信息保存到指定文件中,使用save()函数实现。按照文件读写要求,先定义一个指向文件的指针,输入要保存的磁盘文件名,如果输入的是绝对路径,则文件保存到指定位置;如果只给文件名,则文件保存在Turbo C默认的路径下,然后确定文件的打开方式,打开文件;若文件打不开,则退出程序,否则选择一种写文件方式,从链表的头指针开始,顺序将记录写入文件,直到所有记录写完,标志就是移动指针为空。(7)从文件中读取数据从文件中读取数据使用load()函数实现

26、。按照文件读写要求,先定义一个指向文件的指针,输入要读入数据的磁盘文件名,然后确定文件的打开方式。如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录读入内存,直到文件尾。文件打开方式和读入方式的确定要依据输出文件的打开方式和写入方式,以免数据读入错误。如果输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。每读入一条记录,都要做好指针链接关系,本函数将新结点链接到当前链表的尾部,链表的顺序和文件保存的顺序一致。(8)计算学生的总分和所有课程平均分计算学生的总分和所有课程平均分使用computer()函数实现。从头指针开始,每读一条记录,将该生的总分累

27、加,并统计记录条数,当所有数据处理完毕,求出平均分,最后输出结果为所有学生的总分和平均分。(9)插入数据插入结点需要输入插入位置和新结点信息,使用insert()函数实现。输入某个结点的学号,新结点将插入在这个指定结点之前。申请空间得到指针info,输入新结点信息,存放到新申请的空间中。(10)成绩排序对于学生成绩管理,一个很重要的运算是将学生按照分数由高到低排名,sort()函数实现按照总分排序功能,先从原表删除头结点,然后在新表中查找到合适的位置,进行插入。待排序结点的插入位置总是插在表头、表尾和表中间三种情况之一,由于单链表的特性,实际插入结点时,并不需要移动和交换结点信息,而是只改变指

28、针关系,所以排序时间主要用在比较上。排好序后将其名次数据写入数据域order中。(11)退出5.3 程序运行截图进入主菜单1成绩录入2从表中删除记录3显示单链表中所有记录(7)记录保存为文件4按学号查找记录5将单链表中记录保存到文件6从文件中读取记录7计算所有学生总分和平均分8插入记录到列表9排序55参考程序#include stdio.h#include stdlib.h#include string.h#include conio.h#include mem.h#include ctype.h#include alloc.h#define N 5typedef struct s1char

29、no 11;char name15;int scoreN;float sum;float average;int order;struct s1 *next;STUDENT;menu()char *menu=*MENU*,0. Initial list,1. Enter record,2. Delete a record from list,3. Print list,4. Search record on number,5. Save as file,6. Load from file,7. Compute the score,8. Insert record to list,9. Sort

30、 to make new file,10 Quit;char s3;int c,i;gotoxy(1,25);printf(press any key enter menu.n);getch();clrscr();gotoxy(1,1);textcolor(YELLOW);textbackground(BLUE);gotoxy(10,2);putch(0xc9);for(i=1;i44;i+)putch(0xcd);putch(0xbb);for(i=3;i20;i+)gotoxy(10,i);putch(0xba);gotoxy(54,i);putch(0xba);gotoxy(10,20)

31、;putch(0xc8);for(i=1;i44;i+)putch(0xcd);putch(0xbc);window(11,3,53,19);clrscr();for(i=0;i10;i+)gotoxy(10,i+1);printf(%s,menui);textbackground(BLACK);window(1,1,80,25);gotoxy(10,21);doprintf(n Enter you choice(010:);scanf(%s,s);c=atoi(s);while(c10);return c;STUDENT *init()return NULL;STUDENT *create(

32、)int i;int s;STUDENT *h=NULL,*info;for(;)info=(STUDENT *)malloc(sizeof(STUDENT);if(!info)printf(nOut of memory);return NULL;inputs(Please enter students number:,info-no,11);if(info-no0=) break;inputs(Please enter students name:,info-name,15);printf(Please input Math,Chinese,English,physics,chemistry

33、 scoren);s=0;for(i=0;iscorei);if(info-scorei100|info-scoreiscorei100|info-scoreiscorei;info-sum=s;info-average=(float)s/N;info-order=0;info-next=h;h=info;return(h);inputs(char *prompt, char *s, int count)char p255;doprintf(prompt);scanf(%s,p);if(strlen(p)count)printf(n too long! n);while(strlen(p)co

34、unt);strcpy(s,p);void print(STUDENT *h) int i=0;STUDENT *p;clrscr();p=h;printf(nnn*Student Scores*n);printf( Rec | Stu Nu|Name |Math |Chin |Engl |phys |chem | Sum | Ave |order|n);printf(|-|-|-|-|-|-|-|-|-|-|-|n);while(p!=NULL)i+;printf(|%3d |%-5s |%-8s |%4d |%4d |%4d |%4d |%4d |%4.2f |%4.2f |%3d |n

35、,i,p-no,p-name,p-score0,p-score1,p-score2,p-score3,p-score4,p-sum,p-average,p-order);p=p-next;printf(*End*n);STUDENT *delete(STUDENT *h)STUDENT *p,*q;char s11;clrscr();printf(please deleted non);scanf(%s,s);q=p=h;while(strcmp(p-no,s)&p!=NULL)q=p;p=p-next;if(p=NULL)printf(nlist no %s studentn,s);elseprintf(*have found*n);printf(|no | nme | sc1 | sc2 | sc3 | sc4 | sc5 |sum |ave |order|n);printf(|-|-|-|-|-|-|-|-|-|-|n);printf(|%-5s |%-8s |%4d |%4d |%4d |%4d |%4d |%4.2f |%4.2f |%3d |n ,p-no,p-name,p-score0,p-score1,p-score2,p-score3,p-score4,p-sum,p-average,p-order);printf(*en

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号