c语言课程设计上_第1页
c语言课程设计上_第2页
c语言课程设计上_第3页
c语言课程设计上_第4页
c语言课程设计上_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

京华大学信息科学S枝木当浣

编程微君械告

2012—2013当耳第一学期

薛程名称;©语言/程被计上机

W<0:当才鼠俵/名,用器针

优化―-前债揶名,

■行:取款管理筏取

老号:_J20910115,

胜名:----却强-----------

专业城公:----电3倍息工程一

----卓越电31201—

播导老师:——曾献辉---------

《C语言程序设计上机》指导书

一、课程设计目的

灵活使用C语言进行程序编写,巩固有关语句,指针,结构体,

文件操作等概念和方法。提高调试程序的技能,提高软件编写的能力。

二、设计内容和要求

本课程设计的内容分为两部分:基础任务和可选课题。

1.基础任务

1.1任务要求:

学生成绩排名

1)定义一个数组用以存放学生的成绩。

2)从键盘输入10个学生成绩

3)采用冒泡法,将学生成绩按照从高到低进行排序

4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成

绩数组

5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改

为从低到高排列。

6)将以上每一步骤的结果均打印输出,验证程序是否正确实现题

目要求

1.2算法流程图:

1.3主要代码:

#include<stdio.h>

intmain()

(

inta[ll];

inti,j,t,c;

printf(〃输入10个学生的成绩:\n〃);

for(i=0;i<10;i++)

scanf("%d〃,&a[i]);

printf(〃\n〃);

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]<a[i+l])

<t=a[i];a[i]=a[i+l];a[i+l]=t;}

printf(〃学生成绩从高到低为:\n〃);

for(i=0;i<10;i++)

printf(z,%d,z,a[i]);

printf(〃\n〃);

printfC\n请输入第十一个学生的成绩\n〃);

scanf(〃%d〃,&c);

a[10]=c;

for(j=0;j<ll;j++)

for(i=0;i<10~j;i++)

if(a[i]<a[i+l])

{t=a[i];a[i]=a[i+l];a[i+l]=t;}

printf(〃现在排序结果为:\n〃);

for(i=0;i<ll;i++)

printfa[i]);

printf(〃\n〃);

printf(〃学生成绩从低到高为:\n〃);

for(i=10;i>=0;i―)

printf(,z%dz,,a[i]);

return0;

)

2.1程序要求:

用指针优化学生成绩排名

1)定义数组stu[10]存放10个学生的成绩,从键盘输入数据,

用指针实现

2)将数组stu[I0]的内容输出到屏幕上,要求用指针实现

3)将成绩数组按照从高到低进行排序,要求用指针实现

4)将第三步内容放在函数中实现,在主函数中调用实现排序,用

指针实现,输出排序后的成绩单

5)采用指针方法,输入字符串"studentscore",复制该字符

串并输出(复制字符串采用库函数或用户自定义函数)

2.2算法流程图

copy_string

2.3主要代码:

#include<stdio.h>

intmain()

