程序设计基础课程设计报告 内容样例

合集下载

《程序设计基础》课程设计报告参考样本

《程序设计基础》课程设计报告参考样本

《程序设计基础》课程设计报告仅供参考(要求交纸质报告,A4纸张,可交打印稿)《程序设计基础》课程设计报告题目:日期:班级:学号:姓名:一.设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计基础(C语言)》课程后进行的一次全面的综合练习。

本课程设计的目的:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二.课程设计任务书(附上选择的题目)例如:题目:学生成绩管理系统某班学生有若干人(不超过40人),期末共考5门课,每个学生的成绩按学号顺序存入计算机。

学生信息如下表所示:设计一个程序,实现学生成绩管理功能。

基本功能:1、提供菜单式的用户界面;2、输入学生的基本信息(应考虑学生学号的唯一性);3、增加或删除学生记录;4、输入姓名或学号,查找某个学生的成绩;5、统计某门课程在100-90,89-80,79-70,69-60,60分以下各分数段人数并显示;6、对学生成绩按总分排序,并将排序结果输出7、使用文件记载学生信息,程序启动时加载学生信息,程序退出时保存学生信息;(进一步功能)要求:1、用C语言实现程序设计;2、系统的各个功能模块要求用函数的形式实现;3、界面友好(良好的人机交互),程序加必要的注释。

三.系统设计方案说明本程序中用到的数据结构的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

四.调试分析内容包括:(1)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;(2)程序算法的改进设想;(3)经验和体会等。

五.用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。

例如:一、开始二、具体信息三、排序四、统计输出不及格的学生名单和对应的课程。

五、查找六、结束六.测试结果列出你的测试结果,包括输入和输出。

程序设计基础课程设计报告

程序设计基础课程设计报告

仲恺农业工程学院课程设计课程《程序设计基础》姓名金峰院(系)计算机科学与工程学院专业班级计算机093学号200910214308指导教师黄明志职称副教授日期 2010年06 月26日仲恺农业工程学院教务处制⏹题目:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:1系统以菜单方式工作2图书信息录入功能(图书信息用文件保存)--输入3图书信息浏览功能--输出4图书信息查询功能--算法查询方式:●按书名查询●按作者名查询5图书信息的删除与修改(可选项)⏹总体设计:✓程序分为六个模块◆主菜单◆图书信息录入◆图书信息浏览◆图书信息查询◆图书信息修改◆系统说明✓程序框图如下:⏹ 详细设计:◆ 主菜单程序框图:◆ 图书信息录入程序框图:◆ 图书信息浏览程序框图:◆ 图书信息查询程序框图:图书信息修改程序框图:系统说明程序框图:软件测试:主界面:信息录入:信息查询:综合设计总结:1.制作菜单时,使用getchar()函数,结果导致功能选择多了回车输入,导致下次选择出错。

解决方法是更换为getch()函数,此函数不需要回车确认,故避免此问题。

2.写输出函数时,遇到选择输出时,屏幕没有反应,检查函数没有错误。

发现为程序执行过快,闪一下就过去。

引入了system()函数中的”pause”参数,在浏览输出后暂停。

3.搜索资料时,算法有点问题,导致不够准确。

所以在后面修改功能里,忽略其它查询方法,只采用isbn搜索。

4.在定义指针数组时,有时会忘记是指针或者是指针变量。

5.生成储存文件时,有时的fopen或者fclose会用错参数或者放错位置。

附录:(源程序)20。

程序设计基础实验报告

程序设计基础实验报告

一、实验目的1. 掌握程序设计的基本概念和编程语言的基本语法。

2. 熟悉编程环境的使用,学会编写、调试和运行简单的程序。

3. 培养逻辑思维能力和问题解决能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 简单计算器(1)功能描述编写一个简单的计算器程序,能够实现加、减、乘、除四种基本运算。

(2)实现步骤1)定义一个函数,用于获取用户输入的两个数和一个运算符。

2)根据运算符进行相应的运算,并返回运算结果。

