资源描述
C语言机房收费管理系统课程设计
20
2020年4月19日
文档仅供参考
课程设计报告
课程设计题目:机房收费管理系统
学 号: 052112
姓 名:刘名
专 业:信息与计算科学
班 级:信息131
指导教师: 孙雪莲
3月18 日
1. 实验题目:
Ø 《机房收费管理系统》设计任务
(1)输入功能:输入30名学生的学号、班级、姓名、上机起止时间。
(2)计算功能:计算每个学生的上机费用。
(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)
(3)查询功能:按条件(班级、学号、姓名、上机时间)显示学生信息。
2. 实验时间,地点
实验时间:15周
实验地点:软件楼 208
3. 实验目的:
经过对基本数据类型、语句、数组、函数、结构、指针以及文件等的操作,使学生全面掌握结构化程序设计的基本方法。
4. 实验要求:
从课程设计的目的出发,经过课程设计的各个环节,达到以下教学要求:
(1)进一步掌握C语言程序设计的基本思想和方法;
(2)掌握结构化程序设计的基本原理及应用;
5. 实验思路:
需求分析:根据机房收费管理设计的要求,需要设计三个功能,分别是输入功能,计算功能和查询功能。
在输入功能方面,需要把学号、班级、姓名、上机时间等输入进系统中。
在计算功能方面,需要计算出每个学生的上机所用的费用。
在查询功能方面,要能够按照查询条件,查询出相应的班级、学号、姓名、上机时间等学生信息。
在设计工程中,把每个功能使用自定义函数的方式书写,并最后用switch语句在主函数中调用,使用模块化设计的总体思路。
上机费用
班级
流程图为:
上机时间
姓名
学号
计算
查询
主菜单
输入
上机时间
姓名
班级
学号
6. 实现过程:
#include<stdio.h> /*I/O函数*/
#include<string.h> /*字符串函数*/
#include<stdlib.h> /*标准库函数*/
struct time /*定义时间结构*/
{
int hour; /*时*/
int minute; /*分*/
};
typedef struct STUDENT /*定义学生信息结构*/
{
int no; /*学号*/
char cla[10]; /*班级*/
char name[10]; /*姓名*/
int time_hour; /*上机时间*/
int time_minute;
struct time begin,end; /*嵌套时间结构*/
};
struct STUDENT student[30];
static int i =0; /*全局静态变量*/
void insert(); /*输入功能函数*/
void end_money(); /*结账功能函数*/
void select_no(); /*学号查询功能函数*/
void select_name(); /*姓名查询功能函数*/
void select_cla(); /*班级查询功能函数*/
int main() /*主函数*/
{
int i;
for(;;) /*主菜单*/
{
printf("\t\t*********************************\n");
printf("\t\t*********机房收费管理系统********\n");
printf("\t\t*********************************\n");
printf("1.---------------输入学生信息:\n");
printf("2.---------------结账:\n");
printf("3.---------------按学号查询:\n");
printf("4.---------------按班级查询:\n");
printf("5.---------------按姓名查询:\n");
printf("6.---------------退出系统:\n");
printf("\n\n^^^^^^^^^^^^^^^^^^^^^^^编程人员:刘忠杨^^^张鼎^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
printf("\n\n请选择功能:");
scanf("%d",&i);
switch(i)/*选择分支结构*/
{
case 1:
{
system("cls");
insert();
}break;
case 2:
{
system("cls");
end_money();
}break;
case 3:
{
system("cls");
select_no();
}break;
case 4:
{
system("cls");
select_cla();
}break;
case 5:
{
system("cls");
select_name();
}break;
case 6:
{
return 0;
}
}
}
system("pause");
return 0;
}
void insert() /*输入功能*/
{
printf("请输入学号:");
scanf("%d",&student[i].no);
printf("请输入姓名:");
scanf("%s",&student[i].name);
printf("请输入班级:");
scanf("%s",&student[i].cla);
printf("请输入上机时间:");
scanf("%d:%d",&student[i].begin.hour,&student[i].begin.minute);
i = i + 1;
system("pause");
system("cls");
}
void end_money() /*计算功能*/
{
int m,minute,hour; /*保存时间*/
int no;
printf("请输入学号:");
scanf("%d",&no);
for(m = 0;m < i;m++)
{
if(no == student[m].no)
{
printf("请输入%d的下机时间:",no);
scanf("%d:%d",&student[m].end.hour,&student[m].end.minute);
if(student[m].end.minute <student[m].begin.minute)
{
minute = student[m].end.minute +60 -student[m].begin.minute;
hour = student[m].end.hour -1 - student[m].begin.hour;
student[m].time_hour = hour;
student[m].time_minute = minute;
}
else
{
minute = student[m].end.minute - student[m].begin.minute;
hour = student[m].end.hour - student[m].begin.hour;
student[m].time_hour = hour;
student[m].time_minute = minute;
}
if(minute > 0)
{
hour = hour + 1;
printf("上机时间为:%d:%d 费用为:%d",student[m].time_hour,student[m].time_minute,hour);
}
else
{
printf("上机时间为:%d:%d 费用为:%d",student[m].time_hour,student[m].time_minute,hour);
}
}
}
system("pause");
system("cls");/*清屏*/
}
Void select_no() /*按学号查询功能*/
{
int no;
int m;
printf("请输入学号:");
scanf("%d",&no);
for(m = 0;m < i;m++)
{
if(no == student[m].no)
{
printf("学号为%d\t",student[m].no);
printf("班级为%s\t",student[m].cla);
printf("姓名为%s\t",&student[m].name);
printf("上机开始时间为%d:%d\t",student[m].begin.hour,student[m].begin.minute);
printf("上机结束时间为%d:%d\t",student[m].end.hour,student[m].end.minute);
printf("上机时间为:%d:%d\n\t",student[m].time_hour,student[m].time_minute);
}
else if( m == i)
{
printf("没有该记录:\n");
}
}
system("pause");
system("cls");/*清屏*/
}
void select_cla() /*按班级查询功能*/
{
char cla[10];
int m;
printf("请输入班级:");
scanf("%s",cla);
for(m = 0;m < i;m++)
{
if(!strcmp(cla,student[m].cla))
{
printf("学号为%d\t",student[m].no);
printf("班级为%s\t",student[m].cla);
printf("姓名为%s\t",&student[m].name);
printf("上机开始时间为%d:%d\t",student[m].begin.hour,student[m].begin.minute);
printf("上机结束时间为%d:%d\t",student[m].end.hour,student[m].end.minute);
printf("上机时间为:%d:%d\n",student[m].time_hour,student[m].time_minute);
}
else if( m == i)
{
printf("没有该记录:\n");
}
}
system("pause");
system("cls");/*清屏*/
}
void select_name()/*按姓名查询功能*/
{
char name[10];
int m;
printf("请输入姓名:");
scanf("%s",name);
for(m = 0;m < i;m++)
{
if(!strcmp(name,student[m].name))/*字符串的比较 非0为真执行*/
{
printf("学号为%d\t",student[m].no);
printf("班级为%s\t",student[m].cla);
printf("姓名为%s\t",&student[m].name);
printf("上机开始时间为%d:%d\t",student[m].begin.hour,student[m].begin.minute);
printf("上机结束时间为%d:%d\t",student[m].end.hour,student[m].end.minute);
printf("上机时间为:%d:%d\n",student[m].time_hour,student[m].time_minute);
}
else if( m == i)
{
printf("没有该记录:\n");
}
}
system("pause");
system("cls");/*清屏*/
}
7.实验总结:
根据机房收费管理系统的需求分析和设计要求,这次经过C语言程序设计,实现了本系统的基本功能,分别是信息的输入,查询和计算。
虽然实现了这三大基本功能,可是这次的程序设计也还是存在着一些不足之处,由于是新接触编程设计,自身对于学习的知识点也存在着一些模糊的概念。因此,在对于程序的模块化设计方面,认识也有待加强,代码变量使用过多,占用内存大,有很大的优化方向。
在实现功能的过程中,并没有用到指针和链表等高级C语言编程方式,这也是这次编程需要改进的地方。
8.心得体会
经过对机房收费管理系统的编写,更加掌握了C语言的基本语法,巩固了本学期所学的C语言知识。同时在C的设计过程中,对C语言运用循环,自定义函数等方面的思想有了更加深刻的认识,体会到了高级编程的强大,对以后编写程序有了很好的初步认识。
经过这周的课程设计,也认识到自己对于C语言的一些不足之处,在对书本的知识点还有些掌握的不够透彻,在一些编程的地方能够更加优化代码,以最少的代码实现最强大的功能。在指针和链表方面,以后也还需要和老师同学探讨,让以后的C语言编程中能够合理的运用这些C语言里的精华内容。
展开阅读全文