本文目录一览:
- [请用C语言完成课程设计拜托了各位 谢谢](#请用C语言完成课程设计拜托了各位 谢谢)
- [C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学](#C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学)
- C语言课程设计
- c语言课程设计
- C语言课程设计,多媒体教室管理系统
- [C语言课程设计 题目为设计一个多功能计算软件实现功能 求完美的代码](#C语言课程设计 题目为设计一个多功能计算软件实现功能 求完美的代码)
请用C语言完成课程设计拜托了各位 谢谢
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[60];
char ID[7];
int score;
};
int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; // 这个数组用来保存所有的学生信息 和文件里面的一致
int Number = 0; // 记录总的学生人数
void main() {
int choose = 0;
FILE *fp = NULL;
char yesorno;
if ((fp = fopen("C://student.dat", "rb")) == NULL) {
printf("\n=========提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c", &yesorno);
if (yesorno == 'y' || yesorno == 'Y') {
// 这里仅为了建立文件
fp = fopen("C://student.dat", "wb");
fclose(fp);
} else {
exit(0);
}
} else {
Number = dq(st); // 要是文件只能够已经有数据 将数据初始化到数组中
}
system("cls");
while (true) {
xianshi();
printf("\t\t====请选择:");
scanf("%d", &choose);
system("cls");
switch (choose) {
case 0:
exit(0); // 退出
break;
case 1:
add();
fh(); // 增加学生成绩
break;
case 2:
select();
fh(); // 查看学生成绩
break;
case 3:
chazhao();
fh(); // 查找
break;
case 4:
del();
fh(); // 删除
break;
case 5:
tj();
fh(); // 统计
break;
case 6:
px();
fh(); // 排序
break;
case 7:
bjg();
fh(); // 输出不及格
break;
case 8:
xg();
fh(); // 修改
break;
case 9:
zz();
fh(); // 作者
break;
case 10:
bca();
fh(); // 保存数据
break;
default:
break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca() {
printf("\t=====程序在运行时已自动保存.....\n");
}
void fh() {
printf("\t===按Enter键返回主菜单\n");
}
void xg() { // 修改学生信息
int way = 0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d", &way);
switch (way) {
case 1:
xmxg();
break;
case 2:
xhxg();
break;
default:
printf("输入有误,结束!\n");
break;
}
}
// 按姓名修改
void xmxg() {
FILE *fp = NULL;
char name[60];
int i = 0;
int changeIndex = 0;
int index = 0;
printf("请输入要修改的学生姓名:");
scanf("%s", name);
for (i = 0; i < Number; i++) {
if (strcmp(name, st[i].name)) {
changeIndex = i; // 保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n", st[changeIndex].name, st[changeIndex].ID, st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s", st[changeIndex].name);
printf("学号:");
scanf("%s", st[changeIndex].ID);
printf("成绩:");
scanf("%d", &st[changeIndex].score);
// 信息修改后重新更新文件里面的数据 以保持数据一致性
fp = fopen("C://student.dat", "wb");
for (i = 0; i < Number; i++) {
fwrite(&st[i], sizeof(struct student), 1, fp);
}
fclose(fp);
}
void xhxg() { // 按学号修改
FILE *fp = NULL;
char id[60];
int i = 0;
int changeIndex = 0;
int index = 0;
printf("请输入要修改的学生学号:");
scanf("%s", id);
for (i = 0; i < Number; i++) {
if (strcmp(id, st[i].ID)) {
changeIndex = i; // 保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n", st[changeIndex].name, st[changeIndex].ID, st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s", st[changeIndex].name);
printf("学号:");
scanf("%s", st[changeIndex].ID);
printf("成绩:");
scanf("%d", &st[changeIndex].score);
// 信息修改后重新更新文件里面的数据 以保持数据一致性
fp = fopen("C://student.dat", "wb");
for (i = 0; i < Number; i++) {
fwrite(&st[i], sizeof(struct student), 1, fp);
}
fclose(fp);
printf("\t=======修改成功\n");
}
void bjg() { // 输出不及格人数
int i = 0;
printf("以下是不及格:\n");
printf("\t姓名\t学号\t成绩\n");
for (i = 0; i < Number; i++) {
if (st[i].score < 60) {
printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
}
}
}
void px() { // 排序
struct student temp;
int wantNUmber = 0;
int i = 0;
int j = 0;
for (i = 0; i < Number - 1; i++) {
for (j = i; j < Number - 1; j++) {
if (st[j].score < st[j + 1].score) {
temp = st[j];
st[j] = st[j + 1];
st[j + 1] = temp;
}
}
}
printf("你想输出前几名的成绩:");
scanf("%d", &wantNUmber);
if (wantNUmber > Number) {
wantNUmber = Number;
}
printf("\t姓名\t学号\t成绩\n");
for (i = 0; i < wantNUmber; i++) {
printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
}
}
void tj() { // 统计
int i = 0;
double sum = 0.0;
for (i = 0; i < Number; i++) {
sum += st[i].score;
}
printf("全班总分为:%f\n", sum);
printf("平均分为:%f\n", sum / Number);
}
void del() { // 删除
int n = 0;
printf("1 按姓名删除\n");
printf("2 按学号删除\n");
scanf("%d", &n);
switch (n) {
case 1:
xmsc();
break;
case 2:
xhsc();
break;
}
}
void xmsc() { // 按姓名删除
FILE *fp = NULL;
char name[60];
int i = 0;
int j = 0;
printf("请输入要删除的学生姓名:");
scanf("%s", name);
for (i = 0; i < Number; i++) {
if (strcmp(name, st[i].name) == 0) { // 如果查找到就删除
for (j = i; j < Number - 1; j++) {
st[j] = st[j + 1];
}
Number--;
}
}
// 将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp = fopen("C://student.dat", "wb");
for (i = 0; i < Number; i++) {
fwrite(&st[i], sizeof(struct student), 1, fp);
}
fclose(fp);
printf("删除成功;\n");
}
void xhsc() { // 按学号删除
FILE *fp = NULL;
char id[60];
int i = 0;
int j = 0;
printf("请输入要删除的学生学号:");
scanf("%s", id);
for (i = 0; i < Number; i++) {
if (strcmp(id, st[i].ID) == 0) { // 如果查找到就删除
for (j = i; j < Number - 1; j++) {
st[j] = st[j + 1];
}
Number--;
}
}
// 将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp = fopen("C://student.dat", "wb");
for (i = 0; i < Number; i++) {
fwrite(&st[i], sizeof(struct student), 1, fp);
}
fclose(fp);
printf("删除成功;\n");
}
void chazhao() { // 查找学生
int n = 0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d", &n);
switch (n) {
case 1:
xmcz();
break;
case 2:
xhcz();
break;
default:
printf("输入有误,结束!\n");
break;
}
}
void xhcz() { // 按学号查找
char id[7];
int i = 0;
printf("请输入要查找学生学号:");
scanf("%s", id);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i = 0; i < Number; i++) {
if (strcmp(id, st[i].ID) == 0) {
printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
}
}
}
void xmcz() { // 按姓名查找
char name[7];
int i = 0;
printf("请输入要查找学生姓名:");
scanf("%s", name);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i = 0; i < Number; i++) {
if (strcmp(name, st[i].name) == 0) {
printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
}
}
}
void zz() {
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 易樊制作 ^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^^ QQ:895115828\n\n");
printf("\t**********************************************************\n\n");
}
void select() { // 查看学生
int i = 0;
printf("以下是全部学生成绩\n");
printf("\t姓名\t学号\t成绩\n");
for (i = 0; i < Number; i++) {
printf("\t%s\t%s\t%d\n", st[i].name, st[i].ID, st[i].score);
}
}
void add() { // 增加学生
int numberTemp = 0;
int i = 0;
struct student temp; // 临时保存信息
printf("请输入要增加学生成绩个数:");
scanf("%d", &numberTemp);
for (i = 0; i < numberTemp; i++) {
printf("输入第%d个同学信息\n", i + 1);
printf("姓名:");
scanf("%s", temp.name);
printf("学号:");
scanf("%s", temp.ID);
printf("成绩:");
scanf("%d", &temp.score);
st[Number++] = temp; // 将刚添加的写入到数组
bc(&temp); // 将刚添加的写入到文件
}
printf("添加成功\n");
}
void bc(struct student *st) {
FILE *fp = NULL;
fp = fopen("C://student.dat", "ab+");
fwrite(st, sizeof(struct student), 1, fp);
fclose(fp);
}
int dq(struct student st[]) {
FILE *fp = NULL;
int i = 0;
fp = fopen("C://student.dat", "rb");
while (fread(&st[i], sizeof(struct student), 1, fp)) {
i++;
}
fclose(fp);
return i;
}
void xianshi() {
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 学生成绩管理系统 *\n");
printf("\t* *\n");
printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");
printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");
printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩 *\n");
printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n");
printf("\t* [9] 关于作者 [10] 保存数据 *\n");
printf("\t* [0] 退出系统 *\n");
printf("\t*****************************************************************\n");
}
C语言课程设计学生成绩管理系统 功能:学生成绩管理系统,每个学
参考以下,部分代码改了即可:首先将记录储存再TXT文件下,格式如下所示:
学号 姓名 性别 等级 笔试 机试 类别
1 张三 男 二级 66 77
2 李四 男 三级 88 99
3 张二 男 二级 40 60
4 李二 女 二级 50 59
5 王五 女 三级 99 99
6 王三 男 二级 77 61
7 刘四 男 四级 60 59
8 刘五 女 二级 88 77
9 张五 女 二级 64 81
10 李六 女 二级 59 30
代码如下,本人亲自编写,无错误通过
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
void add_information(string str);
void delete_information(string str);
void edit_information(string str);
void scanf_information(string str);
void score_scanf(string str);
void pingfen(string str);
void pass_total(string str);
main() {
cout << "请输入选项:";
int number;
string name; // 统计用的科目名
switch (number) {
case 1:
cout << "请输入选项:";
switch (number) {
case 1:
add_information(str);
break;
case 2:
delete_information(str);
break;
case 3:
edit_information(str);
break;
case 4:
scanf_information(str);
break;
default:
cout << "输入错误!";
break;
}
break;
default:
cout << "输入错误!";
break;
}
}
void add_information(string str) {
ofstream outstream;
outstream.open("temp.txt");
if (!outstream) {
cout << "打开文件失败!";
exit(1);
}
outstream << str;
outstream.close();
}
void delete_information(string str) {
ifstream instream;
ofstream outstream;
string name_1;
string a, b, c, d, e, f;
outstream.open("temp.txt");
bool flag = 0; // 是否查找到
while (1) { // 删除操作,自己感觉都有点麻烦
instream >> name_1;
if (name_1 != a) {
outstream << name_1 << " " << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
}
}
outstream.close();
}
void edit_information(string str) {
ifstream instream;
ofstream outstream;
string name_1;
string a, b, c, d, e, f;
outstream.open("temp.txt");
bool flag = 0; // 是否查找到
while (1) { // 删除操作,自己感觉都有点麻烦
instream >> name_1;
if (name_1 == a) { // 找到修改的记录
flag = 1;
cout << "请输入新的信息:";
cin >> a >> b >> c >> d >> e >> f;
}
outstream << name_1 << " " << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
}
outstream.close();
}
void scanf_information(string str) {
ifstream instream;
string name_1;
string a, b, c, d, e, f, g;
bool flag = 0; // 是否查找到
while (1) { // 删除操作,自己感觉都有点麻烦
instream >> name_1;
if (name_1 == g) { // 找到修改的记录
flag = 1;
cout << "找到记录:" << a << " " << b << " " << c << " " << d << " " << e << " " << f << endl;
}
}
if (!flag) {
cout << "未找到记录!";
}
}
void score_scanf(string str) {
ifstream instream;
string name_1;
string a, b, c, d, e, f, g;
int count = 0;
while (1) { // 删除操作,自己感觉都有点麻烦
instream >> name_1;
if (g == "优秀" || g == "良好" || g == "及格") {
count++;
}
if (instream.eof()) {
break;
}
}
cout << "合格的人数为:" << count << endl;
}
void pingfen(string str) {
// 实现评分功能
}
void pass_total(string str) {
// 实现统计功能
}
C语言课程设计
// 我以前的作业
游戏说明
- 开始游戏
- 系统随机产生一位不重复的N位数字。N的大小与等级有关。
- 初级:N=3 中级:N=4 高级:N=5
- 游戏者输入所猜的不重复数字,并按回车提交。提交的数据数应与N的大小一致,当数据位数大于N时,只取前N位。
- 系统将提交的数与它自动产生的数进行比较,输出结果“AB”形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
- 游戏者有限定次数的猜测机会,在规定次数内完成,则游戏成功,否则,游戏失败。其中,猜测次数与等级有关:
- 初级:10次
- 中级:9次
- 高级:8次。
- 按完成游戏所用的时间和次数计算游戏者所得分数,游戏等级越高,猜测所用的次数越少,得分越高!若游戏者得分比系统已经保存的分数的高,将提示要求输入游戏者信息,并且保存在最佳排行之中。
- 等级设置
- 游戏者可以自行设置游戏等级:初级,中级和高级。
- 最佳排行
- 在最佳排行中,游戏者可以查看当前游戏的最佳排行。
- 游戏说明
- 在游戏说明中,游戏者可以查看游戏规则。
总体设计
本课程设计对模块设计的要求如下:
- 要求使用多文件方式实现设计;
- 要求在各个文件内实现结构化设计;
- 每个模块作为一个单独的C文件,每个文件内的函数如表所示,表中给出了各个函数的功能说明。
- 宏和数据结构等放在头文件中,并使用条件编译。
文件及函数组成
源文件 | 函数名或其他成分 | 功能 |
---|---|---|
record.h | ASK 宏定义 | 结构声明 |
game_control.c | Game_rank 设置游戏等级 | Game_explain 输出游戏说明 |
game_register.c | Tiptop_record 记录最高分 | Tiptop_output 输出最佳排行 |
game.c | Game_main 开始游戏中心 | Build_number 获取系统随机数字 |
Game_in_out 获取游戏者数据和输出结果 | Time_command 时间控制 | |
Game_result 游戏结果处理输出 | ||
record.c | main 主函数 | Menu_select 选择菜单 |
manage_menu 处理菜单 |
函数设计
- 头部文件
- 文件名称:record.h
- 功能:声明函数原型,包含文件及自定义宏和数据结构。
- 要求:报告是否能正常打开文件执行操作。
- 设置游戏等级函数
- 函数原型:void Game_rank(void)
- 功能:可由游戏者自行设置游戏等级
- 参数:void
- 返回值:void
- 要求:如果游戏者没有进行等级设定,则默认初级进行游戏。
- 输出游戏说明函数
- 函数原型:void Game_explain()
- 功能:输出游戏规则说明
- 参数:void
- 返回值:void
- 要求:说明游戏相应的按键,保证游戏者按照说明。
- 记录最高分函数
- 函数原型:void Tiptop_register(int)
- 功能:把从Get_player函数得到的游戏者信息和游戏的积分信息一同保存到指定路径的Tiptop_register.dat文件中
- 参数:int S;S为游戏积分
- 返回值:void
- 要求:要求把Tiptop1.txt(初级最高分) Tiptop2.txt(中级最高分) Tiptop3.txt(高级最高分)原来有的信息替换为现在的信息,并且只有积分大于原有信息的第十名,才会被以替换的方式记录;并且是降序的方式排列的。
- 输出最佳排行函数
- 函数原型:void Tiptop_out()
- 功能:输出最佳排行信息
- 参数:void
- 返回值:void
- 要求:没有信息的时候输出提示,有信息时按降序排列输出全部信息。
- 开始游戏中心函数
- 函数原型:void Game_main()
- 功能:调用Time_control、Build_number等函数,进行游戏的整体控制
- 参数:void
- 返回值:void
- 要求:注意函数的完整性,保证游戏顺利进行,