3)在主函数中调用该函数,打印运算结果。

(3)代码实现```pythondef calculator(num1, num2, operator):if operator == '+':return num1 + num2elif operator == '-':return num1 - num2elif operator == '':return num1 num2elif operator == '/':return num1 / num2else:return "无效的运算符"def main():num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):")result = calculator(num1, num2, operator)print("结果是:", result)if __name__ == "__main__":main()```2. 循环结构(1)功能描述编写一个程序,实现计算1到100之间所有奇数的和。

程序设计基础课程设计报告-内容样例

程序设计基础课程设计报告-内容样例

第一章目的及要求书上有。

第二章需求分析软件设计的一个重要的环节就是需求分析。

本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。

以下是ATM取款机管理系统所需要的需求分析。

ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。

①登录:输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面②挂失功能:确认是否对银行卡进行挂失,挂失后账户无法操作③修改密码:用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码④取款功能:用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内⑤转账功能:用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账号⑥查询功能:用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额模拟ATM取款机的操作:首先录入账户信息,格式如下㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。

㈡、查询功能:查询账户余额。

㈢、取款功能:取款,更新余额。

㈣、挂失功能:挂失后,该账户不能进行任何操作。

㈤、修改密码:输入原密码和新设置密码。

㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析3.1、ATM系统管理3.1.1系统基本功能首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。

另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。

所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并及ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。

基本功能:登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。

查询功能---------查询账户余额。

取款功能---------取款,更新余额。

程序设计基础(C语言)实验报告册

程序设计基础(C语言)实验报告册

《程序设计基础》(c语言)实践报告专业 :计算机科学与技术班级:姓名:学号:教师:《程序设计基础》(c语言)课程组实验一#include<stdio.h>#include<conio.h>main(){printf(" 5 2 0\n");printf("+ 1 3 1 4\n");printf(" 1 8 3 4 * 10\n");4、输入一元二次方程的三个系数,求根。

#include<stdio.h>#include<math.h>void main(){double a,b,c,x1,x2,d;printf("pleae enter a,b,c:\n");scanf("%lf%lf%lf",&a,&b,&c);d=b*b-4*a*c;x1=(-b-sqrt(d))/(2*a);x2=(-b+sqrt(d))/(2*a);printf("x1=%lf\nx2=%lf\n",x1,x2);5、输入三角形的三个边长a,b,c,输出面积s。

