第一次制作课设,大一上学期C语言
要求:用数组实现 增、删、查、改。
学生管理系统(数组版)
一.课程设计目的
1.系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。
2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握使用系统设计的方法和步骤,灵活运用熟悉数组与函数在软件开发中的使用。
3.学会将知识使用于实际的方法,提高分析和解决问题的能力,增加综合能力。
(1)熟练使用数组以及字符数组进行实际应用;
(2)熟练掌握调用函数与数组结合;
(3)学会自己调试程序的方法并掌握一定的技巧。
二.课程设计内容和要求
“学生管理系统”的设计与实现
- 问题描述
设计一个学生管理系统,进行学生成绩信息的管理。 - 基本要求
(1)利用数组完成
(2)实现对学生成绩的添加
(3)实现对学生成绩的修改
(4)实现对学生成绩的删除
(5)实现对利用信息查询学生成绩
3.测试数据
由读者根据实际情况指定。
【实现提示】
按回车键进行下一步
三.任务完成情况
整体利用数组完成
1 输入所有学生信息及成绩
由for循环语句实现将信息录入已声明数组之中。
2 输出所有学生信息及成绩
由for循环语句按输入顺序输出已录入数组。
3 按学号查找某个学生信息
由for循环找出输入的学号数组并且输出
4 按学号修改某个学生信息
由for循环找出输入的学号数组,后输入对应数值进行修改
5 按学号删除某个学生信息
由for循环找出输入的学号数组,删除当前学生信息即为将数组从result 的位置依次前挪一个位置
四.设计报告
4.1 需求分析
4.1.1 用户需求
(1)输入学生的学号,姓名,语文,数学,英语成绩,自己计算总分。
(2)打印学生信息,各科成绩,总分。
(3)利用学号查找学生信息。
(4)利用学号进行学生信息的删除。
4.2 概要设计
4.2.1 总体设计
4.2.2 各功能函数的设计
- 欢迎界面,显示菜单。
- 输入学生信息以及成绩。
- 输出学生信息以及成绩。
- 删除学生信息以及成绩。
- 修改学生信息以及成绩。
- 查找学生信息以及成绩。
4.3 详细设计
4.3.1 程序流程图
4.4 详细代码
4.4.1 头文件
#include<bits/stdc++.h>
using namespace std; //万能头
void shuru(int n);
void shuchu(int n);
int find_xuehao(int n);
int xiugai_xuehao(int n) ;
int delete_xuehao(int n) ;
//声明数组,存储学生信息
char names[233][233];//名字
int chinese[233];//语文成绩
int math[233];//数学成绩
int english[233];//英语成绩
int sum[233];//总成绩
int num[233];// 学号
//声明循环变量
int i, j;
4.4.2 主函数
int main(void)
{
int choice,n;
while (1)
{
printf("\t\t\t\t丨==========================================丨\n");
printf("\t\t\t\t丨欢迎使用学生成绩管理系统 丨\n");
printf("\t\t\t\t丨请输入您的选择(0 - 6) 丨\n");
printf("\t\t\t\t丨① 输入所有学生信息及成绩 丨\n");
printf("\t\t\t\t丨② 输出所有学生信息及成绩 丨\n");
printf("\t\t\t\t丨③ 按学号查找某个学生信息 丨\n");
printf("\t\t\t\t丨④ 按学号修改某个学生信息 丨\n");
printf("\t\t\t\t丨⑤ 按学号删除某个学生信息 丨\n");
printf("\t\t\t\t丨⑥ 按总分进行排序 丨\n");
printf("\t\t\t\t丨0 退出程序 丨\n");
scanf("%d",&choice);//输入选择
printf("======================================================\n");
switch (choice)
{
case 1:
printf("请输入录入的学生数: ");
scanf("%d",&n);
shuru(n);
break;
case 2:
shuchu(n);
break;
case 3:
find_xuehao(n);
break;
case 4:
xiugai_xuehao(n);
break;
case 5:
delete_xuehao(n);
n--;
break;
case 6:
printf("该功能维护中...\n");
break;
case 0:
printf("退出程序\n");
printf("程序结束\n");
exit(0);
default:
printf("请重新输入\n");
}
}
return 0;
}
4.4.3 输入函数
void shuru(int n)//循环存储成绩
{
for (i=0; i<n; i++)
{
printf("\n请输入第%d个学生的信息:\n", i + 1);
printf("\n学号:");
scanf("%d", &num[i]);
printf("\n姓名:");
scanf("%s", &names[i]);
printf("\n数学成绩:");
scanf("%d", &math[i]);
printf("\n英语成绩:");
scanf("%d", &english[i]);
printf("\n语文成绩:");
scanf("%d", &chinese[i]);
sum[i] = math[i] + english[i] + chinese[i];
}
}
4.4.4 输出函数
void shuchu(int n)
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
printf("==============================================================================\n");
for (i=0; i<n; i++)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], chinese[i], sum[i]);
}
printf("==============================================================================\n");
}
4.4.5 学号查找函数
int find_xuehao(int n)
{
int nums;
int x;
printf("请输入待查找的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[x], names[x], math[x], english[x], chinese[x], sum[x]);
printf("结果如上\n");
}
return 1;
}
4.4.6 学号修改函数
int xiugai_xuehao(int n)
{
int nums;
int x;
printf("请输入待修改的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[x]);
printf("姓名:\n");
scanf("%s",names[x]);
printf("数学成绩:\n");
scanf("%d",&math[x]);
printf("英语成绩:\n");
scanf("%d",&english[x]);
printf("语文成绩:\n");
scanf("%d",&chinese[x]);
sum[x] = math[x] + english[x] + chinese[x];
}
return 1;
}
4.4.7 学号删除函数
int delete_xuehao(int n)
{
int nums;
int x;
printf("请输入待删除的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有!\n");
return 0;
}
else
{
for(i=x; i<n-1; ++i)
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
chinese[i] = chinese[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
4.5 使用说明
按照提示进行,回车进行下一步。
4.6 测试结果与分析
主界面如图:
信息录入如图:
信息输出如图:
学号查找信息如图:
学号修改信息如图:
学号删除信息如图:
4.7 参考文献
- [1] 谭浩强,C语言程序设计.清华大学出版社,2010.6
- [2] CSDN
五.体会与感想
第一次制作课设,完全摸不着头脑,不过再学长指点以及相关资料的帮助下,还是顺利的完成,这既是学习之路上的挑战,更是个基于,这是我们软件开发进行应用的第一步,迈出了第一步,这场软件之战就顺利打响了,希望未来的日子里能陪着大家共同学习,共同进步。学知识的目的还是为了应用,如何利用所学的知识来进行实际应用是非常重要的。
附录
//学生管理系统,用数组写。
#include<bits/stdc++.h>
using namespace std; //万能头
void shuru(int n);
void shuchu(int n);
int find_xuehao(int n);
int xiugai_xuehao(int n) ;
int delete_xuehao(int n) ;
//声明数组,存储学生信息
char names[233][233];//名字
int chinese[233];//语文成绩
int math[233];//数学成绩
int english[233];//英语成绩
int sum[233];//总成绩
int num[233];// 学号
//声明循环变量
int i, j;
/*
int:
Int是将一个数值向下取整为最接近的整数的函数。
int是数据库中常用函数中的取整函数,常用来判别一个数能否被另一个数整除。
在编程语言(C、C++、C#、Java等)中,常用于定义整数类型变量的标识符。
void:
中文翻译为“无类型”。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
void真正发挥的作用在于:
1、 对函数返回的限定;
2、对函数参数的限定。
void的使用规则:
规则一:如果函数没有返回值,那么应声明为void类型
规则二:如果函数无参数,那么应声明其参数为void
规则三:小心使用void指针类型
规则四:如果函数的参数可以是任意类型指针,那么应声明其参数为void *
规则五:void不能代表一个真实的变量
*/
//------------------------------------------
int main(void)
{
int choice,n;
while (1)
{
printf("\t\t\t\t丨==========================================丨\n");
printf("\t\t\t\t丨欢迎使用学生成绩管理系统 丨\n");
printf("\t\t\t\t丨请输入您的选择(0 - 6) 丨\n");
printf("\t\t\t\t丨① 输入所有学生信息及成绩 丨\n");
printf("\t\t\t\t丨② 输出所有学生信息及成绩 丨\n");
printf("\t\t\t\t丨③ 按学号查找某个学生信息 丨\n");
printf("\t\t\t\t丨④ 按学号修改某个学生信息 丨\n");
printf("\t\t\t\t丨⑤ 按学号删除某个学生信息 丨\n");
printf("\t\t\t\t丨⑥ 按总分进行排序 丨\n");
printf("\t\t\t\t丨0 退出程序 丨\n");
printf("\t\t\t\t丨==========================================丨\n");
scanf("%d",&choice);//输入选择
switch (choice)
{
case 1:
printf("请输入录入的学生数: ");
scanf("%d",&n);
shuru(n);
break;
case 2:
shuchu(n);
break;
case 3:
find_xuehao(n);
break;
case 4:
xiugai_xuehao(n);
break;
case 5:
delete_xuehao(n);
n--;
break;
case 6:
printf("该功能维护中...\n");
break;
case 0:
printf("退出程序\n");
printf("程序结束\n");
exit(0);
default:
printf("请重新输入\n");
}
}
return 0;
}
void shuru(int n)//循环存储成绩
{
for (i=0; i<n; i++)
{
printf("\n请输入第%d个学生的信息:\n", i + 1);
printf("\n学号:");
scanf("%d", &num[i]);
printf("\n姓名:");
scanf("%s", &names[i]);
printf("\n数学成绩:");
scanf("%d", &math[i]);
printf("\n英语成绩:");
scanf("%d", &english[i]);
printf("\n语文成绩:");
scanf("%d", &chinese[i]);
sum[i] = math[i] + english[i] + chinese[i];
}
}
void shuchu(int n)
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
printf("==============================================================================\n");
for (i=0; i<n; i++)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], chinese[i], sum[i]);
}
printf("==============================================================================\n");
}
int find_xuehao(int n)
{
int nums;
int x;
printf("请输入待查找的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t语文成绩\t总成绩\n");
printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[x], names[x], math[x], english[x], chinese[x], sum[x]);
printf("结果如上\n");
}
return 1;
}
int xiugai_xuehao(int n)
{
int nums;
int x;
printf("请输入待修改的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[x]);
printf("姓名:\n");
scanf("%s",names[x]);
printf("数学成绩:\n");
scanf("%d",&math[x]);
printf("英语成绩:\n");
scanf("%d",&english[x]);
printf("语文成绩:\n");
scanf("%d",&chinese[x]);
sum[x] = math[x] + english[x] + chinese[x];
}
return 1;
}
int delete_xuehao(int n)
{
int nums;
int x;
printf("请输入待删除的学生学号:");
scanf("%d",&nums);
x= -233;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
x = i;
break;
}
}
if (x == -233)
{
printf("没有!\n");
return 0;
}
else
{
for(i=x; i<n-1; ++i)
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
chinese[i] = chinese[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}