c语言程序综合实验111报告报告 综合实验一.docx
- 文档编号:26654885
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:68
- 大小:29.10KB
c语言程序综合实验111报告报告 综合实验一.docx
《c语言程序综合实验111报告报告 综合实验一.docx》由会员分享,可在线阅读,更多相关《c语言程序综合实验111报告报告 综合实验一.docx(68页珍藏版)》请在冰豆网上搜索。
c语言程序综合实验111报告报告综合实验一
c语言程序综合实验1-11报告报告综合实验一
程序设计综合实验
(课程代码0474002)
实验地点:
X
实验学期:
第x学期
学生班级:
学生学号:
学生姓名:
任课教师:
信息科学与技术学院
2013年3月
实验一:
ATM机用户操作界面及业务逻辑编写
实验目的及内容
根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法。
根据ATM的工作流程编写其业务逻辑,掌握搭建一个完整应用系统的方法及软件编程思想。
实验要求
(1)除提示用户输入的数字外,界面上不能响应、出现任何其它用户输入;
(2)每个菜单界面独立显示,不要出现多组菜单重叠显示的现象;务逻辑可以多次执行,直到用户选择退出业务;
(3)用户选择一种语言后,进入主业务界面。
下面以以中文界面为例介绍其它业务。
实验步骤及核心代码
反复执行,知道用户选择退出。
switch(f)
{case'1':
{denghao();
printf("此账户有,%.2f元\n",x);
printf("请按任意键继续\n");
denghao();
getch();
};break;
case'2':
{
denghao();
printf("输入您要存入的数目:
");
scanf("%f",&y);
printf("\n按任意键继续\n");
denghao();
x=x+y;
getch();
};break;
case'3':
{denghao();
printf("输入您要取钱的数目:
");
scanf("%f",&z);
while(z>x)
2
{denghao();
printf("\n余额不足,按任意键后重新输入~\n");
denghao();
getch();
system("cls");
printf("输入您要取钱的数目:
");
scanf("%f",&z);
}
if(z<=x)
{printf("\n按任意键继续\n");
x=x-z;
denghao();
getch();
}
};break;
}
if(f=='4')
{system("cls");
break;
}
}
3
实验二:
机制转换器
实验目的及内容
写一个“计算器”程序,实现十进制、二进制、十六进制的相互转换。
实验要求
(1)转换要求包括整数和小数;
(2)提供清晰、友好的用户界面;
(3)各种转换可以重复多次执行,知道用户选择“退出”按钮。
实验步骤及核心代码
while
(1)
{boolflag=true;
system("cls");
printf("inputa十进制数字\n");
charshit[80];
gets(shit);
sprintf(shit,"%lf",cheat);
n=strlen(shit);
for(i=0;i {if((shit[i]<'0'||shit[i]>'9')&&shit[i]! ='.') {flag=false; printf("Inputerror! \n"); break; } } intm=-1; for(i=0;i if(shit[i]=='.'){ m=m+1; if(m>=1) {printf("Inputerror! "); flag=false; break; } } if(flag==true) { 4 break; } } shier(x); system("cls"); } break; case'2': {system("cls"); printf("inputa十进制数字: \n"); scanf("%lf",&x); shishiliu(x); system("cls"); }break; case'3': {system("cls"); printf("inputa二进制数字: \n"); scanf("%s",ch); printf("得到十进制为: \n"); printf(""); printf("%.64g\n",ershi(ch)); getch(); system("cls"); } break; case'4': {system("cls"); printf("inputa二进制数字: \n"); scanf("%s",ch); ershiliu(ch);system("cls"); }break; case'5': {system("cls"); printf("inputa十六进制数字: \n"); scanf("%s",ch); printf("得到十进制为: \n"); printf(""); printf("%.64g\n",shiliushi(ch)); printf("\n"); getch(); system("cls"); }break; case'6': 5 {system("cls"); printf("inputa十六进制数字: \n"); scanf("%s",ch); shiliuer(ch); system("cls"); } break; case'7': {system("cls"); printf("\n"); bExit=1; }break; default: system("cls"); printf("Inputerror! \n"); getch(); system("cls"); break; } } 6 实验三: 随机数生成及抽奖 实验目的及内容 用均匀分布随机数生成随机数。 根据随机数编写一个抽奖程序。 实验要求 (1)据用户的输入,控制随机数生成的数目,随机数用动态数组保存; (2)用户的输入,控制随机数的范围: 比如能够生成一组【a,b】范围内的随机数。 实验步骤及核心代码 printf("Inputthetotalnumberofthepeople: "); scanf("%d",&n); printf("=======================================\n"); printf("Informationofall: \n"); srand((int)time(0)); for(i=1;i<=n;i++) a[i]=rand()%100; for(i=1;i<=n;i++) printf("%d: p%d,hisnumberis%d\n",i,i-1,a[i]); printf("\nPressanykeytodrawlottry....\n\n\n"); k=rand()%100; m=1; for(i=1;i<=n;i++) if(a[i]==k) {printf("Thewinneris: p%d,hisnumberis%d\n",i-1,k); printf("Ihevalidlottrynumberis: %d\n",k); m=0; } while(m==1){ printf("Iheinvalidlottrynumberis: %d\n",k); k=rand()%100; for(i=1;i<=n;i++) if(a[i]==k) { printf("Thewinneris: p%d,hisnumberis%d\n",i-1,k); printf("Ihevalidlottrynumberis: %d\n",k); m=0; } } 7 实验四: 插入排序和快速排序,实验目的及内容 生成一组随机整,对该组数据进行排序,采用插入排序法。 生成一组随机整,对该组数据进行排序,采用快速排序法。 实验要求 (1)数组的长度由用户输入; (2)随机数范围在【100,1000】范围内; (3)采用直接插入和普通快速排序法; (4)根据用户要求,可以实现增序、降序两种排序。 实验步骤及核心代码 插入升序: voidfun1(inta[],intn) { inti,j,x; for(j=0;j {x=a[j]; i=j-1; while(i>=0&&a[i]>x){ a[i+1]=a[i]; ;i-- } a[i+1]=x; } for(j=0;j printf("%d",a[j]); printf("\n"); } 插入降序: voidfun2(inta[],intn) { inti,j,x; for(j=0;j {x=a[j]; i=j-1; while(i>=0&&a[i] a[i+1]=a[i]; i--; } a[i+1]=x; } 8 for(j=0;j printf("%d",a[j]); printf("\n"); } 快速升序: voidfun3(inta[],intn){inti,j,p,x,t; i=0; j=n+1; x=a[i]; while (1){ while(i<=n&&a[++i] while(j>=0&&a[--j]>x); if(i>=j)break; t=a[i];a[i]=a[j];a[j]=t; } for(p=i;a[p]<=x&&p<=n;p++); p--; a[0]=a[p]; a[p]=x; for(j=0;j printf("%d",a[i]); printf("\n"); } 快速将序: voidfun4(inta[],intn){inti,j,p,x,t; i=0; j=n+1; x=a[i]; while (1){ while(i<=n&&a[++i]>x); while(j>=0&&a[--j] if(i>=j)break; t=a[i];a[i]=a[j];a[j]=t; } for(p=i;a[p]<=x&&p<=n;p++); p--; a[0]=a[p]; a[p]=x; for(j=0;j printf("%d",a[i]); printf("\n");} 9 实验六: 学生信息数据结构及小型管理信 息系统 实验目的及内容 采用单链表实现对一组学生信息的组织。 完成一个小型学生管理信息系统,实现除存储意外其他基本的信息管理功能。 实验要求 (1)编写友好的用户界面; (2)采用带头节点的单链表实现对数据的组织,不允许使用数组;(3)学生信息必须包括如下三项: 学号(4位编号,如0101,所有学生学号长度一致) 姓名 成绩 (4)功能要求: 添加学生: 提示用户输入信息,添加一个学生信息(学号长度进行检查)。 总人数显示。 打印: 按顺序在屏幕上打印所有学生的信息。 (5)链表中的数据有序排列: 要求根据学号升序排列。 (6)添加如下功能: 删除: a.根据学号删除任意学生信息;b.删除所有学生信息。 要求删除成功与否 都需要打印相印的提示信息,如“学号为****的学生删除成功”,“学号为**** 的学生不存在,删除失败”等。 查询: 根据学好查询任意学生,并将信息打印在屏幕上。 编辑: 修改任意一个学生除学号意外的信息,如姓名、成绩等。 实验步骤及核心代码 voidPrintAll(list*h)//打印 {system("cls"); list*p=h->next; inti; printf("======================\n"); printf("所有学生信息: \n"); for(i=1;p! =NULL;i++) { printf("%d: %s%s%f\n",i,p->ID,p->name,p->score); p=p->next; } getch(); } voidPrintCnt()//打印总人数 10 { system("cls"); printf("======================\n"); printf("学生总人数: %d\n",n); printf("======================\n"); getch(); } voidAdd(list*h)//添加{ system("cls"); list*p,*p1=h,*p2=h; intk=1; p2=p2->next; printf("======================\n"); printf("输入学生信息: \n"); p=(list*)malloc(sizeof(list)); printf("学号: "); scanf("%s",p->ID); while(strlen(p->ID)! =4){ printf("输入非法,学号必须是四位数,请重新输入! \n"); printf("学号: "); scanf("%s",p->ID); } printf("姓名: "); scanf("%s",p->name); printf("分数: "); scanf("%s",&p->score); printf("\n"); while(p1->next! =NULL) { if(atol(p2->ID)>atol(p->ID)) {p1->next=p; p->next=p2; k=0; break; } p1=p2;p2=p2->next; } if(k) p1->next=p; p->next=NULL; n++; } 11 voidSearch(list*h)//查找{ list*p; charin_ID[4]; intk=1; while(k) { p=h; system("cls"); printf("======================\n"); printf("请输入要查找学生的学号: \n"); printf("学号: "); scanf("%s",&in_ID); for(;p! =NULL;) {if(strcmp(p->ID,in_ID)==0) {printf("学号为%s的学生信息: 姓名%s,分数%f \n",in_ID,p->name,p->score); k=0; break; } p=p->next; } if(k) {printf("找不到学号为%s的学生,请重新输入! \n",in_ID);} getch(); } getch(); } voidEdit(list*h)//编辑{ list*p; charin_ID[4],i; intk=1; while(k) { p=h; system("cls"); printf("======================\n"); printf("请输入要查找学生的学号: \n"); printf("学号: "); scanf("%s",in_ID); 12 for(;p! =NULL;) { if(strcmp(p->ID,in_ID)==0) { printf("学号为%s的学生信息: 姓名%s,分 数%f\n",in_ID,p->name,p->score); k=0; break; } p=p->next; } if(k) { printf("找不到学号为%s的学生,请重新输入! \n",in_ID); getch(); } } printf("请选择修改项目: \n"); printf("1: 姓名\n"); printf("2: 分数\n"); i=getch(); if(i=='1') {printf("请输入姓名: "); scanf("%s",p->name); } else { printf("请输入分数: "); scanf("%f",&p->score); } getch(); } voidDelete(list*h)//删除{ charin_ID[4]; list*p=h,*p1; intk=1; while(k) { p1=p=h; system("cls"); PrintAll(h); 13 printf("======================\n"); printf("输入要删除学生的学号: (如果删除所有学生请输入0000)\n"); printf("学号: "); scanf("%s",in_ID); if(strcmp(in_ID,"0000")==0) { h->next=NULL; return; } for(;p! =NULL;) { if(strcmp(p->ID,in_ID)==0) { printf("学号为%s的学生信息: 姓名%s,分数%f\n",in_ID,p->name,p->score); k=0; break; } p1=p; p=p->next; } if(k) { printf("找不到学号为%s的学生,请重新输入! \n",in_ID); getch(); } } p1->next=p->next; n--; } 14 实验七: 文本文件和二进制文件格式的保存、读取 实验目的及内容 采用文本文件进行数据的存储和读取。 采用二进制文件进行数据的存储和读取。 实验要求 (1)用文本(字符)文件格式进行数据的保存和读取; (2)文件的存储路径,提示用户输入; (3)存盘成功或者失败,输出提示信息; (4)数据读入后能够修改、保存。 (5)修改存盘及数据存储函数,添加用二进制文件实现数据的保存与读取功能;,实验步骤及核心代码 voidsave1(list*h)//保存文件 { FILE*fp; list*p=h->next; charname[20]; printf("输入文件名: \n"); scanf("%s",name); if((fp=fopen(name,"w"))==NULL) { printf("存盘失败~\n"); return; } else printf("数据已经成功保存到%s\n",name); while(p! =NULL) { fprintf(fp,"%s%s%.2f\n",p->ID,p->name,p->score); p=p->next; } fclose(fp); getch(); } voidread1(list*h)//读取文件 { FILE*fp; 15 list*p,*p1=h; charch,name[20]; printf("输入文件名: \n"); scanf("%s",name); if((fp=fopen(name,"r"))==NULL) { printf("不能打开文件~\n"); return; } while (1) { if(feof(fp))break; p=(list*)malloc(sizeof(list)); fscanf(fp,"%s%s%f\n",p->ID,p->name,&p->score); printf("%s%s%2f\n",p->ID,p->name,p->score); p1->next=p; } while (1) { if(feof(fp))break; p=(list*)malloc(sizeof(list)); fscanf(fp,"%s%s%f\n",p->ID,p->name,&p->score); printf("%s%s%2f\n",p->ID,p->name,p->score); p1->next=p; p->next=NULL; p1=p; n++; } ch=getch(); fclose(fp); } voidsave2(list*h)//二进制保存 { FILE*fp; list*p=h->next; charch,name[20]; printf("输入文件名: \n"); scanf("%s",name); if((fp=fopen(name,"wb"))==NULL) {printf("存盘失败~\n"); 16 return; } else printf("数据已经成功保存到%s\n",name); while(p! =NULL) { fprintf(fp,"%s%s%.2f\n",p->ID,p->name,p->score); p=p->next; } fclose(fp); ch=getch(); } voidread2(list*h)//二进制读取 {FILE*fp; list*p,*p1=h; inti; charch,name[20]; printf("输入文件名: \n"); scanf("%s",name); if((fp=fopen(name,"rb"))==NULL) {printf("不能打开文件~\n"); return; } while (1) { if(feof(fp))break; p=(list*)malloc(sizeof(list)); fscanf(fp,"%s%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序综合实验111报告报告 综合实验一 语言 程序综合 实验 111 报告 综合