#include<stdio.h>#include<math.h>main(){double a,b,c,s,r;printf("pleae enter a,b,c:\n");scanf("%lf%lf%lf",&a,&b,&c);r=(a+b+c)/2;s=sqrt(r*(r-a)*(r-b)*(r-c));printf("s=%lf\n",s);getch();实验2选择结构程序设计一、实验目的二、实验内容三、实验源码及测试数据#include<stdio.h>#include<conio.h>main(){double x,y;scanf("%lf",&x);if(x<1)y=x;if(x>=1&&x<10)y=2*x-1; if(x>=10)y=3*x-11;printf("%lf\n",y);getch();}#include"stdio.h"main(){int a,b,c,k,max,mid,min;#include<stdio.h>#include<math.h>main(){double a,b,c,s,r;printf("please enter a,b,c:\n"); scanf("%lf%lf%lf",&a,&b,&c);if(((a+b)-c)>0&&((a-b)-c)<0){r=(a+b+c)/2;s=sqrt(r*(r-a)*(r-b)*(r-c));printf("s=%lf\n",s);}else printf("不能构成三角形\n"); getch();}#include<stdio.h>#include<conio.h>main(){int a,b,c=0,i;printf("please enter a number\n"); scanf("%d",&a);while(a>0){b=a%10;c=b+10*c;a=a/10;}printf("%d",c);getch();}#include<stdio.h>#include<conio.h>main(){int a;printf("please enter a:\n"); scanf("%d",&a);if(a==100)printf("A\n");if(a>=90&&a<=99)printf("B\n");if(a>=80&&a<=89)printf("C\n");if(a>=70&&a<=79)printf("D\n");if(a>=60&&a<=60)printf("E\n");if(a<60)printf("F\n");getch();}#include"stdio.h"void main()实验3循环结构程序设计一、实验目的二、实验内容三、实验源码及测试数据#include<stdio.h>#include<conio.h>main(){char a[200];int i,b,num=0,emp=0,oth=0,lat=0;gets(a);b=strlen(a);for(i=0;i<b;i++){if(a[i]>='0'&&a[i]<='9')num++;elseif((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))lat++;else if(a[i]==' ')emp++;else oth++;}printf("num=%d\nlat=%d\nemp=%d\noth=%d\n",num,lat,emp,oth); getch();}#include<stdio.h>#include<conio.h>main(){int a=1,i;for(i=1;i<10;i++) {a=2*(a+1);printf("%d\n",a);} getch();}#include<stdio.h> main(){int i,b,a;a=0;for(i=1;i<=100;i++) {b=i%3;if(b==0) a=a+i; printf("%d\n",a);} getch();}#include<stdio.h>#include<math.h>void main(){int k;double n,a,s1,s2,s;s1=0;s2=0;for(n=1;n<=10;n++){a=1;for(k=1;k<=n;k++)a=a*k; s1=s1+a;s2=s2+(n*n*n-3*n*n+2)*pow(-1,n);} s=s1+s2;printf("%lf",s);}#include<stdio.h>#include<conio.h>#include<math.h>main(){int i,j,b,a,c;for(i=2;i<=5000;i++){ a=0;for(j=1;j<i;j++){b=i%j;if(b==0)a=a+j;}if(a==i)printf("%d\n",a); } getch();#include<stdio.h>#include<conio.h>#include<math.h>main(){int i,j,b,a,c;for(i=2;i<=5000;i++){ a=0;for(j=1;j<i;j++){b=i%j;if(b==0)a=a+j;}if(a==i)printf("%d\n",a); }getch();}#include<stdio.h>#include<conio.h>#include<math.h>main(){int a[10],i,zhengshu=0,fushu=0;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){if(a[i]>0)zhengshu++;if(a[i]<0)fushu++;}printf("zhengshu=%dfushu=%d",zhengshu,fushu); getch();}#include<stdio.h>#include<conio.h>#include<math.h>main(){char c;int num=0,oth=0,lat=0;for(;(c=getchar())!='#';){if(c>='0'&&c<='9')num++;else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))lat++; else oth++;}printf("num=%d\nlat=%d\noth=%d\n",num,lat,oth); getch();}#include<stdio.h>main(){int i,a,b,c=0;for(i=1;i<=100;i++){a=i%10;b=i/10;if((a==6)||(b==6))c=c+i;}printf("c=%d\n",c);getch();}#include<stdio.h>main(){int i,a,b,c,d,f,e;e=0;for(i=101;i<1000;i++){b=i%10;c=((i-b*1)%100)/10;d=((i-b-c*10)%1000)/100; f=b*b*b+c*c*c+d*d*d;if(f==i)printf("i=%d\n",i); } getch();}#include<stdio.h>#include<math.h>void main(){double s=0,n,a,b,i,A;printf("输入下限a:");scanf("%lf",&a);printf("输入上限b:");scanf("%lf",&b);printf("输入最小分段n:");scanf("%lf",&n);for(i=a;i<b;i=i+n){A=(pow((4-i*i),0.5)+pow((4-(i+n)*(i+n)),0.5))*n/2; s=s+A;}printf("%lf",s);}#include<stdio.h>#include<math.h>void main(){double e;e=0.1;double x,x0,f,fl;scanf("%lf",&x);do{x0=x;f=3*x0*x0*x0+2*x0*x0-4*x0-6;fl=(9*x0+4)*x0-4;x=x0-f/fl;} while(fabs(x-x0)>e);printf("x=%lf\n",x);}#include<stdio.h>#include<conio.h>#include<math.h> main(){int i,j;for(i=1;i<10;i++) printf("%-5d",i); printf("\n");for(i=1;i<10;i++) {printf("\n");for(j=1;j<10;j++) printf("%-5d",i*j); } getch();}#include<stdio.h>void main(){int q,i,j,a=2,b;printf("%-8d%-8d",a,a); for(i=2;i<=10;i++) {printf("%-8d",2*i);a=a*a;printf("%-8d",a);b=i%5;if(b==0)printf("\n"); } }#include<stdio.h>main(){int i,j,n=1;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%d",n++%10);printf("\n"); }}三、实验源码及测试数据#include<stdio.h>main(){int a[10];int i,j,t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(j=0;j<10;j++)for(i=0;i<10-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;} for(i=0;i<10;i++)printf("%-3d",a[i]);getch();}#include "stdio.h"#include "string.h"scanf("%s",b);c=strlen(a);d=strlen(b);for(i=0;i<c+d;i++)a[c+i]=b[i];printf("%s\n",a);}#include"stdio.h" main(){int i,j,k,a;for(i=0;i<5;i++){ k=i;for(j=0;j<5;j++){k++;if(k>5)a=k-5;else a=k;printf("%d",a);} printf("\n");}}#include<stdio.h>#include<conio.h>#include<math.h>main(){int i,t,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<4;i++){t=a[i];a[i]=a[9-i];a[9-i]=t;} for(i=0;i<10;i++)printf("%d",a[i]);getch();}#include "stdio.h"#include "string.h"void main()int a[7];int i,j,t,b=0,pinjun;for(i=0;i<7;i++)scanf("%d",&a[i]);for(j=0;j<7;j++)for(i=0;i<7-j;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}} for(i=1;i<6;i++)b=b+a[i];pinjun=b/5;printf("%-d\n",pinjun);}#include "stdio.h"#include "string.h"void main(){char a[100];int i=0,b;{scanf("%c",&a[i]);i++; }while(a[i-1]!='#');b=strlen(a);for(i=0;i<b;i++)if(a[i]=='f')printf("%d\n",i+1); }#include<stdio.h>#include<string.h>void main(){int a[5][5];int i,j,k,b,max,min;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);for(i=9;i>=0;i--){printf("NO.%k name:%s\n",name[i][20]); printf("time:%d minites\n",time[i]);printf("floor:%d\n\n",floor[i]);k++;}}#include<stdio.h>#include<string.h>struct team{char name[30];int floor;int time;}st[10],p;实验5函数一、实验目的二、实验内容三、实验源码及测试数据pass=100*k/3 ;return (pass);}#include "stdio.h"#include"string.h"void main(){ char a[200];int i,k;int hanshu(char a[]);int panduan(char a);gets(a);k=hanshu(a);for(i=k;panduan(a[i]);i++) printf("%c",a[i]); printf("\n");}int hanshu(char a[]){int i,l=0, k=0,m,n;int panduan(char a);for(i=0;i<=strlen(a);i++){if(panduan(a[i]))l++;else{ if(l>k) { n=i;k=l;l=0;}else l=0;}}return (n-k);}int panduan(char a){if((a>='a'&&a<='z')||(a>='A'&&a<='Z')) return 1;elsereturn 0;}#include"stdio.h"#include"math.h"#include"string.h"void main(){。

