机房管理收费系统报告

更新时间:2024-03-26 22:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 程 设 计 报 告

学院、系: 吉林大学珠海学院计算机科学与技术系 专业名称: 课程设计科目 学生姓名: 指导教师: 完成时间:

网络工程 C语言程序课程设计

张军 王老师 2010年3月-5月

题目: 机房收费管理系统

(1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。

(2)计算功能:计算每个下机学生的上机费用,每小时1元。(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)

(3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。

(4)机器使用情况的显示(显示方式不限但要一目了然)

一、设计任务与目标:

1. 学会分析题目、设计算法,尽量做到精简高效。 2. 学会运用结构体,时间函数等一些常用函数。 3. 学会实现函数的定义、调用。

4. 实现动手能力的基本训练,提高发现、提出、分析和解决实际问题的能力。

二、方案设计与论证:

1. 2. 3. 4. 5. 6. 7.

首先用一个结构体来定义学生的学号、班级、姓名、上机起始时间。 编写一个输入函数,用于输入学生的信息。 编写一个时间函数,用于计算上机费用。

编写一个查询函数,用于按条件查询上机学生的信息。 编写一个菜单函数,用于在窗口显示功能菜单。 编写一个机器使用情况的函数,显示机器的使用情况。 编写一个主函数,用来调用前面的函数。

三、程序框图或流程图,程序清单与调用关系:

开始 a=4 输入a a=2 输入信息查询 输入信息 输出费用 输出学生信息 a=0 a=3 a=1 机器情况 c=1 输入c 输入c 输入c c=1 输入c C=0 C=0 结束 C=0

四、全部源程序清单:

#include #include #include #include struct student {

char id[20]; char Class[20]; char name[20]; char ontime[20];

char num[30]; //机器数量 }student[100];

int n; //录入学生人数

void addition() //录入函数,用于录入学生信息 { int i;

printf(\请输入录入学生信息的总数:\ scanf(\ for(i=1;i<=n;i++) {

printf(\请输入第%d个学生机号:\ scanf(\

printf(\请输入第%d个学生学号:\ scanf(\

printf(\请输入第%d个学生班级:\ scanf(\ printf(\请输入第%d个学生姓名:\ scanf(\

printf(\请输入第%d个学生上机时间:\ scanf(\

printf(\提示:您已成功录入第%d条信息\\n\ } }

void machine() //显示机器使用情况的函数 {

int i,m; //m为没有使用的机器数

printf(\printf(\机号 学号 班级 姓名 上机起始时间\\n\printf(\for(i=0;i

{ printf(\

ent[i].Class,student[i].name,student[i].ontime); //输出学号、班级、姓名、上机起始时间

}

m=30-n; printf(\

%d

\

printf(\}

void calculate() //计算函数,用于计算上机费用 {

int hours; char times[30]; time_t rawtime; struct tm * timeinfo; time ( &rawtime );

timeinfo = localtime(&rawtime );

strcpy(times,asctime(timeinfo)); //下机时的系统时间赋给times printf(\所有学生上机费用如下:\\n\ for(int i=1;i<=n;i++) {

printf(\学生%d费用:\

if((student[i-1].ontime[3]-48)*10+student[i-1].ontime[4]>(times[14]-48)*10+times[15]) //上机时间跟下机时间的分钟数相比较

hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-stud

ent[i-1].ontime[1]; //下机时间的小时数减去上机时间的小时数 else

hours=(times[11]-48)*10+times[12]-(student[i-1].ontime[0]-48)*10-student[i-1].ontime[1]+1; //下机时间的小时数减去上机时间的小时数再加1 printf(\输出上机小时数,即上机费用 } }

void search() //查询函数,用于按条件查询上机学生的信息 {

int i,b,c; do {

char putin[20];

printf(\请选择查询方式:1.根据学号查询;2.根据班级查询;3.根据姓名查询;4.根据上机时间查询5.根据机号查询:\ scanf(\ switch(b) { case 1:

printf(\请输入学生的学号:\ scanf(\ for(i=0;i

{

if(strcmp(student[i].id,putin)==0) //输入的学号与原来录入的学号比较看是否有相同

{ printf(\机号\\t学生学号\\t学生班级\\t学生姓名\\t上机时间\\n\

printf(\lass,student[i].name,student[i].ontime);} while(i>n)

printf(\提示:该生不存在\

}

goto A; case 2:

printf(\请输入学生的班级:\ scanf(\ for(i=0;i

{

if (strcmp(student[i].Class,putin)==0)

//输入的班级与原来录入的班级比较看是有否相同

{ printf(\机号\\t学生学号\\t学生班级\\t学生姓名\\t上机时间\\n\

printf(\lass, student[i].name,student[i].ontime);} while(i>n)

printf(\提示:该生不存在\

}

goto A; case 3:

printf(\请输入学生的姓名:\ scanf(\ for(i=0;i

{

if (strcmp(student[i].name,putin)==0) //输入的姓名与原来录入的姓名比较看是否有相同

{ printf(\机号\\t学生学号\\t学生班级\\t学生姓名\\t上机时间\\n\

printf(\lass, student[i].name,student[i].ontime);} while(i>n)

printf(\提示:该生不存在\

}

goto A; case 4:

printf(\请输入学生的上机时间:\ scanf(\ for(i=0;i

{

if (strcmp(student[i].ontime,putin)==0) //输入的时间与原来录入的时间比较看是否有相同

{ printf(\机号\\t学生学号\\t学生班级\\t学生姓名\\t上机时间\\n\

printf(\lass, student[i].name,student[i].ontime);} while(i>n)

printf(\提示:该生不存在\

}

goto A; case 5:

printf(\请输入学生机号:\ scanf(\ for(i=0;i

{

if (strcmp(student[i].num,putin)==0) //输入的时间与原来录入的时间比较看是否有相同

{ printf(\机号\\t学生学号\\t学生班级\\t学生姓名\\t上机时间\\n\

printf(\lass, student[i].name,student[i].ontime);} while(i>n)

printf(\提示:该生不存在\

}

goto A;

default:printf(\提示:输入错误\ }

A:printf(\继续\\n\\t**0.返回主菜单\ //输入1就继续查询,输入0就返回主菜单 printf(\请输入您的选择:\ scanf(\ }while(c); }

void menu() //窗口主菜单函数 {

printf(\欢迎进入机房收费管理********************\\n\printf(\录入功能 2.计算功能 *\\n\printf(\查询功能 4.机器使用情况 0.-*EXIT*- *\\n\printf(\printf(\请输入您的选择:\}

void main() {

system(\窗口颜色 int a;

C:menu(); //菜单功能 scanf(\ switch(a) {

case 0:printf(\正在退出**谢谢使用本系统,再见\ case 1:addition();goto C; /*录入功能*/ case 2:calculate();goto C; /*计算功能*/ case 3:search();goto C; /*查询功能*/

case 4:machine();goto C; /*机器使用情况*/ } }

五、程序运行的测试与分析:

运行,出现主菜单,当输入0或1或2或3或4时,成功进入相应

功能:①输入1,进入录入功能,需要输入学生的信息,输完后会提示:已经成功输入多少条信息,然后自动回到主菜单,可以继续选择其它功能。②输入2,显示出每个学生的上机费用,然后自动跳回主菜单。 ③输入3,查询功能,出现5个条件供选择,有按学号查询,按姓名查询,按班级查询,按上机时间查询,按机号查询,输入相应的数字,再按所需条件,就会出现学生信息,然后按0则继续查询,按1则返回主菜单。④输入4,机器使用情况,会在窗口出现每个学生的机器号数和学生信息,还有剩余几台机器没有人在使用。⑤输入0,则退出系统。

六、结论与心得:

刚看到这题目时,感觉有点难上手,后来静下心来仔细分析,感觉

没想象中的难,只是对这个时间函数还不是很了解,然后在网上查找了时间函数的用法,把整个程序的结构连接起来就好了。在调试时,出现了不少错误,然后一个一个的找出来改正,直到调试成功。这次实践课让我学到了很多,学会了时间函数的一些用法,把字符型数字转换成整型数字等方很多法,让我知道要多动手自己去做去实践,只看课本是不能学到多少的,还有要增广自己的知识面,多学多问,不断吸收才能使自己进步。

七、参考资料:

在网上百度了时间函数的用法。

八、致谢:

感谢学校、老师为我们开展了这次C语言专业实践课,为我们提供

了这么好的一个自我实践机会,让我们提高了自己的动手实践能力,让我们对C语言有了更深入的了解和兴趣。还要感谢指导老师对我们辛勤的教导,认真的为我们答疑,严格的要求我们,谢谢!

本文来源:https://www.bwwdw.com/article/ns9r.html

Top