课程设计作业.doc_第1页
课程设计作业.doc_第2页
课程设计作业.doc_第3页
课程设计作业.doc_第4页
课程设计作业.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计 报 告学 院: 计算机学院软件学院 课程名称: 程序设计 专业班级: 科技3班 学生姓名: 席云 学号:201124132170 指导教师: 傅守忠 完成时间: 2012 年 1 月 3 日程序设计课程设计题目及要求题目一:一、需求分析编写程序能够显示以下的主菜单:* 主菜单: 1字母数字转换 2奖金发放 3打印月历 4打印水仙花 5查找最大最小数 6退出*主菜单在主菜单程序中,根据输入的数字16来选择相应的选项,在执行完每一个选项之后,返回主菜单(退出除外)。每一个菜单要完成的任务后面给出。编写的源程序以zhsy1.cpp保存。 字母数字转换编写一个函数,能够将字母电话号码转换成数字号码(假设输入的字母都是大写字母,输入的电话号码以#结束).样例: 输入电话号码:CALLATT 输出:2255288 输入电话号码:1-800-COL-LECT 输出:1-800-265-5328字母数字转换提示:电话上的字母、数字对照表 1 2 3 ABC DEF 4 5 6 GHI JKL MNO 7 8 9 PQRS TUV WXYZ如果原始的电话号码中出现了非字母字符,则这部分字符保持不变(如”-”等)。 奖金发放企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;超过40万元的部分按3%提成,编写一个函数从键盘输入当月利润,输出应发放奖金的总数.样例: 输入:85000 输出:8500打印月历编写一个函数,打印一个月的月历。要求给出要打印月份的天数以及本月第一天是星期几(1-日,2-一,3-二,)。 样例: 输入:天数 30 第一天星期 3 输出: 日 一 二 三 四 五 六 1 2 3 4 5 6 30打印水仙花数三位水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。(例如:13 + 53 + 33 = 153)。编写一个函数,打印出所有的三位的水仙花数。 样例: 输入:无 输出:153 370 查找最大最小数编写函数,从键盘上输入N个整数,找出其中最大的和最小的数。要求输入N的值,以及这N个数。样例: 输入:N=5 3 6 8 2 5 输出: 最大数:8 最小数:2二、详细设计1. 用C语言定义相关的数据类型#include stdio.hvoid jjff (void); /*奖金发放*/void sxhs (void);/*水仙花数*/void zfzh (void);/*字符转换*/void rili(void);/*日历输出*/void maxORmin(void);/*最大最小数输出*/三、调试分析1. 调试中遇到的问题及对问题的解决方法;(1)显示学生信息的格式不对,通过调整格式输出的形式,适当使用空格和格式控制的内容。(2)考虑问题不周,对记录为空时情况,解决方法使用一个if()语句判空。(3)要通过不同种方法进行删除,修改,查询操作,解决方法使用if()语句1elseif()语句2else()语句。(4)没能实现主菜单的循环,原因是while之后没有用来限定循环的范围,就让他默认循环第一行。(5)在实现字母数字转换函数的时候default语句没有放在switch 语句的里所以一直提示错误。四、使用说明及测试结果五、源程序(带注释)#include stdio.hvoid jjff (void); /*奖金发放*/void sxhs (void);/*水仙花数*/void zfzh (void);/*字符转换*/void rili(void);/*日历输出*/void maxORmin(void);/*最大最小数输出*/void main() int choise;/*选择执行程序*/ printf (n);printf ( 主菜单: n);printf (1字母数字转换 n);printf (2奖金发放 n);printf (3打印月历 n);printf (4打印水仙花 n); printf (5查找最大最小数 n);printf (6退出n);printf (n);printf (请选择:); scanf (%d,&choise); switch (choise) case 1: printf (n字母数字转换n); zfzh(); break; case 2: printf(n奖金发放 n); jjff(); break; case 3: printf(n打印月历 n); rili(); break; case 4: printf(n打印水仙花 n); sxhs(); break; case 5: printf(n查找最大最小数n); maxORmin(); break; case 6: printf(感谢使用,下次再见。n); return; default : printf (n%c%c%c选择错误,请重新选择.aaan,7,7,7); return; void jjff (void)double i;double m1=10000,m2=17500,m4=27500,m=0;printf(请输入利润:);scanf( %d,&i); if(i=100000) m=i*0.1; else if(i=200000) m=m1+(i-100000)*0.075; else if(i =400000) m=m2+(i-200000)*0.05; else m=m4+(i-400000)*0.03;printf( 奖金是:%d ,m);void sxhs (void) int i,j,k,n; printf(水仙花数是:n); for(n=100;n1000;n+) i=n/100; j=n/10%10; k=n%10; if(i*100+j*10+k=i*i*i+j*j*j+k*k*k) printf(%dn,n); void zfzh (void) int i;char n11;printf(请输入字符串:);for (i=0;i11;i+)scanf (%c,&ni);if (ni=!) break; for (i=0;i11;i+) switch (ni) case A: printf(2); break; case B: printf(2); break; case C: printf(2); break; case D: printf(3); break; case E: printf(3); break; case F: printf(3); break; case G: printf(3); break; case H: printf(4); break; case I: printf(4); break; case J: printf(5); break; case K: printf(5); break; case L: printf(5); break; case M: printf(6); break; case N: printf(6); break; case O: printf(6); break; case P: printf(7); break; case Q: printf(7); break; case R: printf(7); break; case S: printf(7); break; case T: printf(8); break; case U: printf(8); break; case V: printf(8); break; case W: printf(9); break; case X: printf(9); break; case Y: printf(9); break; case Z: printf(9); break; default : printf (%c,ni);void rili(void) int i,n,m; printf(请输入本月天数); scanf(%d,&n); printf(第一天的星期); scanf(%d,&m); printf(日 一 二 三 四 五 六n); if(m=7)printf();else if(m=1) printf( );else if(m=2) printf( );else if(m=3) printf( );else if(m=4) printf( );else if(m=5) printf( );else if(m=6) printf( );for(i=1;i=n;i+)if(i10)if(i+m)%7!=0)printf(%d ,i);elseprintf(%dn,i);elseif(i+m)%7!=0)printf(%d ,i);elseprintf(%dn,i);void maxORmin(void)printf(请输入数组长度: n);int length;int max ;int min ;scanf( %d,&length);if(length 0)printf(数组长度必须大于0);return;int arry1000;int i = 0;while(i length)printf(请输入第%d个数: n,i+1);scanf(%d,arry+i);i+;max = arry0;min = arry0;for(int j=0;jmax)max = arryj;else if(arryjmin)min = arryj;printf(输出:n);printf(最大数:%dn,max);printf(最小数:%dn,min);题目二:学生成绩管理程序一、需求分析1. 程序的功能:功能1 数据输入编写一个函数完成学生信息的输入功能,当学号输入为0时结束信息输入。2 数据修改编写一个函数完成学生信息的修改功能。要求该函数能够以学号为查询关键字,将满足查找条件的学生信息显示输出,并以菜单形式提供可供修改的项目,选择项目并完成修改;如果无满足查找条件的记录,则提示“无该学号学生记录!”。3 数据处理编写一个函数完成学生信息的处理功能。数据处理:可以选择的处理方式为:排序、查询、统计。其中:a) 排序:按学号排序;b) 查询:根据学号查询该学生的所有信息;c) 统计:可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生。提示:可以将该模块分解成更小的几个子模块来实现。每个子模块通过定义不同的函数来完成其功能。 4 数据输出编写一个函数完成学生信息的输出功能。要求该函数能够将学生的当前各项信息按照较为整齐的格式输出。5 退出结束整个程序的运行。 2. 输入输出的要求:(1)输入学号不超过15位字符;(2)名字不超过20位字符;(3)性别不超过4位字符;将输出信息加上输出信息栏,例如:学号 姓名 性别 语文 数学 英语 总分 平均分 名次1 jim 男 89.0 87.0 88.0 264.0 88.0 22 bob 男 87.0 87.0 98.0 272.0 90.7 13 peter 男 88.0 78.0 98.0 264.0 88.0 23. 测试数据:学号,姓名,性别,语文,数学,英语,总分,平均分,名次。二、详细设计1. 用C语言定义相关的数据类型结构体:struct student_infochar number15; /学号char name20; /姓名char gender4; /性别float scoreNUM_SUBJECT; /分别为该学生门课程的成绩float sum;/总分float average;/平均分int index; /名次;三、调试分析1. 调试中遇到的问题及对问题的解决方法;(1)显示学生信息的格式不对,通过调整格式输出的形式,适当使用空格和格式控制的内容。(2)在输出之后没有加换行字符 ,以至于屏幕上都是乱七八糟的。(3)最初是用指针来的,结果程序编译没问题可就是回意外停止。论坛求助后知道了那个什么野指针。搞了好久都没搞好,最后根据老师的模板做了。可以运行。(4)用switch的时候没有拼写正确,最后才发现。(5)为了实现排序四、使用说明及测试结果按照菜单说明选择相应的操作代码进行操作测试结果: = 请选择操作: 1.输入数据 2.数据修改 3.数据处理 4数据输出 5.退出 左边数字对应功能选择,请选择1-5: = 请选择操作代码: 1输入学生信息请输入学号:1 请输入姓名:bob 请输入语文成绩:88 请输入数学成绩:78 请输入英语成绩:87 五、源程序(带注释)/ 学生成绩管理程序/ 包含数据输入输出,修改处理等函数#include#include#include#includevoid shuru(struct xuesheng_xitong s); / 输入函数声明void shuchu(struct xuesheng_xitong s); / 输出函数声明void xiugai(struct xuesheng_xitong s); / 修改数据函数的声明void chuli(struct xuesheng_xitong s); / 数据处理函数声明void paixu(struct xuesheng_xitong s); / 按学号排序的函数struct xuesheng_xitong / 学生结构体的定义char xuehao10;char xingming10;double yuwen,shuxue,yingyu;int banji;int kk=1; / 计数器int ll=0; / 标志/ 以下是主函数。/ 主要功能是实现对学生成绩,学号,班级等的系统管理与存储/ 存储数量是999。int main() int xuanze;struct xuesheng_xitong s999;printf( 学生信息管理程序n);doprintf(nn);printf( *n);printf( * 1:数据输入 2:数据修改 3:数据的处理 *n);printf( * 4:数据输出 5:退出 *n);printf( *n);printf(请选择要进行的操作 :);scanf(%d,&xuanze);switch(xuanze) case 1:shuru(s);break;case 2:xiugai(s);break;case 3:chuli(s);break;case 4:shuchu(s);break;case 5:printf(感谢使用,下次再见!n);system (pause);break;default: printf(出错啦!an);while(xuanze!=5);return 0; / 主要功能: 保存从键盘输入的学生信息 只能存储999个void shuru(struct xuesheng_xitong s) / 输入函数的定义struct xuesheng_xitong f;if(kk=999)printf(装不下了大哥。n);return;doprintf(请输入第%d个学生的学号(按0退出操作) :,kk);scanf(%s,f.xuehao);if(f.xuehao0=0)break;printf(请输入第%d个学生的姓名:,kk);scanf(%s,f.xingming);printf(请输入第%d个学生的班级:,kk);scanf(%d,&f.banji);printf(请输入第%d个学生的语文成绩:,kk);scanf(%lf,&f.yuwen);printf(请输入第%d个学生的数学成绩:,kk);scanf(%lf,&f.shuxue);printf(请输入第%d个学生的英语成绩:,kk);scanf(%lf,&f.yingyu);skk=f;kk+;while(kk!=999);/ 主要功能: 输出所有学生信息void shuchu(struct xuesheng_xitong s)/ 输出函数 的定义int i;printf(学号 姓名 班级 语文 数学 英语n);printf(=n);printf(=);printf(n);for(i=1;ikk;i+)printf(%s %s %d %.1lf %.1lf %.1lfn,si.xuehao,si.xingming,si.banji,si.yuwen,si.shuxue,si.yingyu);printf(n);/ 主要功能: 实现对学生信息的修改 void xiugai(struct xuesheng_xitong s) / 修改函数的定义int a;int i,p;char num10;printf(请输入需要修改信息的学生的学号(按7退出操作):);scanf(%s,num);for(i=1;ikk;i+)if( strcmp(num,si.xuehao)=0 )ll=-1;p=i; if(ll=0) printf(无该号学生记录!n); printf(nn); else if(ll=-1) printf(n); printf(=n); printf(=n); printf(1.学号 2.姓名 3.班级n); printf(4.语文成绩 5.数学成绩 6.英语成绩 7.退出修改n); printf(=n); printf(=n); printf(请选择需要修改的项目:); scanf(%d,&a); switch(a) case 1: printf(请输入该学生的新学号:); scanf(%s,sp.xuehao); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao,sp.xingming, sp.banji,sp.yuwen,sp.shuxue,sp.yingyu); printf(n); break; case 2: printf(请输入该学生的新姓名:); scanf(%s,sp.xingming); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao,sp.xingming,sp.banji, sp.yuwen,sp.shuxue,sp.yingyu); printf(n); break; case 3: printf(请输入该学生的新班级:); scanf(%d,&sp.banji); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao,sp.xingming,sp.banji, sp.yuwen,sp.shuxue,sp.yingyu); printf(n); break; case 4: printf(请输入该学生的新语文成绩:); scanf(%lf,&sp.yuwen); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao, sp.xingming, sp.banji, sp.yuwen, sp.shuxue, sp.yingyu); printf(n); break; case 5: printf(请输入该学生的新数学成绩:); scanf(%lf,&sp.shuxue); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao,sp.xingming,sp.banji, sp.yuwen,sp.shuxue,sp.yingyu); printf(n); break; case 6: printf(请输入该学生的新英语成绩:); scanf(%lf,&sp.yingyu); printf(修改后该学生的信息为:n); printf(学号 姓名 班级 语文 数学 英语n); printf(=n); printf(=n); printf(%s %s %d %.1lf %.1lf %.1lf,sp.xuehao,sp.xingming,sp.banji, sp.yuwen,sp.shuxue,sp.yingyu); printf(n); break; case 7: break; / 实现学生信息按学号排序void paixu(struct xuesheng_xitong s) / 排序函数定义int i,j;struct xuesheng_xitong t;for(i=1;ikk;i+)for(j=i+1;jsi.xuehao)t=sj; sj=si; si=t;for(i=1;ikk;i+)printf(%s %s %d %.1lf %.1lf %.1lfn,si.xuehao,si.xingming,si.banji,si.yuwen,si.shuxue,si.yingyu);/ 主要功能:按学号查询学生信息,排序 统计平均分,不及格学生等void chuli(struct xuesheng_xitong s) / 数据处理函数的定义int k,i,p,xuanze;char num10;double aver999;printf(=n);printf(=n);printf(| 1:按学号排序 2:查询 |n); printf(| 3:统计 4:返回主菜单 |n); printf(=n);printf(=n);printf(请选择具体的处理内容);scanf(%d,&k);switch(k) case 1:printf(排序后结果为:n); printf(学号 姓名 班级 语文 数学 英语n);paixu(s);chu

温馨提示

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

最新文档

评论

0/150

提交评论