程序的设计基础课程设计报告

程序的设计基础课程设计报告

课程设计(大作业)报告课程名称:程序设计基础设计题目:学生成绩记录薄设计院系:信息技术学院班级:设计者:学号:指导教师:设计时间:2013.7 8.-2013.7.13信息技术学院学院课程设计(大作业)任务书学生成绩记录薄设计一、课程设计目的与要求1.课程设计目的(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。

(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。

2. 课程设计要求设计一个简易学生成绩记录簿设计,其中包括:,学号,C语言成绩;具体功能:1.系统以菜单方式工作2. 创建学生成绩信息并以磁盘文件保存;3. 读取磁盘文件并显示输出所有学生的成绩;4. 查询学生成绩(1)按学号查询成绩(2)学号查询成绩5.添加成绩记录;6.修改指定或学号的学生的成绩并可存盘;7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

二、总体设计图1 系统总体结构三、详细设计1、数据结构设计#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>int n=4;struct student{int num; /*学号*/char name[10]; /**/float score[3]; /*成绩*/}2.函数说明1.主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。

2.其他部分功能函数包括(1) 将学生成绩信息保存为文件void save();算法思想:①定义指向文件的指针变量;②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;③将存有学生成绩信息的结构体数组信息依次保存到文件中。

程序设计基础实验报告范例

程序设计基础实验报告范例

程序设计基础实验报告范例实验项目:C++程序的编辑、编译与运行⒈实验目的与要求学习和掌握VC++ 6.0程序设计环境的基本使用方法,掌握C++程序的基本构成,初步能够在系统环境中编辑、编译、运行一个程序。

⒉实验任务⑴掌握VC++ 6.0系统的启动方法,了解其各主菜单提供的功能。

⑵练习在VC++ 6.0环境中建立一个程序的方法,练习编辑,编译和运行程序的方法,掌握编辑的基本规则和查看程序运行结果的方法。

⑶熟习、掌握C/C++程序的基本模式和结构。

3.预习与准备⑴阅读VC++ 6.0集成环境的使用介绍(实验教材P143)。

⑵阅读了解实验教材P1—P4的实验内容。

4.实验内容实验教材:P1 T1,T25. 实验步骤5.1 VC ++6.0系统的启动从:开始\所有程序\Microsoft Visual C++6.0下选择Microsoft Visual C++6.0启动系统。

5.2建立VC文件从主菜单“文件”中选择“新建”菜单项,从打开的对话框中选择“文件”,再从打开的文件类型对话框中选择“C++ Source File”,之后在右边的“文件名”栏中填写准备新建的文件名,在“位置”栏中填写文件存放的地址,然后点击“确定(OK)”。

之后,系统在编辑窗口中打开一个名为所填写的文件名命名的空C++文件。

5.3编辑源程序文件在文件编辑窗口中输入实验内容T1题:“利用公式C=5/9(F-32)计算输出华氏与摄氏温度对照表。

假设华氏温度取0,20,40,…….200”的程序。

#include<stdio.h>void main( ){ double f,c;int lower,upper,step;lower=0;upper=200;step=20;f=0;printf(“\t华氏温度\t摄氏温度\n”);while(f<=upper){ c=5.0/9*(f-32.0);p rintf(“\t%7.2f\t%7.2f\n”,f,c);f=f+step;}}5.4编译源程序在系统主菜单中选择“组建(Build)”项,从中选择”编译(Compile)”,或在工具栏中点击编译图标,系统给出提示对话框,询问是否创建一个活动项目工作空间,点击“是(Yes)”。

程序设计基础课程设计模板

程序设计基础课程设计模板

程序设计基础课程设计模板一、课程目标知识目标:1. 理解程序设计的基本概念,掌握编程语言的语法结构;2. 学习变量、数据类型、运算符、控制结构等基本编程元素,并能够正确运用;3. 掌握程序设计的基本方法,能够阅读和分析简单的程序代码;4. 了解程序调试和测试的基本方法,能够找出并修正程序中的错误。

技能目标:1. 能够运用所学知识编写简单的程序,解决实际问题;2. 培养逻辑思维和问题分析能力,能够设计简单的算法;3. 提高编程实践能力,熟练使用编程环境进行代码编写和调试;4. 学会合作学习,与他人共同探讨问题,提高团队协作能力。

情感态度价值观目标:1. 培养学生对程序设计的兴趣,激发学习热情和求知欲;2. 培养学生勇于尝试、克服困难的精神,增强自信心;3. 培养学生遵守编程规范,养成良好的编程习惯;4. 增进学生对计算机科学的认识,提高信息素养,培养创新意识。

课程性质:本课程为程序设计基础课程,旨在让学生掌握编程的基本知识和技能,培养学生运用计算机解决问题的能力。

学生特点:学生处于初中年级,具备一定的逻辑思维能力和学习热情,对新鲜事物充满好奇心。

教学要求:结合学生特点,注重启发式教学,理论与实践相结合,关注个体差异,提高学生动手实践能力。

通过本课程的学习,使学生能够具备初步的程序设计能力,为后续学习打下坚实基础。

二、教学内容1. 程序设计基本概念:程序、编程语言、算法、软件等基本概念介绍。

- 教材章节:第一章 程序设计与算法概述2. 编程语言基础:Python编程语言的语法结构、基本数据类型、变量和常量。

- 教材章节:第二章 Python语言基础3. 控制结构:顺序结构、分支结构、循环结构及其应用。

- 教材章节:第三章 程序控制结构4. 函数与模块:函数的定义、调用和返回值,模块的导入和使用。

- 教材章节:第四章 函数与模块5. 简单算法设计与实现:排序、查找等经典算法的介绍和实现。

- 教材章节:第五章 简单算法6. 程序调试与测试:程序错误分类、调试方法、测试用例设计。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章目的与要求书上有。

第二章需求分析软件设计的一个重要的环节就是需求分析。

本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。

以下是ATM取款机管理系统所需要的需求分析。

ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。

①登录:输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面②挂失功能:确认是否对银行卡进行挂失,挂失后账户无法操作③修改密码:用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码④取款功能:用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内⑤转账功能:用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账号⑥查询功能:用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额模拟ATM取款机的操作:首先录入账户信息,格式如下㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。

㈡、查询功能:查询账户余额。

㈢、取款功能:取款,更新余额。

㈣、挂失功能:挂失后,该账户不能进行任何操作。

㈤、修改密码:输入原密码和新设置密码。

㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析3.1、ATM系统管理3.1.1系统基本功能首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。

另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。

所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。

基本功能:登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。

查询功能---------查询账户余额。

取款功能---------取款,更新余额。

挂失功能---------挂失后,该账户不能进行任何操作。

修改密码---------输入原密码和新设置密码。

转账功能---------输入转账的转出账户以及转账金额,进行转账。

、系统功能如图3-1:图3-1 ATM系统的基本功能分类3.1.2相关数据结构的说明信息的载体用对象数组。

系统录入信息的操作非常枯燥,所以创建一个文件,把每次录入的信息保存入文件,在下一次进入系统时,它会默认读取文件原有的信息,当然也可以随时添加录入ATM信息。

然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。

用户姓名:Name 字符型。

用户账号:Num 字符型。

用户密码:Password 字符型。

身份证号:Id 字符型。

存款数额:Money 实型。

3.1.3类的设计1)定义了一个ATM取款机类,类中包括以下几部分:公有段:依次为登陆界面,核对密码,挂失,修改密码,取款,转账,查询信息,退出系统,功能界面,锁机。

私有段:记录密码输入次数以及变量j。

友元函数:取款,转账,查询信息,账号,密码。

2)定义了一个consumer 类,类中包括以下几部分:公有继承了ATM类私有段:用户密码,用户姓名,用户身份证号,卡号,存款钱数保护段:取得姓名,取得卡号,取得身份证号,取得密码,取得余额,设置密码,取钱3.2系统流程图利用流程图来说明系统各个部分之间如何协调来完成任务。

