c语言程序综合实验111报告报告 综合实验一.docx

上传人:b****3 文档编号:26654885 上传时间:2023-06-21 格式:DOCX 页数:68 大小:29.10KB
下载 相关 举报
c语言程序综合实验111报告报告 综合实验一.docx_第1页
第1页 / 共68页
c语言程序综合实验111报告报告 综合实验一.docx_第2页
第2页 / 共68页
c语言程序综合实验111报告报告 综合实验一.docx_第3页
第3页 / 共68页
c语言程序综合实验111报告报告 综合实验一.docx_第4页
第4页 / 共68页
c语言程序综合实验111报告报告 综合实验一.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

c语言程序综合实验111报告报告 综合实验一.docx

《c语言程序综合实验111报告报告 综合实验一.docx》由会员分享,可在线阅读,更多相关《c语言程序综合实验111报告报告 综合实验一.docx(68页珍藏版)》请在冰豆网上搜索。

c语言程序综合实验111报告报告 综合实验一.docx

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%

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

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1