c语言程序设计报告_第1页
c语言程序设计报告_第2页
c语言程序设计报告_第3页
c语言程序设计报告_第4页
c语言程序设计报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

c语言程序设计报告C语言课程设计实验报告专业班级学号姓名指导教师C语言课程设计指导书目的与要求c语言程序设计报告全文共25页,当前为第1页。《C语言》是实践性很强的课程。通过课程设计可以把课堂上讲的内容融会贯通,也只有通过上机实习才能真正学会设计程序、开发应用软件、开发系统软件等各项工作。课堂授课和上机实习是这门课程必不可少的环节。c语言程序设计报告全文共25页,当前为第1页。课程设计的目的与要求:通过课程设计掌握C语言的语法结构,准确的使用各种数据类型。熟练的运用if、switch、for、while、do_while、continue、break等语句为经典的题目编写程序,为科研项目中的部分题目编写程序。灵活的使用数组,处理一维数组、二维数组、指针;掌握各种排序的方法;理解递归调用的过程,使用递归的方法设计程序。掌握“自顶向下,逐步细化”的模块化程序设计方法。课程设计内容必做题目序号实验项目名称实验内容1分支结构设计输入某年某月某日,判断这一天是这一年的第几天2循环结构设计输出一个国际象棋棋盘(8行8列方格,并且黑白相间)3指针任意输入三个实数,打印其最大值,最小值,平均值,要求用函数及指针作函数实参,指针变量作形参的方法实现。4数组与指针通过指针数组P和一维数组a构成一个3*2的二维数组;并为a数组赋初值2,4,6,8。。。。。要求先按行的顺序输出此二维数组;然后再按列的顺序输出它。选做题参考设计题目一:简单的职工管理系统1.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。3.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。c语言程序设计报告全文共25页,当前为第2页。(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。c语言程序设计报告全文共25页,当前为第2页。(2)对职工对象中的"姓名"按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。4.选做内容将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。参考设计题目二:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:v系统以菜单方式工作v图书信息录入功能(图书信息用文件保存)--输入v图书信息浏览功能--输出v查询和排序功能:(至少一种查询方式)--算法l按书名查询l按作者名查询v图书信息的删除与修改(可选项)参考设计题目三:学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:系统以菜单方式工作学生信息录入功能(学生信息用文件保存)---输入学生信息浏览功能---输出查询、排序功能---算法按学号查询按姓名查询学生信息的删除与修改(可选项)参考设计题目四:学生选修课程系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:v系统以菜单方式工作v课程信息录入功能(课程信息用文件保存)--输入v课程信息浏览功能--输出v查询功能:(至少一种查询方式)--算法l按学分查询c语言程序设计报告全文共25页,当前为第3页。l按课程性质查询c语言程序设计报告全文共25页,当前为第3页。v学生选修课程(可选项)参考设计题目五:销售管理系统某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号2)产品的代号3)这种产品的当天的销售额每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。1)计算上个月每个人每种产品的销售额。2)按销售额对销售员进行排序,输出排序结果(销售员代号)3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)4)输出统计报表销售统计报表产品代号销售之和销售员代号123451234每种产品之和总和三、课程设计检查要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计报告》及电子版的程序设计设计报告格式:设计目的总体设计(程序设计组成框图、流程图)详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施源程序清单和执行结果:清单中应有足够的注释(3)设计要求可自己选定一题目,但至少包含五个功能模块c语言程序设计报告全文共25页,当前为第4页。模块化程序设计c语言程序设计报告全文共25页,当前为第4页。锯齿型书写格式必须上机调试通过四、课程设计打分标准:(1)、根据平时上机考勤;(2)、根据程序运行结果;(3)、根据《C语言课程设计报告》以上三项缺一不可,否则不能到得相应学分五、课程设计报告指导书格式要求:1、设计报告采用手写,要求书写公正,字迹清楚。2、采用B5白色稿纸。按给定封面装订(封面要求打印或复印)。课程设计报告内容:设计目的通过课程设计掌握C语言的语法结构,准确的使用各种数据类型。熟练的运用if、switch、for、while、do_while、continue、break等语句为经典的题目编写程序,为科研项目中的部分题目编写程序。灵活的使用数组,处理一维数组、二维数组、指针;掌握各种排序的方法;理解递归调用的过程,使用递归的方法设计程序。掌握“自顶向下,逐步细化”的模块化程序设计方法通过使用c语言程序设计,巩固和掌握C语言的一些基本概念和基本理论,提高实际动手能力,并通过实现编写程序,加强对C语言的运用,加深对C语言的理解和掌握。二、实验设计c语言程序设计报告全文共25页,当前为第5页。1、输入某年某月某日,判断这一天是这一年的第几天。c语言程序设计报告全文共25页,当前为第5页。解;#include<stdio.h>//主函数。intfun(intyear,intmonth,intday);//被调用函数的声明。voidmain(){intyear,month,day;printf("请按照提示分别输入年、月、日\n");printf("year=");scanf("%d",&year);printf("month=");scanf("%d",&month);printf("day=");scanf("%d",&day);fun(year,month,day);//调用fun方法。}intfun(intyear,intmonth,intday){ints=0;inta[2][12]={0,31,59,90,120,151,181,212,243,273,303,334,0,31,60,91,121,152,182,212,244,274,305,335};if(month<=0||month>12||day<=0||day>31)//判断输入的月和日是否正确,若不正确直接跳出方法。{printf("您输入有误,请确认您输入的年月日无误后重新查询!");return0;}elseif((year%400==0)||(year%4==0&&year%100!=0))//若果是闰年则调用该函数。{s=a[1][month-1]+day;printf("%d年%d月%d日是%d年得第%d天。\n",year,month,day,year,s);}else//如果非闰年调用该函数。{s=a[0][month-1]+day;c语言程序设计报告全文共25页,当前为第6页。printf("%d年%d月%d日是%d年得第%d天。\n",year,month,day,year,s);c语言程序设计报告全文共25页,当前为第6页。}return0;}输入年按月日判断该年是平年还是闰年该年是闰年 该年是平年实行闰年前几个月相加实行平年年前几个月相加加上第几日输出是第几天2、输出一个国际象棋棋盘(8行8列方格,并且黑白相间)。解:#include<stdio.h>intmain(){inti,j;for(i=1;i<=8;i++)if(i%2==1){for(j=0;j<=3;j++)printf("■□");printf("\n");c语言程序设计报告全文共25页,当前为第7页。}c语言程序设计报告全文共25页,当前为第7页。else{for(j=0;j<=3;j++)printf("□■");printf("\n");}return0;}i=1输出字符型数组{□■□■□■□■}换行及并输出{■□■□■□■□}判断i<=4?i++结束并输出3、任意输入三个实数,打印其最大值,最小值,平均值,要求用函数及指针作函数实参,指针变量作形参的方法实现。解:#include<stdio.h>doubleMAX(double*x,double*y,double*z);doubleMIN(double*x,double*y,double*z);//函数预定义doublemax,min,ave;//定义全局变量intmain(){doublea,b,c;double*p1,*p2,*p3;printf("Pleaseinputa,b,c:");//输出提示"请输入a,b,c"c语言程序设计报告全文共25页,当前为第8页。scanf("%lf,%lf,%lf",&a,&b,&c);//输入a,b,cc语言程序设计报告全文共25页,当前为第8页。p1=&a;p2=&b;p3=&c;//指针赋值MAX(p1,p2,p3);//运行函数MAXMIN(p1,p2,p3);//运行函数MINave=(a+b+c)/3;//求平均值printf("max=%lf\n",max);//输出最大值printf("min=%lf\n",min);//输出最小值printf("ave=%lf\n",ave);//输出平均值}doubleMAX(double*x,double*y,double*z){max=*x;if(*y>max)max=*y;if(*z>max)max=*z;return(max);}doubleMIN(double*x,double*y,double*z){min=*x;if(*y<min)min=*y;if(*z<min)min=*z;return(min);c语言程序设计报告全文共25页,当前为第9页。}c语言程序设计报告全文共25页,当前为第9页。输入三个数以空格分割平均值执行语句average=(a+b+c)/3判断大小执行函数体voidterm(float*t1,float*t2,float*t3)对最大值最小值利用赋值语句sum=*m1;*m1=*m2;*m2=sum输出最大值、最小值、平均值4、通过指针数组P和一维数组a构成一个3*2的二维数组;并为a数组赋初值2,4,6,8。。。。。要求先按行的顺序输出此二维数组;然后再按列的顺序输出它。解:#include<stdio.h>main(){inta[]={2,4,6,8,10,12};//定义数组a并初始化int(*p)[2]=a;inti,j; printf("outputbyrow:\n");//按行输出: for(i=0;i<3;i++){ for(j=0;j<2;j++) {printf("%d",p[i][j]); } printf("\n");} printf("\noutputbyvolumn:\n");//按列输出: for(i=0;i<2;i++){ for(j=0;j<3;j++) printf("%d",p[j][i]); printf("\n");}c语言程序设计报告全文共25页,当前为第10页。}c语言程序设计报告全文共25页,当前为第10页。Inta[]={2,4,6,8,10,12}将数组a强制转换成二维数组按行输出并判断for(i=0;i<3;i++)for(j=0;j<3,j++)按p[i][j]输出按列输出并判断for(i=0;i<3;i++)for(j=0;j<3,j++)按a[j][i]输出5(选作题)参考设计题目二:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:v系统以菜单方式工作v图书信息录入功能(图书信息用文件保存)--输入v图书信息浏览功能--输出v查询和排序功能:(至少一种查询方式)--算法l按书名查询l按作者名查询v图书信息的删除与修改(可选项)解:#include<stdio.h>#include<math.h>c语言程序设计报告全文共25页,当前为第11页。#include<string.h>c语言程序设计报告全文共25页,当前为第11页。#include<stdlib.h>structbooks_list{ charauthor[20];/*作者名*/ charbookname[20];/*书名*/ charpublisher[20];/*出版单位*/ charpbtime[15];/*出版时间*/ charloginnum[10];/*登陆号*/ floatprice;/*价格*/ charclassfy[10];/*分类号*/ structbooks_list*next;/*链表的指针域*/};structbooks_list*Create_Books_Doc();/*新建链表*/voidInsertDoc(structbooks_list*head);/*插入*/voidDeleteDoc(structbooks_list*head,intnum);/*删除*/voidPrint_Book_Doc(structbooks_list*head);/*浏览*/voidsearch_book(structbooks_list*head);/*查询*/voidinfo_change(structbooks_list*head);/*修改*/voidsave(structbooks_list*head);/*保存数据至文件*//*新建链表头节点*/structbooks_list*Create_Books_Doc(){ structbooks_list*head; head=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配头节点空间*/ head->next=NULL;/*头节点指针域初始化??定为空*/ returnhead;}/*保存数据至文件*/voidsave(structbooks_list*head){ structbooks_list*p; FILE*fp; p=head; fp=fopen("data.txt","w+");/*以写方式新建并打开data.txt文件*/ fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");/*向文件输出表格*/c语言程序设计报告全文共25页,当前为第12页。 fprintf(fp,"┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");c语言程序设计报告全文共25页,当前为第12页。 fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");/*指针从头节点开始移动??遍历至尾结点??依次输出图书信息*/ while(p->next!=NULL) { p=p->next; fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price); } fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); fclose(fp); printf("已将图书数据保存到data.txt文件\n");}/*插入*/voidInsertDoc(structbooks_list*head){/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/ structbooks_list*s,*p; charflag='Y';/*定义flag,方便用户选择重复输入*/ p=head;/*遍历到尾结点??p指向尾结点*/ while(p->next!=NULL) { p=p->next; }/*开辟新空间,存入数据,添加进链表*/ while(flag=='Y'||flag=='y') { s=(structbooks_list*)malloc(sizeof(structbooks_list)); printf("\n请输入图书登陆号:"); fflush(stdin); scanf("%s",s->loginnum); printf("\n请输入图书书名:"); fflush(stdin);c语言程序设计报告全文共25页,当前为第13页。 scanf("%s",s->bookname);c语言程序设计报告全文共25页,当前为第13页。 printf("\n请输入图书作者名:"); fflush(stdin); scanf("%s",s->author); printf("\n请输入图书出版社:"); fflush(stdin); scanf("%s",s->publisher); printf("\n请输入图书出版时间:"); fflush(stdin); scanf("%s",s->pbtime); printf("\n请输入图书分类号:"); fflush(stdin); scanf("%s",s->classfy); printf("\n请输入图书价格:"); fflush(stdin); scanf("%f",&s->price); printf("\n"); p->next=s;/*将新增加的节点添加进链表*/ p=s;/*p指向尾节点??向后移*/ s->next=NULL; printf("━━━━添加成功??━━━━"); printf("\n继续添加??(Y/N):"); fflush(stdin); scanf("%c",&flag); printf("\n"); if(flag=='N'||flag=='n') {break;} elseif(flag=='Y'||flag=='y') {continue;} } save(head);/*保存数据至文件*/ return;}/*查询操作*/voidsearch_book(structbooks_list*head){ structbooks_list*p; chartemp[20]; p=head;c语言程序设计报告全文共25页,当前为第14页。 if(head==NULL||head->next==NULL)/*判断数据库是否为空*/c语言程序设计报告全文共25页,当前为第14页。 { printf("━━━━图书库为空??━━━━\n"); } else { printf("请输入您要查找的书名:"); fflush(stdin); scanf("%s",temp); /*指针从头节点开始移动??遍历至尾结点??查找书目信息*/ while(p->next!=NULL) { p=p->next; if(strcmp(p->bookname,temp)==0) { printf("\n图书已找到!\n"); printf("\n"); printf("登录号:%s\t\n",p->loginnum); printf("书名:%s\t\n",p->bookname); printf("作者名:%s\t\n",p->author); printf("出版单位:%s\t\n",p->publisher); printf("出版时间:%s\t\n",p->pbtime); printf("分类号:%s\t\n",p->classfy); printf("价格:%.2f\t\n",p->price); } if(p->next==NULL) { printf("\n查询完毕!\n"); } } } return;}/*浏览操作*/voidPrint_Book_Doc(structbooks_list*head){ structbooks_list*p; if(head==NULL||head->next==NULL)/*判断数据库是否为空*/ {c语言程序设计报告全文共25页,当前为第15页。 printf("\n━━━━没有图书记录!━━━━\n\n");c语言程序设计报告全文共25页,当前为第15页。 return; } p=head; printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n"); printf("┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n"); printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");/*指针从头节点开始移动??遍历至尾结点??依次输出图书信息*/ while(p->next!=NULL) { p=p->next; printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%8.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);/*循环输出表格*/ } printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n"); printf("\n");}/*修改操作*/voidinfo_change(structbooks_list*head){ structbooks_list*p; intpanduan=0;/*此变量用于判断是否找到书目*/ chartemp[20]; p=head; printf("请输入要修改的书名:"); scanf("%s",temp); while(p->next!=NULL) { p=p->next; if(strcmp(p->bookname,temp)==0) { printf("\n请输入图书登陆卡号:"); fflush(stdin);c语言程序设计报告全文共25页,当前为第16页。 scanf("%s",p->loginnum);c语言程序设计报告全文共25页,当前为第16页。 printf("\n请输入图书书名:"); fflush(stdin); scanf("%s",p->bookname); printf("\n请输入图书作者名:"); fflush(stdin); scanf("%s",p->author); printf("\n请输入图书出版社:"); fflush(stdin); scanf("%s",p->publisher); printf("\n请输入图书出版时间:"); fflush(stdin); scanf("%s",p->pbtime); printf("\n请输入图书分类号:"); fflush(stdin); scanf("%s",p->classfy); printf("\n请输入图书价格:"); fflush(stdin); scanf("%f",&p->price); printf("\n"); panduan=1; } } if(panduan==0) { printf("\n━━━━没有图书记录!━━━━\n\n"); } return;}/*删除操作*/voidDelete_Doc(structbooks_list*head){ structbooks_list*s,*p;/*s为中间变量??p为遍历时使用的指针*/ chartemp[20]; intpanduan;/*此变量用于判断是否找到了书目*/ panduan=0; p=s=head; printf("[请输入您要删除的书名]:"); scanf("%s",temp);/*遍历到尾结点*/c语言程序设计报告全文共25页,当前为第17页。 while(p!=NULL)c语言程序设计报告全文共25页,当前为第17页。 { if(strcmp(p->bookname,temp)==0) { panduan++; break; } p=p->next; } if(panduan==1) { for(;s->next!=p;)/*找到所需删除卡号结点的上一个结点*/ { s=s->next; } s->next=p->next;/*将后一节点地址赋值给前一节点的指针域*/ free(p); printf("\n━━━━删除成功!━━━━\n"); } else/*未找到相应书目*/ { printf("您输入的书目不存在??请确认后输入!\n"); } return;}intmain(void){ structbooks_list*head; charchoice; head=NULL; for(;;)/*实现反复输入选择*/ { printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf("┃┃图书管理系统┃┃\n"); printf("┃┗━━━━━━━━━━━━━━━━━━━━┛┃\n");c语言程序设计报告全文共25页,当前为第18页。 printf("┃[1]图书信息录入┃\n");c语言程序设计报告全文共25页,当前为第18页。 printf("┃┃\n"); printf("┃[2]图书信息浏览┃\n"); printf("┃┃\n"); printf("┃[3]图书信息查询┃\n"); printf("┃┃\n"); printf("┃[4]图书信息修改┃\n"); printf("┃┃\n"); printf("┃[5]图书信息删除┃\n"); printf("┃┃\n"); printf("┃[6]退出系统┃\n"); printf("┃┃\n"); printf("┃┃\n"); printf("┗━━━━━━━

温馨提示

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

评论

0/150

提交评论