1)登录流程如图3-2图3-2 登陆的基本流程2)查询功能图3-3 图中显示的是查询的基本流程:图3-3 图中显示的是查询的基本流程3)挂失功能图3-4 图中显示的是挂失的基本流程:图3-4 图中显示的是挂失的基本流程4)修改密码图3-5 图中显示的是修改密码的基本流程:图3-5 图中显示的是修改密码的基本流程5)取款功能图3-6 图中显示的是取款的基本流程:图3- 6 取款的基本流程6)转账功能图3-7 图中显示的是转账的基本流程:图3-7 转账的基本流程3.3参数说明全局变量,重要形式参数、全局变量局部变量等等,它们的命名及用途解释bool j: 全局变量。

char m,t,ch: 全局变量。

int times : 重要形式参数。

第四章系统实现对运行及测试结果进行说明,并添加运行界面的截图。

4.1、登录主界面图4-1 主界面登录窗口图4-2 登录主界面时,账号或密码出错时系统自动锁机图4-3 成功登录后,主界面所显示的窗口4.2、挂失功能图4-4 根据所选代码进行挂失,挂失后系统将退出主界面4.3、修改密码图4-5 xxxx图4-6 图为更改密码功能界面,更改后的密码为新密码图4-7为图为取款功能界面,图中显示为成功取款图4-8 图为取款失败后的功能界面图4-9 图为转账功能界面,图中显示为转账成功后的界面图4-10 图为转账失败后的功能界面图4-11 图中所示为用户个人信息,包括用户姓名、身份证号、银行卡号以及存款余额4.7、退出系统图4-12图为选择序号后系统退出的页面第五章总结课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。

