(1)学生成绩管理,可包括以下功能:
学生信息及成绩输入、输出、成绩插入、成绩删除、成绩排序、成绩查询、数据保存及打开。
(2)某班学生基本信息管理,可包括以下功能:
学生基本信息输入、输出、插入、删除、排序、查询、数据保存及打开。 (3)职工信息管理
职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复),职工信息管理,可具有以下功能:
职工信息录入、输出、查询、删除、修改、数据保存、文件打开等。 (4)飞机订票系统设计
假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,可提供下列服务: 航班信息录入、航班信息浏览、航班查询(按航班号查询或按终点站查询)、承办订票和退票业务(可选项)、数据保存、文件打开等。。 (5)图书信息管理
图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,可实现以下功能:
图书信息录入、图书信息浏览、图书查询(按书名查询或按作者名查询)、排序、图书信息的删除与修改、数据保存、文件打开等。 (6)银行储蓄
开发一个实现储蓄业务最常用功能的系统,在该软件系统中,以储户信息为核心,围绕储户信息,实现其存款、取款和查询等功能。该业务平台还应具有一定扩展性,可方便扩充其他功能,比如挂失等。具体功能有:开户、销户、存款、取款、查询、保存与打开。
以上给出的仅为参考题目,学生在选择过程中根据自己的实际,按照上述题目的难易程度,寻找合适的课程设计题目,也可以自己设计题目,经指导教师确认后定题,一旦题目选定,不允许随意更改。
每个设计一定要有菜单界面(静态或动画)。 5、时间安排:
根据学期安排,一般是在学期授课结束后的一周内完成设计,其他课程停课,总设计时间为5天30课时,其中第一天学生完成选题并开始进行讨论需求分析,确定所选题目实现的功能,教师根据学生选题情况给予指导,第二天开始进行设计并编写代码,从第三天开始进行上机编辑、调试并运行,调试通过后可以开始提交,最迟在第五天的上午完成。下午,由各小组代表根据制作的汇报课件进行汇报,并提交设计报告及程序源码。
案例:汇款系统
1、实训目的
(1)掌握C语言整型变量、实型变量、字符数组的初始化、引用。
(2)掌握C语言的循环控制、通过循环控制引用字符数组中的元素进行操作。
(3)通过对部分C库函数的使用,掌握最基本的程序控制,字符数组操作,自定义函数的编写。
(3)了解C语言中数组参数的传递如何通过指针来实现。 2、项目需求简介
电子汇兑系统是国家邮政局为了适应市场竞争,彻底改变传统邮政汇兑的手工方式,建立的一个连接国家邮政局、31个省局、2468个县局和大量的基层网点的安全、稳定高效的系统,它将传统邮政汇兑的传递实物汇票的方式改变为以电子信息传递汇兑数据,以电子信息
作为业务交易。业务种类有普通、电子汇款、加急汇款、特急汇款。本项目仅仅模拟了电子汇兑电子汇款中计算汇费的部分,不包括邮政电子汇兑其他附加服务所收取的费用。下面我们来了解一下汇费计算的具体需求:
(1)国内邮政电子汇兑每笔汇款最高限额为5万元,最低汇款限额每笔为1元。 (2)限额内按汇款金额的1%收取汇费,每笔汇款最低汇费2元,最高汇费50元。 3、需求分析
我们根据项目需求简介中汇费计算的具体需求,来分析一下汇费的计算方法,如下: 限额内按汇款金额的1%收取汇费:汇费 = 汇款金额 × 0.01
每笔汇款最低汇费2元:如果汇费小于最低汇费,则汇费 = 2元。 每笔汇款最高汇费50元:如果汇费大于最高汇费,则汇费 = 50元。 下面,举例来说明汇费的计算方法。 汇款金额计算方法
1600元:计算公式为 1600 × 0.01 = 16元
6000元:计算公式为 6000 × 0.01 = 60元 大于最高汇费50元,则汇费 = 50元。 10元:计算公式为 10 × 0.01 = 0.1元 小于最低汇费2元,则汇费 = 2元。 4、系统设计
(1)功能概述:输入汇款金额,计算出应缴纳的汇费。 (2)系统主要功能:
1.主函数:循环录入汇款金额,并计算出汇费,录入?0?表示结束。
2.数据的合法性检查:输入汇款金额,检查数据的合法性,必须大于等于1,小于等于50000,必须是包含一个小数点的金额格式。
3.计算:根据汇款金额,计算出应缴汇费。
(3)逻辑模型:系统的逻辑模型通常采用IPO图表示,同样比较直观。IPO图是输入/处理/输出图的简称,描述输入数据、对数据的处理和输出数据之间的关系。 输入 处理 输出
汇款金额 1、汇款金额输入有效性验证 2、根据汇款金额计算汇费 打印汇费 IPO(输入处理输出)图
(4)汇款系统流程图:
开始录入汇款金额格式非法格式是否合法格式合法0非 01-50000小于1或者大于50000计算汇费0 结束打印汇费结束
5、系统实现
(1)系统主函数main()实现
在主函数中,循环获得录入的汇款金额,把汇款金额当做参数,传递给格式判断函数,判断汇款金额格式是否合法,格式非法则停止当前循环,进入下一次循环;格式合法然后判断汇款金额是0还是正常汇款金额(1到50000),0表示退出程序;非正常汇款金额(小于1或者大于50000)停止当前循环,进入下一次循环;如果是正常汇款金额把正常汇款金额当作参数,传递给汇费计算函数,计算返回应缴汇费。最后把结果打印到屏幕上,进入下一次循环。
在主函数main()之前添加需要的系统头文件: #include
包含以上系统头文件后才能正常调用C语言的库函数,首先得到用户录入的汇款金额。功能的实现是通过C语言的字符串处理函数gets实现的。接着调用自定义函数CheckMoney检查汇款金额格式是否合法。如果汇款金额格式非法,则提示“录入的金额格式非法!” continue停止当前这一遍循环,然后直接尝试下一遍循环继续提示用户“请录入汇款金额(元),0表示结束:”。
如果汇款金额格式合法,首先调用atof函数将汇款金额字符数组转换成实型数据,然后判断汇款金额是否是?0?,如果用户录入?0?则break退出循环,正常结束程序。 如果汇款金额非?0?,然后判断汇款金额是否低于最低汇款限额1元。如果低于最低汇款限额,则提示“低于最低汇款限额!” continue停止当前这一遍循环,然后直接尝试下一遍循环继续提示用户“请录入汇款金额(元),0表示结束:”。 如果汇款金额不低于最低汇款限额1元,则判断录入的汇款金额是否超过最高汇款限额50000元。如果超过最高汇款限额,则提示“超过最高汇款限额!” continue停止当前这一遍循环,
然后直接尝试下一遍循环继续提示用户“请录入汇款金额(元),0表示结束:”。
如果汇款金额格式正常,没有超出汇款金额限制范围,则调用自定义函数Get_Fee根据汇款金额计算汇费,然后调用printf函数显示应收汇费。继续下一遍循环继续提示用户“请录入汇款金额(元),0表示结束:”。 (2)自定义函数CheckMoney
函数CheckMoney的形参money为指向字符数组的指针变量,函数开始执行时,money指向实参cmoney[0]。为什么函数CheckMoney的参数要定义成指针呢?因为:数组的名字就是指向首元素的指针,取数组元素可以通过指针运算获得,数组参数的传递通过指针来实现。首先调用C语言的字符串库函数memset初始化临时字符数组变量cStrTmp,然后调用同样是C语言的字符串库函数memcpy将money中的内容复制到cStrTmp中。 6、源码
#include
//检查录入的汇款金额格式是否合法。 int CheckMoney(char * money); //根据汇款金额计算汇费。 double Get_Fee(double money); main() {
char cmoney[100];//汇款金额
double dmoney = 0,dfee = 0;//汇款金额,汇费
printf(\ printf(\ ***\\n\ printf(\ (欢迎光临汇款系统) ***\\n\ printf(\ ***\\n\ printf(\ for(;;) {
memset(cmoney, 0 , sizeof(cmoney)); printf(\请录入汇款金额(元),0表示结束:\ gets(cmoney);
//检查录入的汇款金额格式是否合法 if(CheckMoney(cmoney)) {
printf(\录入的金额格式非法!\\n\ continue; }
dmoney = atof(cmoney); //判断是否退出循环 if(dmoney == 0) {
break; }
//判断汇款金额是否低于最低汇款限额1元
if(dmoney < 1) {
printf(\低于最低汇款限额!\\n\ continue; }
//判断汇款金额是否超过最高汇款限额50000元 if(dmoney > 50000) {
printf(\超过最高汇款限额!\\n\ continue; }
//根据汇款金额计算汇费 dfee = Get_Fee(dmoney);
printf(\汇款金额:%8.2f元,应收汇费:%8.2f元\\n\ }
exit(0); }
//检查录入的汇款金额格式是否合法。输入参数:汇款金额。返回值:1 格式非法;0 格式正确
int CheckMoney(char * money) {
char cStrTmp[100];//
int i,length = 0,flag = 0;//循环变量,字符串长度,小数点出现的次数标志 memset(cStrTmp, 0, sizeof(cStrTmp));
memcpy(cStrTmp, money, sizeof(cStrTmp)); length = strlen(cStrTmp);
//循环检查字符串中每一个字符的合法性 for(i=0; i //如果小数点出现大于1次,格式非法 if(flag > 1) { return 1; } //如果小数点出现,小数点出现的次数标志加1 if(cStrTmp[i] == '.') { flag += 1; continue; } //如果字符不是数字,格式非法 if(!isdigit(cStrTmp[i])) { return 1; } }