C语言程序设计课程设计[2023-01-07]
C语言程序设计课程设计要求
一、 课程设计目的
1.进一步掌握和利用 C 语言进行程设计的能力;
2.进一步理解和运用结构化程设计的思想和方法;
3.初步掌握开发一个小型实用系统的基本方法;
4.学会调试一个较长程序的基本方法;
5.学会利用流程图表示算法;
6.提高自我学习能力, 分析问题与解决问题的能力
6.掌握书写程设计开发文档的能力。
二、 课程设计成绩评定
题目分 1、2、 3 三个难度。评分等级为优秀、 良好、 中等、 及格、不及格五个级别。
(1)完成指定的功能,难度越大,分数愈高;
(2)在完成指定功能的基础上,添加扩展功能,有创意,且成功实现,给与一定的加分;
(3)基本功能完成, 扩展功能未完成或有错误,酌情给分:
(4)难度小的题目,评定成绩最高为良
(5)选择难度最高的题目且通过现场答辩,质量高的学生才能拿优;因疫情无法现场演示, 需要录屏程序运行
情况.
(6)拿优的学生可以利用寒假优化设计。下学期开学选拔后,可参加新生程序设计大赛,大赛奖品丰富,可作
为大学科技创新团队选拔的重要依据.
(7)获得优秀比例,原则上不超过本班总人数的 20%。
三、重要提示
课程设计要求独立完成,严禁抄袭, 如有违反双方不及格论处。
四、设计基本要求
1.只能使用 C 语言编程, 除能使用平台所带的系统标准函数外, 不能使用第三方的软件包
2.要有使用多级文本菜单界面,
3.要有良好整齐的操作界面, 数据输入方便,数据输入格式要有指示
4.显示输出的数据规范整齐
5.能完成数据的查询,统计,修改,删除,排序等功能
6.使用动态链表结构管理数据
7.要有文件读写操作,使用文件保存历史数据
8.保存的测试历史数据条数大于 20 条
9.撰写打印课程设计报告
五>课程设计报告内容:
- 标准封面:包含课程设计题目,学生信息
- 设计目标: 内容、系统功能的描述。
- 总体设计: 包含几大功能模块的描述,画出系统功能模块结构图
- 详细设计: 各功能函数模块的具体实现,各函数模块的功能介绍,
- 画流程图表达程序基本结构,图中大小合适,底色干净,用专业软件绘制,不能手绘
- 数据结构设计与说明,包括数据结构设计描述,参数说明等。
- 测试与试验结果,包括输入数据和输出结果,每个功能的测试结果截屏
- 体会与总结, 课程设计完成了哪些功能,有什么扩展功能 有什么地方需要改进,通过课程设计有何
收获,调试程序的体会等 - 附录:所有程序代码, 有适当的注释
- 报告字体格式要求 :
- 正文字体:宋体, 五号, 行距 1.0 倍。
- 一级标题:宋体,粗体, 四号,行距 2.0 倍
- 二级标题; 宋体, 粗体,小四号,行距 2.0 倍
- 程序代码清单:宋体, 五号, 行距(固定值 12 磅)
六、应提交材料的方法与截至时间:
- 相关电子文档 (所有内容压缩为一个压缩文件)
a) 课程设计 word 格式报告文档:命名格式: 2021-班号-学号-姓名-课程设计.doc,
例如: 2022-5-12345678-张三丰-课程设计.doc
b) 课程设计 pdf 格式报告文档:2022-5-12345678-张三丰-课程设计.pdf
c) 设计项目文件:包括源程序,编译好的 EXE 应用程序,相关数据文件,使用说明等。
d) 程序运行的录屏文件: (选做, 但评优的同学必须做)要求录像清晰,不能使用手机录像方式
以上所有文件放在一个文件夹中,文件夹命名格式:2022-班号-学号-姓名-课程设计,压缩该文件
夹,形成 2022-班号-学号-姓名-课程设计.rar 的压缩文件后提交。 - 电子文档提交时间:2023-1-8 前,学者网上提交,网址: https://coderx.blog.csdn.net,同时
发送到老师邮箱:[email protected] - 纸质课程设计报告(要求正规打印, A4 幅面,除封面外要求双面打印, 装订好),于 2022 年 1 月 8 日前交
给学委按班集中提交到工 1-509 我办公室. (如因疫情, 纸质报告可推迟到下学期第一周内提交)
选择课程设计题目: (任选一题做)
源码
https://pan.baidu.com/s/1pq1Nwwo0hlc_J84F93HM4A?pwd=1111
(一个班里每题选择人数<15 人)
- 仓库货物出入管理.**
- 基本功能:出入货物记录查询与显示, 库存量的查询,统计,显示
- 入库数据内容: 入库日期,货物名称,数量,价格,保存位置,供货单位,厂家电话
- 出库数据内容:出库日期,货物名称,数量,使用单位,领用人
- 商场 VIP 会员管理与消费统计**
- 基本功能: 会员管理, 消费数据管理 ,包括添加, 查询,编辑, 删除等
- 统计功能: 会员消费统计, 店月销售统计 等
- 会员数据内容: 人名, 性别, 会员编号, 电话, 预存金额,
- 消费数据内容: 日期, 时间,会员编号, 消费名称, 消费金额, 付款方式
- 球场预约信息管理**
- 基本功能: 球场(篮球,羽毛球,乒乓球)安排信息, 实现修改、删除、显示和查询功能,
- 统计功能: 某球场月/年统计使用时间, 某人月/年统计使用时间
- 预约数据内容:日期, 起始时间、终止时间,预约人姓名,联系电话 ,球场编号。
- 阅览室图书借阅管理软件***
- 图书库存信息数据: 书名, 书名编号, 作者, 出版社, 价格
- 借阅人信息管理: 姓名, 性别, 工号, 单位名称, 电话,
- 借阅与归还记录数据: 日期, 人名, 书名, 借/还
- 数据的添加,查询,删除,统计
- 俄罗斯方块游戏与数据统计****
游戏功能:
- 俄罗斯方块游戏基本功能
- 游戏场景大小可自由设置
- 可以设置难度级别(沉降速度等)
- 屏幕无闪动,键盘操作流畅
游戏数据记录: - 游戏参数设置保存(难度种类,界面,玩家信息)
- 玩家信息: 玩家姓名, 玩家电话, 累计游戏时间, 游戏积分
- 游戏历史数据内容保存:玩家姓名,日期时间, 难度级别,游戏总时长, 综合得分
- 游戏历史数据的查询, 统计, 排行榜(日/周)
课程设计要解决的几项关键代码:
基本项: - 数据的组织,数据结构的定义(数据链表)
- 数据链表节点新数据的输入(键盘输入,或程序运行生成)
- 链表节点数据的全显示
- 链表节点数据的条件查询,条件显示
- 链表节点数据的条件删除
- 数据链表节点数据的排序
- 数据链表节点数据统计
- 数据链表节点数据的保存在文件里(文件的写操作)
- 数据链表节点数据从文件里读取恢复(文件的读操作)
- 程序用户菜单的设计
- 某按键状态的读取(菜单命令)
提高项:(课本外的知识) - 系统当前时间读取方法
- 屏幕清屏,菜单静止无闪动
- 上下左右键的读取与操作
- 设置字符要显示的位置
- 设置字符颜色和背景颜色
- 隐藏/显示控制台的光标:
- 声响的发出
课程设计可用到的一些参考代码: - 链表的定义,链表节点的创建,添加,查询,删除,显示 (参考课本)
- 清屏: system("cls"); //注意加#include <windows.h>
- 发声: Beep(2000,250) //第一个参数频率 Hz, 第二个参数时间长短(单位 ms)
- 清键盘缓冲区: fflush(stdin) ;
- windows 上用 C 语言隐藏/显示控制台光标:
#include <Windows.h>
void HideCursor()
{
HANDLE fd = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cinfo;
cinfo.bVisible = 0;
cinfo.dwSize = 1;
SetConsoleCursorInfo(fd, &cinfo);
}
- 设置显示的位置
#include <Windows.h>
void gotoxy(int x, int y) {
COORD pos = { x,y };
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
- 控制台显示颜色;
设置默认的控制台前景和背景颜色。
COLOR [attr]
attr----指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个
对应于前景。每个数字可以为以下任何值:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
例如; color 4e
C 语句: system("color 4e");
如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时的颜色。
或使用 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), attr);函数设定
或使用 printf 的颜色特效控制串: “\033[字体颜色码;背景颜色码 m”
例如: printf("\033[33;44m"); 黄字, 蓝底.
printf("\033[32;40m"); 绿字,黑底
- 常用文件操作
FILE *fp;
fp=fopen(filename,"w+"); 要判断是否成功,如果 fp==NULL 说明打开文件失败
fscanf(fp,"%d%s%f",&intVal, buf, &floatVal); 从文件读取数据:
fprintf(fp, "%d %s %.1f \n", intVal, buf, floatVal); 数据写入到文件:
fclose(fp);
Visual studio 下的关键文件操作函数:
FILE *fp;
fopen_s( &fp, "d:\\data.txt", "w+" );
fprintf_s(fp, "%s", string);
fclose(fp);
fseek( fp, 0L, SEEK_SET );
fscanf_s( fp, "%s", s, 50); // 读字符串,要加上字符串长度参数,50 需依照实际设置
fscanf_s( fp, "%ld", &l ); // 读整数
fscanf_s( fp, "%f", &fp ); // 读浮点数
fscanf_s( fp, "%c", &c, 1 ); //读单个字符,注意要加上参数 1
fscanf_s(fp,"%ld%s%s%f",&num, name,50, address,50, &score); //50 需依照实际设置
字符串处理函数在 vs 需要更换名称,调用参数也需要改变
gets(a): gets_s (a, 100); //100 表示数组大小, 需要根据实际数组的定义修改
strcpy(s1,s2) : strcpy_s (s1, strlen(s2)+1, s2);
strcat(s1,s2) : strcat_s (s1, strlen(s1)+strlen(s2)+1, s2);
- 按键操作头文件: #include <conio.h>
- 判断按键状态: if(kbhit()) 或 vs 系统: if(_kbhit()) 是否有键按下
- 清键盘缓冲区: fflush(stdin) ;
- 无回显的读取按键函数: c=getch() 或 vs 系统: _getch()
读取键值: if (kbhit()) key=getch();
注意敲击箭头键会出现两个字符数据: LEFT(-32,75), UP(-32,72), DOWN(-32,80),Right(-32,77) - 也可以用下列语句读取上下左右,空格键的状态
if (GetAsyncKeyState(VK_LEFT) ) ......左键处理语句......;
if (GetAsyncKeyState(VK_RIGHT) )........;
if (GetAsyncKeyState(VK_UP) )..........;
if (GetAsyncKeyState(VK_DOWN) )........;
if (GetAsyncKeyState(VK_SPACE)).......; //空格
- 读取系统的时间示例:
#include <time.h>
int main()
{
time_t t;
struct tm *lt;
time(&t); //获取时间戳。
lt=localtime(&t);//转为时间结构。
printf("%d/%d/%d %d:%d:%d\n",lt->tm_year+1900,lt->tm_mon+1,lt->tm_mday,lt->tm_hour,
lt->tm_min,lt->tm_sec);
return 0;
}
- 播放背景音乐
#include <mmsystem.h>
添加编译命令: -lwinmm //在 vscode 里修改 tasks.json 的 args 项 “-lwinmm”
mciSendString("open mu.mp3 alias Star", NULL, 0, NULL); //mu.mp3 是你播放的音乐文件
mciSendString("play Star repeat", NULL, 0, NULL);
录屏方法: 可以使用 PPT 软件的内部功能
具体方法使用请百度查询, 或采用其他录屏软件
vsCode 原缺省的编码方式是 UTF-8, 可以打开设置菜单, 设置其缺省编码是 GBK