并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。

本次课程设计在老师的帮助和自己的努力下终于能够成功运行,使我感到非常高兴以及提高了自己的编程信心,虽然这次课程设计的题目实现比较简单和不实用但毕竟是自己将近两个星期的努力地结果。

在期间我对编程的理念理解又加深了一点,课程设计使我明白好的算法或者是好的逻辑思维对编程的重要性,在调试期间我自卑过、高兴过、平静过。

可以说是我经历了比较大的情感波动。

当费很大劲才把程序调运行的时候那种感觉实在是太好了。

在本次课程设计活动中,我明显的感觉到自己知识的欠缺和实际动手能的差劲。

尤其是在传值传参的函数调用时更体现的非常明显,感觉自己的书本学的不透、学的不扎实。

有些地方更本就不会,不如说文件的操作,比如说系统时间的获取等以前在上课或作习题时更本就不会考虑的问题在课程设计当中完全暴露出来。

通过本次试验,主要加深了对于友元函数,友元类使用的熟练程度。

程序功能相对比较简单,没有设计复杂的继承和重载函数,完成的比较轻松!参考文献[1]吴敏,杨国林.C++面向对象程序设计内蒙古大学出版社.[2]康晓林,汪涛.标准C++使用教程电子工业出版社附录以下是程序的源代码,并且加上了详细的注释://====hcsdkhfsk====#include"iostream"using namespace std;class consumer;class ATM // ATM取款机类{public:ATM(consumer& cn):cnsm(cn){j=true;}void welcome(); // 登陆界面bool check_passwd(char n[],char pwd[]);// 核对密码bool check_zhang(char num[]);//核对转入账号bool gua();//挂失void change_passwd(); // 修改密码void fetchmoney(); // 取款void zhuan();//转账void information(); // 查询信息void exitATM(); // 退出系统void functionshow(); // 功能界面void lock();//锁机private:bool j;int times; // 记录密码输入次数consumer& cnsm;};class consumer// 用户类{public:friend class ATM;consumer(char Name[],char Num[],char Id[20],float Money,char Password[]);protected:char* get_name(); // 取得姓名char* get_num(); // 取得卡号char* get_id();//取得身份证号char* get_passwd();// 取得密码float get_money(); // 取得余额void set_passwd(char pwd[]);// 设置密码void set_money(float m);// 取钱private:char passwd[8];// 用户密码char name[20]; // 用户姓名char id[20];//用户身份证号char num[20];//float money;//};consumer::consumer(char Name[],char Num[],char Id[20],float Money,char Password[]){strcpy(name,Name);strcpy(num,Num);strcpy(id,Id);money=Money;strcpy(passwd,Password);}float consumer::get_money(){return money;}char* consumer::get_name() // 对于数组的返回操作返回指针{return name;}char* consumer::get_num(){return num;}char* consumer::get_id(){return id;}char* consumer::get_passwd(){return passwd;}void consumer::set_money(float m){money-=m;}void consumer::set_passwd(char pwd[]){strcpy(passwd,pwd);}void ATM::welcome(){times=0;cout<<"欢迎使用银行ATM自动取款机"<<endl;char pwd[8],num1[20],ch;int i=0;do{i=0;cout<<endl<<"请输入卡号:";do{cin.get(ch); //对于键盘字符串的接收!num1[i++]=ch;}while(ch!='\n');num1[i-1]='\0';i=0;cout<<"请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num1,pwd)){cout<<"你输入的卡号或密码有误,请重新输入"<<endl;times++;}else{functionshow();}}while(times<3);lock();}bool ATM::check_passwd(char num[],char pwd[]){if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0) return true;elsereturn false;}void ATM::functionshow(){int n;do{cout<<"本机可办理以下业务:"<<endl;cout<<"********************"<<endl;cout<<" "<<endl;cout<<"1>挂失"<<" "<<"2>修改密码"<<endl;cout<<" "<<endl;cout<<"3>取款"<<" "<<"4>转账"<<endl;cout<<" "<<endl;cout<<"5>查询余额"<<" "<<"6>退出系统"<<endl;cout<<" "<<endl;cout<<"********************"<<endl;cout<<endl<<"请您输入相应的操作序号进行操作:"<<endl;cin>>n;while(n<1||n>6){cout<<"请输入正确的操作序号!"<<endl;cin>>n;}switch(n){case 1: gua(); break;case 2: change_passwd(); break;case 3: fetchmoney(); break;case 4: zhuan(); break;case 5: information(); break;case 6: exitATM(); break;}}while(true);}bool ATM::gua(){char a;do{cout<<"是否确认挂失:(y/n) 继续请按y 退出请按n "<<endl;cin>>a;if(a=='y'){cout<<"您已挂失成功!"<<endl;exit(2);}else{cout<<"您已选择退出!"<<endl;}}while(a=='y');return j=true;}void ATM::change_passwd(){char pwd[8],repwd[8];times=0;do{cout<<endl<<"请输入旧密码:";cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd))times++;elsebreak;}while(times<3);if(times==3)lock();int t=1;do{cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;t=strcmp(pwd,repwd); // 相同返回0;if(t!=0)cout<<"你输入的两次密码不一样,请重新输入!"<<endl;}while(t!=0);cnsm.set_passwd(pwd);cout<<"密码修改成功,请牢记!"<<endl;}void ATM::fetchmoney(){float m;char ch;do{cout<<endl<<"你要取多少钱:"<<endl; // 两种情况while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;}if(cnsm.get_money()-m<0){cout<<"对不起,你的余额不足!"<<endl;}else{cout<<endl<<"取款成功,请收好钱!"<<endl;cnsm.set_money(m);}cout<<"是否要继续取款:(y/n) "<<endl;cin>>ch;}while(ch=='y'||ch=='Y');}void ATM::zhuan(){char z[20];float num;cout<<"请输入所转账号:"<<endl;cin>>z;cout<<"请输入所转钱数:"<<endl;cnsm.money-=num;if(cnsm.money>0)cout<<"转账成功!"<<"您的余额:"<<cnsm.money<<endl;elsecout<<"余额不足!"<<endl;}void ATM::information(){cout<<"**********************************"<<endl;cout<<"* 用户姓名: "<<cnsm.get_name()<<endl;cout<<"* 身份证号: "<<cnsm.get_id()<<endl;cout<<"* 银行卡号: "<<cnsm.get_num()<<endl; //必须声明友元才能用cnsm调用其成员函数cout<<"* 存款余额: "<<cnsm.get_money()<<endl;cout<<"**********************************"<<endl;}void ATM::lock(){cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl;exit(1); // 系统非正常退出}void ATM::exitATM(){cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl;cout<<"请取卡……"<<endl;exit(0);}void main(){consumer c1("李四","323401020056078","150201************",450.8,"123456");// 先构造一个用户ATM atm(c1);atm.welcome();}。

相关文档
最新文档