{voidcopy_string(charfrom[],charto[]);

chara[30];

charb[30];

voidinv(intx[]zintn);

inti,stu[10],*p;

p=stu;

printf(“请输入10个学生的成绩:\n”);

for(i=0;i<10;i4-+)

scanf("%d"zp++);

printf("\nn);

printfC'10个学生成绩分别是:\n“);

for(i=0;i<10;i++)

printf(”%dn,stu[i]);

printf("\n");

p=stu;

«nv(p,10);

printf("学生成绩从高到底为:\n“);

for(p=stu/i=0;i<10;i++)

{printf("%d",*p);

P++;

)

printf("\n");

copy_string(azb);

printf("请输入字符串:\n“);

scanf("%s%s"/azb);

printf("\stringa=%s%s\nstringb=%s%s\n”,a,b,a,b);

return0;

)

voidinv(intx[],intn)

{int

for(i=0;i<n-l;i++)

{k=i;

for(j=i+l;j<n;j++)

if(x[j]>x[k])k=j;

if(k!=i)

{t=x[i];x[i]=x[k];x[k]=t;}

)

)

voidcopy_string(charfrom口,charto[])

{inti=0;

while(from[i]!='\0,)

{to[i]=from[i];i++;}

to[i]='\0';

)

3」程序要求:

课题5:银行存取款管理设计

功能:能够输入和查询客户存款取款记录。在客户文件中,每个客户是一条记录,

包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额;在

存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数

目、经办人。类别分为取款和存款两种。本系统能够输入客户存款或取款

记录;根据客户姓名查询存款和取款记录。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,输入客户的必要信息,能对文件进行显示、输入、修订、

删除等。

3、进一步要求:完成客户姓名查询存款和取款记录,并能得到每次帐户总

金额。

要求:1、用C语言实现系统;

2.利用结构体教组实现信息的保存:

3.2设计说明:

功能介绍:

1、能录入用户存取款的基本信息,包括客户姓名、性别、年龄、住址以及

存取款日期、数目等基本信息,保存到结构体数组中。

2、能根据输入客户姓名进行存取款信息的查询以及修改、删除等操作。

3、能根据客户姓名进行查找后,以列表的方式将客户存取款信息显示在屏

幕上。

3.3程序组成框图与流程图:

(1)组成图:

银行存取款管理系统

要求根据客

户姓名查找

(2)流程图:

main

voidkehu()

M(5)

注示:

M(l)=printf(*'।-------------------------------------1\nH);

printf(u|1:客户资料查询I\nn);

printf(u1-------------------------------------1\n");

printf(M♦FTI♦请输入您要查询的客户的姓名:\n");

M(2)二printfV।--------------------------------------1\n");

printf(uI2:客户资料添加I\nH);

printfC1-------------------------------------1\n");

请输入新客户的姓名和卡号(1-245):

printf(H------------请输入姓名:\n");

scanf("%sn,r);

printfC'------------请输入卡号:\n");

M(3)=printf(HI-------------------------------------1\nn);

printfCI3:客户资料修改I\n");

printf(n1-------------------------------------1\nH);

・请输入您要修改的客户的姓名和卡号.■■一:

W“);

printf("-----------请输入姓名:\n");

scanf(n%s",c);

printfC----------请输入卡号:\n");

M(4)=printfCI-------------------------------------1\nu);

printfCI4:客户资料删除I\nu);

printf(H1-------------------------------------1\nu);

请输入您要删除的客户姓名和卡号■■■.

■:\nu);

printf("------------请输入姓名:\n");

scanf(H%sH,c);

printf("------------请输入卡号:\n");

M(5)=fprintf(stderrj输入有误!");

voidkehul(structcoup[],char*re,long*h)

_JL

FILE*fp;

voidkehup(siructcou*p,char*re,long*h)

printf("客户【%s】详细资料\n”,re);

voidkehu2(structcou*p,char*re,longh)

FlLE*fp;

voidkehu3(structcou*p,char*re,longh)

FILE*fp;

voidkehu4(structcou*p,char*re,longh)

FILE*fp;

voidcunql()

注示:

N(1)=printf("।--------------------------------------1\nM);

printf("II.存款办理I\n");

printf("1--------------------------------------1\nu);

printf("-r-r-r请输入办理存款业务的客户的姓名利卡号(1-245)-LLT\n\n");

printf("------------输入客户姓名:\n");

scanf("%s'\g);

printf("------------输入客户卡号:\n");

scanf("%ld",&ml);

N(2)=printf("i--------------------------------------1\n");

printf("I2:取款办理I\n");

printf("1--------------------------------------1\n");

printfC'-i-r-r请输入办理取款业务的客户的姓名司卡号(1-245)-LLT\n\n");

printf("------------输入客户姓名:\n");

scanf("%s",g);

printf("------------输入客户卡号:\n");scanf("%kT,&ml);

cunql2(w,g,ml);

N(3)=printf(stderr,"输入有误!");

voidcunqll(structcou*p,char*re,longh)

FILE*fp;

voidcunql2(structcou*p,char*re,longh)

注示:

Z(l)=printf(nI----------------------------------1\n");

printf(HI1:存款查询I\nH);

printfC,1----------------------------------1'n");

printfChr-rLT请输入您要查询的客户的姓名:\n");

scanf("%s”,v);

cunq21l(w,v,&t);

cunq212(w,v,&t);

Z(2)=printf("i------------------------------1W");

printf("I2:取款查询I\n");

printf("1------------------------------1\n");

printf("-rLT11请输入您要查询的客户的姓名:\n");

scanf("%s",v);

cunq221(w,v,&t);

cunq222(w,v,&t);

Z(3)=fpriiHf(slderrJ输入有误!");

voidcunq211(structcoup[],char*re,long*h)

FILE*fp;

voidcunq212(structcou*p,char*re,long*h)

printf("客户1%s]存款明细\n【e);

voidcunq221(structcoup[],char*rejong*h)

FILE*fp;

voidcunq222(structcou*p,char*re,long*h)

printf("客户【%s]存款明细\n”,re);

voidhelp()

printf("\n");

3.4程序代码:

#include<stdio.h>

#include<string.h>

voidkehu();

voidkehul(structcoup[],char*re,long*h);/*(把顾客资料)从文件读到缓

冲区*/

voidkchu2(structcou*p,char*re,longh);/*客户资料输入*/

voidkehu3(structcou*p,char*re,longh);/*新客户资料输入*/

voidkehu4(structcou*p,char求reJongh);/*资料清除列

voidkehup(structcou*p,char*re,long*h);/*打印顾客资料*/

voidcunql();

voidcunql1(structcou*p,char*re,longh);/*客户存款资料的键入叼

voidcunql2(structcou*p,char*rc,longh);/*客户取款资料的键入列

voidcunq2();

voidcunq211(structcoup[],char*reJong*h);/*(把顾客存款资料)从文件读

到缓冲区*/

voidcunq212(structcou*p,char*re,long*h);

voidcunq221(structcoup[],char*rc,long*h);/*(把顾客取款资料)从文件读

到缓冲区*/

voidcunq222(structcou*p,char*re,long*h);

voidhelp();

longt;

externstructcou

(

longb;

charx[20J;

longin;

chara[50];

longd;

floatj;

longbe;

charjin[20];

charjin2[2OJ;

chart[20];

floatjl;

floatj2;

floatj3;

floatj4;

)w[200];

structcouw[200];

voidmain()

(

intm;

while(l)

・■银行存取款管理系统・一

——\n“);

printf("................................................................................................【功能选

择】.............................\nn);

printf(M1:客户添加与操作2:存取款办理3:存取款查询4:关于W");

printf(',\n------------------------------------------------------------------------------------------------

------\n");

printfCt请按相应的数字选择您的需要

\n);

scanf("%d",&m);

switch(m)

(

casel:kehu();break;

case2:cunql();brcak;

case3:cunq2();break;

case4:help();break;

)

getchar();

printf("\n\n\n\n\n------——...............按回车键返回主界

面...”);

gctchar();

)

)

voidkehu()

intm;

charr[20],b[20],c[20];

longh,k;

printf("\ni『);

printf("\n客户文件:1:客户资料查询)

printf("\n2:客户资料添加)

printf(M\n3:客户资料修改)

printf("\n4:客户资料删除)

printf(H\n5:后退\n\n");

prmtf("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

・\n");

printfC,.................................................................-按相应的数字以选择您的需要

scanf("%d",&m);

switch(m)

case1:

printfC,i-------------------------------------1\nn);

printf(uI1:客户资料查询I\nM);

printf(u1-------------------------------------1\n");

printfC♦FT।♦请输入您要查询的客户的姓名:\n”);

scanf("%su,b);

kehul(w,b,&t);产从文件读到缓冲区

kchup(w,b,&t);/*打印*/

break;

case2:

printf(n|-------------------------------------1\n");

printfC'I2:客户资料添加I\n");

printf(n1-------------------------------------1\nM);

请输入新客户的姓名和卡号(1・245):..

\n”);

printf("------------请输入姓名:\n");

scanf("%sn,r);

printfC------------请输入卡号:\n");

scanf("%ldK,&h);

kehu2(w,r,h);/*把数据从缓冲区输入到文件*/

break;

case3:

printfC'|-------------------------------------1\n”);

printf(HI3:客户资料修改I\n");

printf(n1-------------------------------------1\nH);

・请输入您要修改的客户的姓名和卡号.

■:\n");

printf("------------请输入姓名:\n");

scanf("%s”,c);

printf("-----------请输入卡号:\n");

scanf("%ld”,&k);

kehu3(w,c,k);/*把新数据从缓冲区输入到文件*/

break;

case4:

pnntf(Hi-------------------------------------1\nu);

printf("I4:客户资料删除I\nu);

printf(H1-------------------------------------1\nu);

printf(清输入您要删除的客户姓名和卡号■■■.

■:");

printf(M-----------请输入姓名:\n");

scanf("%sH,c);

printf("-----------请输入卡号:\n");

scanf(H%ld'\&k);

kehu4(w,c,k);/*把0数据从缓冲区输入到文件*/

break;

case5:break;

default:

fprintf(stderr」输入有误!");

}

1

voidkehul(structcoup[l,char*re,long*h)

{FILE*fp;

fp=fopen(re,"rb");

fread(h,4J,fp);

fread(&p[*h],sizeof(structcou),l,fp);

fclose(fp);

voidkehup(structcou+p,char小re,long小h)

(

printfC'客户[%s]详细资料\n"je);

printf(*'--------------------------------------------------------------------------------------

——“);

printf("客户卡号");

printf("%ld\n",*h);

[•]]f―MflB■OBM.■W.»«■■ABM-Maa■-MM■.MOB.■MM■

--一■J).

printf("客户密44”);

prinlf(”%kl\n”,p[*h].m);

r[tf("——・SB".■W.••・一■-_・«*■■

—-■MB■■")♦

printf(“客户电话”);

printf(,,%ld\n',,p[*h].d);

printf(n--------------------------------------------------------------------------------------

■—一■—■■);

printff客户地址”);

printf("%s\n",p[*h].a);

printf(n------------------------------

printf("账户当前金额");

printf(n%.2f\n';p[*h].j);

printf(n--------------------------------

1

voidkehu2(structcou*p,char*re,longh)

{

FILE*fp;

fp=fbpen(re,"wb");

fwrite(&h,4J,fp);

.请键入顾客【%s】(卡号[%ld])的客户资料:■■■■

p[h].b=h;

printf("\n-r-r-r-r-r客户密码:\n");

scanf("%ld",&p[h].in);

printf("\n-r-r-r-r-r客户地址:\n");

scanf("%s",p[h].a);

printf(u\n-irTln客户电话:(只接受1()位以下的号码)\n");

scanf("%ld",&p[h].d);

printf(u\nnrTln客户当前金额:(建议不要使账户满100万)\n");

scanf("%f;&p[h].j);

fwrite(&p[h],sizeof(structcou),l,fp);

fclose(fp);

voidkehu3(structcou*p,char*re,longh)

FILE*fp;

fp=fopen(re,"wb");

fwrite(&h,4,l,fp);

printf("\n..■请键入顾客【%s】(卡号[%Id])的新的客户资料:■■■

\n';re,h);

p[h].b=h;

printf("\n-r-r-r-r-T修改后客户密码:\n");

scanf(u%ld",&p[h].ni);

printf("\n-r-r-rT-r修改后客户地址:\n)

scanf("%s\p[h].a);

printfC'\n-|rTl1修改后客户电话:\n");

scanf(n%ldH,&p[h].d);

fwrite(&p[h],sizeof(structcou),l,fp);

fclose(fp);

)

voidkehu4(structcou*p,char*re,longh)

(

FILE*fp;

fp=fopen(re,"wb");

fwrite(&h,4,l,fp);

printf("\n\n\n\np广丁请输入0键以清除p厂1

scanf(u%s",pLhJ.a);

p[h].m=0;

p[h].d=0;

p[h].j=O;

p[h].bc=0;

fwritc(&p[h],sizcof(structcou),l,fp);

fclose(fp);

—*/

voidcunql()

(

intm;

charg[20];

longm1;

printf(M\n1.存款办理2.取款办理3:后退

\n”);

pri【】【(、】■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■”);

printf(u\n\n---------------------------------------------按相应的数字以选择您的需要

--An'");

scanf(n%d",&m);

switch(m)

I

case1:

prinlf(Hi-------------------------------------1\n");

printf(nI1.存款办理I\nn);

printf(n1-------------------------------------1\nn);

printfC'-r-TT请输入办理存款业务的客户的姓名和卡号(1-245)T-

\n\nM);

printf(u-----------输入客户姓名:\n");

scanf(n%sM,g);

printf(n-----------输入客户卡号:\n");

scanf(n%ld",&ml);

cunqll(w,g,m1);/*存款数据输入*/

break;

case2:

printfC,|-------------------------------------1\n");

printf(uI2:取款办理I\nu);

printf(u1-------------------------------------1\nH);

printfC,-r-r-r请输入办理取款业务的客户的姓名和卡号(1-245)丁-

\n\n");

printf("-----------输入客户姓名:\n");

scanf("%sM,g);

printf(n-----------输入客户卡号:\n”);scanf("%Id”,&m1);

cunql2(w,g,ml);

break;

case3:break;

default:

Srimf(stderr,”输入有误!”);

)

voidcunq11(structcou仙char*re,longh)

{

FILE*fp;

fp=fopcn(rc,"wb");

fwrite(&h,4,l,fp);

・\n\n");

printfC,存款办理\n\n”);

\nu);

printf(n__________请键入顾客【%s】(卡号%ld)的存款明细:_____________

\n'\re,h);

printfC*------------请输入存款流水号An");

scanfC'%ld",&p[h].bc);

printfC*-----------请输入存款数目(建议不要一次存超过百万):\n");

scanf("%F,&p[h].jl);

p[h].j2=p[h].j+p[h].jl;

p[h].j=p[h].j2;

printf(H-----------经办人:\n");

scanf("%s*',p[h].jin);

printf("-----------办理时间(形如2012年06月2B):\n");

scanf(H%sH,p[h].t);

fwrite(&p[h],sizeof(striictcou),l,fp);

fclose(fp);

voidcunq!2(structcou*p,char*re,longh)

FILE町p;

fp=fopen(re,"wb");

fvvrite(&h,4,l,fp);

prin[f("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■\n\n',);

printf(n取款办理\n\n");

\n\nH);

printf("________请键入顾客【%s】(卡号%ld)的取款明细:___________

\n\n",re,h);

printf("------------请输入取款流水号:\n”);

scanf("%ld",&p[h].bc);

printf(M------------请输入取款数目(建议不要一次存超过百万):\n");

scanf(M%r,&p[h].j3);

p[h].j4=p[h].j-p[h].j3;

p[h].j=p[h].j4;

printf(M------------经办人:\n”);

scanf(M%sH,p[h].jin2);

printf("------------办理时间(形如2012年06月2H):\n");

scanfC'%sM,p[h].t);

fwrite(&p[h],sizeof(structcou),1,fp);

fclose(fp);

(

—*/

voidcunq2()

intm;

charv[20];

print£(”■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■\n\n”);

printf(M1.存款查询2.取款查询3:后退

\n\n");

[)口["(■・・■■■■■■■■■■■■■■■■■■■■■■■■■■■■

,\n");

printfC*..............................................................按相应的数字以选择您的需要

-----\n");

scanf("%d,r,&m);

switch(m)

(

case1:

printf(ui-------------------------------------1W);

printfC'I1:存款查询I\nn);

printfC*1-------------------------------------1\nn);

printf("।।।।।请输入您要查询的客户的姓名:\n”);

scanf(n%s\v);

cunq21l(w,v,&t);

cunq212(w,v,&t);

break;/*注意*/

case2:

printfC'|-------------------------------------1\n");

printf("I2:取款查询I\n");

printfC11-------------------------------------1\nu);

printf('hr-TII请输入您要查询的客户的姓名:\n”);

scanf(n%su,v);

cunq221(w,v,&t);

cunq222(w,v,&t);break;

case3:brcak;

default:

fprintf(stderr,"输入有误!)

)

voidcunq211(structcoup[],char*re,long*h)

(

HLE*fp;

fp=fopen(re,"rb,t);

fread(h,4JJp);

fread(&p[*h],sizeof(structcou),l,fp);

fclose(fp);

)

voidcunq212(structcou*p,char*re,long*h)

(

printf("客户【%s]存款明细",re);

printf("------------------------------------------------------------------------------------------

----”);

printfC,客户卡号”);

printf(H%ld\nn,*h);

printf("-----------------------------------------------------------------------------------------

・■・

printf("存款流水号”);

printf(”%ld\n”,p[*h].bc);

printf("-------------------------------------------------------------------------------------

■■—―«■■♦

printf(M类别");

printf("存款");

printf("-----------------------------------------------------------------------------------------

printf(M存款数目");

printf(”%.2f\iT,p[*h].jl);

।nt-*■w■■»———■■■———■■»—————一■■・———■■■——■■»———•■■■■■——■w——―■■—-—■■■——■■—-—

------“);

printf(u账户当前总金额”);

printf("%.2f\nH,p[*h].j2);

printf("------------------------------------------------------------------------------------------

______・”)•

printf("经办人”);

printf("%s\n",p[*h].jin);

printf("-----------------------------------------------------------------------------------------

----");

printf("客户地址”);

printf(H%s\n",p[*h].a);

printf(n------------------------------------------------------------------------------------------

——");

printfC,办理时间”);

printf("%s\n",p[*h].t);

printf("------------------------------------------------------------------------------------------

----”);

voidcunq221(structcoup[],char*re,long*h)

FILE*fp;

fp=fopcn(re,"rb");

fread(h,4JJp);

frcad(&pl*h],sizcof(structcou),l,fp);

fclose(fp);

)

voidcunq222(structcou*p,char*re,long*h)

(

printf(M客户【%s】取款明细\nM,re);

printf("-------------------------------------------------------------------------------------------");

printf(“客户卡号”);

printf(M%ld\n",*h);

printf。-----------------------------------------------------------------");

printf("取款流水号");

printf(,,%ld\n,',p[*h].be);

printf(n-------------------------------------------------------------------------------------------”);

printf(“类别”);

printf("取款\n");

printfC*----------------------------------------------------------------------------------------------

”);

printf("取款数目");

printf(',%.2f\n,',p[*h].j3);

printf。-------------------------------------------------------------------

");

printf(”账户当前总金额”);

printf(',%.2f\n",p[*h].j4);

printf。-------------------------------------------------------------------

");

printf("经办人");

printf("%s\n”,p[*h].jin2j;

printfC*-----------------------------------------------------------

温馨提示

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

最新文档

评论

0/150

提交评论