c课程设计机房管理系统(源代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计
报告
课程名称:C课程设计
班级:
学号:
姓名:
完成日期:
沈阳航空航天大学
北方软件学院
课设任务书
专业名称:计算机网络技术
设计题目:机房管理系统
起止时间:2011年6月27日至2011 年7月8日
问题描述
通过开发一个机房管理系统,掌握与指针、数组(链表)有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作,提高对C 语言的实际运用能力。
基本要求
机房管理系统实现功能:
1.登录:根据菜单提示进行相应的的操作;
2.机器信息文件的创建、增加、删除、修改;
3.按型号,编号等对机器信息进行查询。
实现提示
设计一个主菜单函数,通过菜单选择调用其他函数来实现相应的功能(switch语句)。
机器信息文件可包含编号,详细信息(主板,硬盘,cpu等信息)等项。
选作内容
可根据主板,硬盘,cpu等机器信息进行分类统计机器数量。
学生姓名:学号:
指导教师:年月日
机房管理系统
1概要设计
用于机房管理,机房电脑的入库应在机房账目上加入电脑的入机房日期,电脑型号,数量,种类等,在电脑出库时应登记出库日期,数量种类等指标,手续经办人签名等。
并有机房盘点功能。
基本要求:
入库登记功能
出库登记功能
机房盘点功能:机房中实际的存量
电脑超出存储范围,或没有电脑的预警功能
2详细设计
主菜单说明
struct product product[COUNT];
//定义物品结构体数组
void menu()
//主菜单,应用于选择进行的操作
{
int choice,A;
/*使主菜单循环*/
do
{
printf("\n\n");
printf("***********************************************************\n");
printf("***********************欢迎进入****************************\n");
printf("*********************机房管理系统**************************\n");
printf("***********************主菜单******************************\n");
printf("***********************************************************\n");
printf("\t\t 1、电脑入库登记 \n");
printf("\t\t 2、电脑出库登记\n");
printf("\t\t 3、电脑库存查询\n");
printf("\t\t 4、退出程序\n");
printf("***********************************************************\n");
printf("请选择所要执行的操作:");
scanf("%d",&choice);
结构体说明:
1、
struct product//定义物品的机构体
{
char name[SIZE];
char model[SIZE];
char kind[SIZE];
char person[SIZE];
int date;
float inprice;
int num;
int innumber;
int outnumber;
int number;
};
查询菜单说明
void Product_Search()
{
int select,B;
for(;1;)
{system("cls");
printf("\n\n");
printf("***********************************************************\n");
printf("*********************机房管理系统**************************\n");
printf("**********************物品出查询***************************\n");
printf("***********************************************************\n");
printf("\t\t 1.按型号查询\n");
printf("\t\t 2.按名称查询\n");
printf("\t\t 3.按编号查询\n");
printf("\t\t 4. 返回\n");
printf("***********************************************************\n");
printf("请选择所要执行的操作:");
scanf("%d", &select);
switch(select)
{
case 1: searchbymodel();getch(); break;
case 2: searchbyname();getch();break;
case 3: searchbynum();getch();break;
case 4: return menu();getch();break;
default: printf("\n\n输入错误,请重新输入!!!!!\n");
}
}
}
指针、函数说明:
3
#define SIZE 30//定义字符串长度
#define COUNT 100
void menu();//菜单
void Poduct_Enter();//定义货物入库函数
void Product_Out();//货物出库
void Product_Search();//货物查询
void searchbymodel();//货物按型号查询
void searchbyname();//货物按名字查询
void searchbynum();//货物按编号查找
void exit_system();//程序结束
void save();//保存数据
void open_out();//打开文件
int i,p;
2、
struct product *p;//定义指针
p=&product;
3调试报告
(1)忘记加分号,分号是C语句中不可缺少的一部分,语句末尾必须有分号,不该加分号的地方加了分号,后来经过调试改正了错误,另外,复合语句的花括号后不应再加分号,
否则将会画蛇添足。
(2)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失(3)在输入选项时不能输入字母,否则会死循环,建议不要乱输字母。
(4)函数的返回值问题,也是比较容易找出并解决的问题。
(5)输入变量时忘记加地址运算符“&”,这个问题比较容易找出。
经过调试解决了这几个问题,还有一些问题,经过调试也轻松解决了。
4测试结果
在解决了一些大问题后,反复运行程序,找出程序的不足之处,并设计诸多的可能来完善程序,使程序能够应对多种特殊情况,经过多次调试,程序无重大问题,并没有特别明显错误,程序完全可以正常运行,根据本次课程设计的要求对数据进行输入也并分析数据输出结果。
(1)下面截图是该程序的住菜单界面,永固可以根据自己的需求来进行对该程序的操作。
图1
(2)下面是电脑出库时储存信息的截图,用户可以电脑的详细信息进行提取,实现电脑出库。
图2
(3)下面是电脑入库时储存信息的截图,用户可以电脑的详细信息进行储存,实现入库
图3
(4)下面是该程序对已储存电脑的查询功能,用户可以根据自己所知道的物品信息进行不同方式的查询,查询方式有按型号查询,按名称查询,按编号查询,采用多种方式查询,可以避免因为对物品的不熟悉无法查询。
图4
(5)下面是电脑查询过程中的截图,当用户输入想要查询的电脑信息是,程序会显示出该电脑的详细信息供用户使用。
图5
5 使用说明
打开应用程序以后,进入到机房库管理系统的主菜单界面,主菜单中共有四个选项,可根据自己所要进行的不同操作进行选择,
1电脑入库登记;
2电脑出库登记;
3电脑库存查询;
4退出程序。
根据自己的需要进行选择以便进行操作。
在电脑入库登记和电脑出库登记系统中,分别按着系统提示进行对电脑的信息进行录入,对电脑在机房中的信息进行修改。
在电脑查询系统中,可根据需要选择不同的查询方式
1按型号查询;
2按名称查询;
3按编号查询;
4返回主菜单。
可以根据自己所知道的电脑信息进行不同方式的查找,采用多种方式查找,可以避免因为对物品的不熟悉无法查找。
6总结
在学C语言之前,从没有接触过编程的书籍,在大学里这是初次学习编程,在拿到自己的课程设计的题目以后,又花了一些时间将课本从头至尾看了一遍。
这次拿到的课程设计题目是机房管理系统,首先大致构思了一下程序的框架,对所要用的函数进行了总结,然后着手进行编写。
在写的过程中,有时遇到一些错误,由于代码太长,无法查找,便将代码拆开,一部分一部分进行测试,使该代码正确。
课程设计需要从全局出发,不再仅仅局限于那一段代码,需要很好的把握全局。
在做的过程中遇到了很多问题,通过上网搜,自己翻课本,问同学等等途径,最终写出了一份课程设计。
通过这个课程设计,真是感触很多。
特别是对这门课程的深入理解,要学好一门电脑语言真的不只能停留在看的层面既理论层面,就象C语言,你平常看书或许以为全部都理解了,可是不经自己去动手去设计去弄,真的当我遍的过程时候就仅仅一些很小很小细节问题而卡住好久。
经过两个星期的C语言课程设计,感觉自己收获不少!
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的
重要性。
这个机房管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!
从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。
由于这是第一次进行设计,写文档,难免会写得不好!
相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。
成绩:预习报告分,系统分,课设报告分,总分分,
总评:
评语:
批阅教师签字:年月日
下面是源代码
#include<stdio.h>
#include<process.h>
#include<stdlib.h>
#define SIZE 30
#define COUNT 100
void menu();
void Poduct_Enter();
void Product_Out();
void Product_Search();
void searchbymodel();
void searchbyname();
void searchbynum();
void exit_system();
void save();
void open_out();
int i,p;
struct product
{
char name[SIZE];
char model[SIZE];
char kind[SIZE];
char inperson[SIZE];
char outperson[SIZE];
char indate[SIZE];
char outdate[SIZE];
float inprice;
int num;
int innumber;
int outnumber;
int number;
};
struct product product[COUNT];
void menu()
{
int choice,A;
do
{
printf("\n\n");
printf("***********************************************************\n"
);
printf("***********************欢迎进入
****************************\n");
printf("*********************机房管理系统
**************************\n");
printf("***********************主菜单
******************************\n");
printf("***********************************************************\n" );
printf("\t\t 1、电脑入库登记 \n");
printf("\t\t 2、电脑出库登记\n");
printf("\t\t 3、电脑库存查询\n");
printf("\t\t 4、退出程序\n");
printf("***********************************************************\n" );
printf("请选择所要执行的操作:");
scanf("%d",&choice);
if(choice<1||choice>4)
A=1;
else A=0;
printf("\n\n");
}
while(A==1);
switch(choice)
{
case 1: Poduct_Enter();break;
case 2: Product_Out(); break;
case 3: Product_Search();break;
case 4: exit_system();break;
default: printf("\n\n输入错误,请重新输入!!!!!\n");
}
}
void main()
{
menu();
}
void Poduct_Enter()
{
int i;
if (i==COUNT)
printf("该电脑仓库已满,该物品不需要添加\n");
else
{
struct product *p;
p=&product;
system("cls");
printf("\n\n");
printf("************************电脑入库
****************************\n");
printf("请输入该电脑的名字:\n");
scanf("%s",&p->name);
printf("请输入该电脑的型号:\n");
scanf("%s",&p->model);
printf("请输入该电脑的种类:\n");
scanf("%s",&p->kind);
printf("请输入该电脑的价格:\n");
scanf("%f",&p->inprice);
printf("请输入该电脑的数量:\n");
scanf("%d",&p->innumber);
printf("请输入该电脑入库以后的库存量:\n");
scanf("%d",&p->number);
printf("请输入该电脑在仓库中的编号:\n");
scanf("%d",&p->num);
printf("请输入进货者的名字:\n");
scanf("%s",&p->inperson);
printf("请输入该物品的入库日期:\n");
scanf("%s",&p->indate);
printf("物品入库\n数据保存中.......\n数据保存成功\n");
printf("\n\n\n");
save();
i++;
}
menu();
}
void Product_Out()
{
int i;
if (i==0)
printf("该电脑已经取完,该电脑在机房中没有库存,请及时补充\n");
else
{
struct product *p;
p=&product;
system("cls");
printf("\n\n");
puts("************************物品出库
****************************\n");
puts("请输入出库电脑的名字:\n");
scanf("%s",&p->name);
puts("请输入出库电脑的型号:\n");
scanf("%S",&p->model);
puts("请输入出库电脑的种类:\n");
scanf("%s",&p->kind);
puts("请输入出库物品的数量:\n");
scanf("%d",&p->outnumber);
puts("请输入出库电脑在仓库中的编号:\n");
scanf("%d",&p->num);
printf("请输入该电脑入库以后的库存量:\n");
scanf("%d",&p->number);
puts("请输入出货者的名字:\n");
scanf("%s",&p->outperson);
puts("请输入出库电脑的出库日期:\n");
scanf("%s",&p->outdate);
puts("物品出库\n数据保存中.......\n数据保存成功\n");
puts("\n\n\n");
save();
i--;
}
menu();
}
void Product_Search()
{
int select,B;
for(;1;)
{system("cls");
printf("\n\n");
printf("***********************************************************\n"); printf("*********************机房管理系统
**************************\n");
printf("**********************物品出查询
***************************\n");
printf("***********************************************************\n"); printf("\t\t 1.按型号查询\n");
printf("\t\t 2.按名称查询\n");
printf("\t\t 3.按编号查询\n");
printf("\t\t 4. 返回\n");
printf("***********************************************************\n"); printf("请选择所要执行的操作:");
scanf("%d", &select);
switch(select)
{
case 1: searchbymodel();getch(); break;
case 2: searchbyname();getch();break;
case 3: searchbynum();getch();break;
case 4: return menu();getch();break;
default: printf("\n\n输入错误,请重新输入!!!!!\n");
}
}
}
void searchbyname()
{
char productname[SIZE];
int i;
printf("请输入您想查询的电脑名称:\n");
scanf("%s",productname);
printf("找到的该名字的电脑的数据如下:\n");
for(i=0;i<=30;i++)
{
open_out();
if(strcmp(productname,product[i].name)==0)
{
printf("电脑种类:%s\n电脑名字:%s\n电脑型号:%s\n电脑库存量:%d\n 电脑编号:%d\n电脑价格:%0.2f\n电脑进库人员名字:%s\n电脑进库日期:%s\n物品出库人员名字:%s\n物品出库日期:%s\n",
product[i].kind,product[i].name,product[i].model,product[i].number,product [i].num,product[i].inprice,product[i].inperson,product[i].indate,product[i ].outperson,product[i].outdate);
}
}
}
void searchbynum()
{
int productnum;
int i;
system("cls");
printf("输入想查的电脑的编号:\n");
scanf(" %d",&productnum);
printf("找到的该编号的电脑的数据如下:\n");
for(i=0;i<=30;i++)
{
open_out();
if(productnum==product[i].num)
{
printf("电脑种类:%s\n电脑名字:%s\n电脑型号:%s\n电脑库存量:%d\n 电脑编号:%d\n电脑价格:%0.2f\n电脑进库人员名字:%s\n电脑进库日期:%s\n物品出库人员名字:%s\n物品出库日期:%s\n",
product[i].kind,product[i].name,product[i].model,product[i].number,product [i].num,product[i].inprice,product[i].inperson,product[i].indate,product[i ].outperson,product[i].outdate);
}
}
}
void searchbymodel()
{
char productmodel[SIZE];
int i;
system("cls");
printf("输入想查的电脑的型号:\n");
scanf(" %s",productmodel);
printf("找到的该型号的电脑的数据如下:\n");
for(i=0;i<=30;i++)
{
open_out();
if(strcmp(productmodel,product[i].model)==0)
{
printf("电脑种类:%s\n电脑名字:%s\n电脑型号:%s\n电脑库存量:%d\n 电脑编号:%d\n电脑价格:%0.2f\n电脑进库人员名字:%s\n电脑进库日期:%s\n电脑出库人员名字:%s\n电脑出库日期:%s\n",
product[i].kind,product[i].name,product[i].model,product[i].number,product [i].num,product[i].inprice,product[i].inperson,product[i].indate,product[i ].outperson,product[i].outdate);
}
}
}
void exit_system()
{ system("cls");
printf("**********************感谢您对本系统的使用
**********************\n");
system("pause");
printf("\n");
}
void save()
{FILE *fp;
int i;
if ((fp=fopen("product_list","wb"))==NULL)
{
return;
}
for(i=0;i<COUNT;i++)
if(fwrite(&product[i],sizeof(struct product),1,fp)!=1) printf("文件写入错误\n");
fclose(fp);
}
void open_out()
{int k;
FILE *fp;
fp=fopen("product_list","rb");
for(k=0;k<COUNT;k++)
{fread(&product[k],sizeof(struct product),1,fp);
}
fclose(fp);
}。