资源描述
成都职业技术学院
力学实验设备管理系统
姓 名 : DEV-C编辑
2017年1月
目录
第1章 设计目的 2
第2章 总体设计 2
2.1力学实验设备管理系统的要求 2
2.2流程图 3
2.3模块图 7
2.4设置的主要函数 8
2.5设置文件保存位置及文件名 9
1 :D:\shebei.dat 9
第三章 需求规定 9
3.1 功能规定 9
1.设备管理员 9
2.设备使用者 10
3.2其余功能分析表 11
3.3性能规定 11
1. 精度 11
2.灵活性 11
第4章 分工合作 12
第1章 设计目的
本次C语言课程设计是对本学期程序设计基础课程的实际应用,通过课程设计主要达到如下目的:
1. 巩固和加深对C语言课程的基本知识的理解和掌握。
2. 掌握C语言编程和程序调试的基本技能。
3. 利用C语言进行基本的软件设计。
4. 掌握书写程序设计说明文档的能力。
5. 提高运用C语言解决实际问题的能力。
第2章 总体设计
2.1力学实验设备管理系统的要求
通过该系统实现对力学实验设备信息进行录入、修改、统计、查询、保存、删除等操作的管理。
实验设备信息包括:设备编号,设备种类,设备名称(如烧杯、酒精灯等),设备价格,设备购入日期,是否报废,报废日期等。
主要功能:
1)、能够完成对设备的录入和修改
2)、对设备进行分类统计
3)、设备的破损耗费和遗损处理
4)、设备的查询
5)、将设备信息保存到文件中
2.2流程图
根据设计要求,画出如下流程图:
1 整体流程图
Y
N
N
Y
Y
N
N
Y
退出
返回
录入
浏览
修改
删除
查询
返回
查询
浏览
密码
菜单
开 始
设备管理员
设备使用者
2 设备使用者流程图
3 设备管理者流程图
编号查询
种类查询
名称查询
返回
删除
修改
显示
查询
录入
管理员
开始
菜单
2.3模块图
种类查询
名称查询
编号查询
浏览
开 始
退出
返回
录入
浏览
修改
删除
查询
返回
查询
设备管理员
设备使用者
2.4设置的主要函数
void menu() //菜单函数
void Browse() //显示
M *Input() //录入(增加)成员
M *Delet() //删除
void Search() //查找
void Findchoice() //选择查找方式函数
M *Modify() //修改信息
结构体
Typedef struct mechanical //定义力学设备结构体
{
char no[6]; //编号
char name[20]; //名称
char kind[20]; //种类
char price[10]; //价格
char purtime[8]; //购买日期
char scrtime[8]; //报废日期
char scrap[3]; //是否报废
char cost[10] ; //破损耗费
struct mechanical *next; //指向结构体数据类型的指针
}M;
2.5设置文件保存位置及文件名
1 :D:\shebei.dat
第三章 需求规定
3.1 功能规定
功能需求分析举例
1.设备管理员
建立设备库
流程:
1) 登录者选择“管理员登陆”菜单,打开“管理员”页面
2) 输入密码,验证通过后进入“管理员”界面。
3) 选择“录入”对应选项,打开录入设备界面
4) 按照要求输入需要新增的设备信息,完成设备新增操作。
5) 新增完成后,返回“管理员”页面列表。
输入:
输入名称
数据类型
长度限制
备注
编号
char *
6
名称
char *
20
种类
char *
20
价格
char *
10
购买日期
char *
8
报废日期
char *
8
是否报废
char *
3
破损耗费
char *
10
输出:图书保存成功!按任意键返回主菜单。。。。
2.设备使用者
浏览设备
查询设备
流程:
1) 登录者选择“使用者”登陆菜单,打开“使用者”页面
2) 选择“查询,浏览”对应的选项,打开界面
3) 按照要求输入需要查询的设备信息,完成使用者查询操作。
4) 查询完成后,返回“使用者”页面列表。
输入:
输入名称
数据类型
长度限制
备注
名称
char*
20
编号
char*
6
种类
char*
20
输出:登记成功!
3.2其余功能分析表
设备管理员
1. 建立设备库
2. 查询设备信息(根据:编号、名称、种类)
3. 添加设备
4. 修改设备
5. 删除设备
设备使用者
1. 浏览设备信息
2. 编号查询
3. 名称查询
4. 种类查询
3.3性能规定
1. 精度
1.要按照严格的数据格式输入,否则软件不予响应进行处理。
2.查询是要保证查全率,所有相应域包含查询关键字的记录都应能查到。由于通常有文件的记录会很多,所以本软件采用两种方法进行查询:直接查询和模糊查询
2.灵活性
当需求发生某些变化时,该软件具有较强的适应能力,如:
a. 本软件的运行环境将不会变化。
b. 精度与有效时限不会改变。
c. 计划将会进行改进。
第4章 分工合作
4.1 暂时分工
附录
#include "windows.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
#define MaxPwdLen 32 //密码的最大长度
struct mechanical
{
char no[8]; //编号
char name[20]; //名称
char kind[20]; //种类
char price[10]; //价格
char purtime[12]; //购买日期
char scrtime[12]; //报废日期
char scrap[4]; //是否报废
char cost[10]; //破损耗费
struct mechanical *next;
} *root_mechanical,s[1000];
struct regis //注册信息结构体定义
{
char number1[32]; //注册使用者账号
char pwd1[32]; //
char pwd2[32]; //注册使用者密码
char pwd3[32]; //
}R[1000];
FILE *fp;//文件指针
void gotoxy(int,int);//光标定位
struct mechanical *input(void);//录入
void Browse(struct mechanical *);//浏览
struct mechanical * insert(struct mechanical *);//增加
void del(void);// 删除
void password();//密码
int sj(void);//时间
// system("color f0");
//------------主菜单
caidan()
{
int choice;
system("cls");
system("color f0");//颜色 背景 白 前景 黑
while(1)
{
system("cls");
printf("\n\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 力学实验室设备管理系统 \n");printf("\t\t\t┃ \n");
printf("\t\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━\n");
printf("\t\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━\n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 1.设备使用者登录界面 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 2.设备管理员界面 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 3.设备使用者注册界面 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 0.退出系统 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━\n");
gotoxy(60,25);sj();
gotoxy(40,18);
printf("请输入选项[ ]\b\b\b");scanf("%d",&choice);
switch(choice)
{
case 2: PassWord();//管理员
break;
case 1:password1();//使用者
break;
case 3:R_register();//使用者注册
break;
case 0:tc();exit(0);
getch();
default:printf("输入错误!!!...\n按任意键返回\n");getch();break;
}
}
}
//-----------------使用者菜单
people()
{ int choice ;
system("color f0");
while(1)
{
system("cls");
printf("\t\t\t┏━━━━━━━━━━━━━━━━┓\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┃ 设备使用者界面 ┃\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┣━━━━━━━━━━━━━━━━┫\n");
printf("\t\t\t┣━━━━━━━━━━━━━━━━┫\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┃ 1.浏览 ┃\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┃ 2.查询 ┃\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┃ 0.返回 ┃\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┃ ┃\n");
printf("\t\t\t┗━━━━━━━━━━━━━━━━┛\n");
gotoxy(60,25);sj();
gotoxy(35,18);
printf("请输入选项[ ]\b\b\b");scanf("%d",&choice);
switch(choice)
{
case 1:Browse(root_mechanical); //----浏览
break;
case 2:Search2();//-----查询
break;
case 0:caidan();//----返回菜单
break;
default:printf("输入错误!!!...\n按任意键返回\n");getch();break;
}
}
}
//-------------------------管理员菜单
adm()
{
int c;
root_mechanical=NULL;
while(1)
{
system("cls");
printf("\t\t\t┏━━━━━━━━━━━━━━━━━━━━━━━━━\n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 设备管理员界面 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┣━━━━━━━━━━━━━━━━━━━━━━━━━\n");
printf("\t\t\t┣━━━━━━━━━━━━┳┳━━━━━━━━━━━\n");
printf("\t\t\t┃ ┃┃ \n");
printf("\t\t\t┃ 1.录入 ┃┃ 2.显示 \n");
printf("\t\t\t┃ ┃┃ \n");
printf("\t\t\t┃ 3.添加 ┃┃ 4.删除 \n");
printf("\t\t\t┃ ┃┃ \n");
printf("\t\t\t┃ 5. 修改 ┃┃ 6.查询 \n");
printf("\t\t\t┃ ┃┃ \n");
printf("\t\t\t┃ 7.查看注册信息 ┃┃ 8.删除注册信息 \n");
printf("\t\t\t┃ ┃┃ \n");
printf("\t\t\t┣━━━━━━━━━━━━┻┻━━━━━━━━━━\n");
printf("\t\t\t┃ \n");
printf("\t\t\t┃ 0.返回 \n");
printf("\t\t\t┃ \n");
printf("\t\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━\n");
gotoxy(60,25);sj();
gotoxy(40,20);
printf("请输入选项:[ ]\b\b\b");scanf("%d",&c);
switch(c)
{
case 1:root_mechanical=input();break; //-----录入
case 2:Browse(root_mechanical);break;//-----显示
case 3:root_mechanical=insert(root_mechanical);break;//------添加
case 4:del();break;//----删除
case 5:Modify();break;// -----修改
case 6:Search();break;//-----查询
case 7:zc();break;//-----查看注册信息
case 8:zcsc(R);break;//-----查看注册信息
case 0:caidan();break;//---退出
default:printf("输入错误!!!...\n按任意键返回\n");getch();break;
}
}
}
//---------------------------------------建立链表
struct mechanical *input(void)
{
struct mechanical *root,*p1,*p2;
char c;
int f=0,n,i,m=1;
system("cls");
fp=fopen("d:\\shebei.dat","wb");
root=p1=(struct mechanical *)malloc(sizeof(struct mechanical));
gotoxy(40,f+10);
printf("请输入你需要输入的数量:[ ]\b\b\b\b\b\b"); scanf("%d",&n);
system("cls");
printf("\n---------------------------------------------------------------------------------------------------------\n");
printf("| 编号 | 名称 | 种类 | 价格 | 购买日期 | 报废日期 | 是否报废 | 破损耗费 | \n");
printf("---------------------------------------------------------------------------------------------------------\n");
for(i=1;i<=n;i++)
{
// printf("| | | | | | | | |\n");
//printf("---------------------------------------------------------------------------------------------------------\n");
// gotoxy(2,20+m);
//printf("---------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:最多六位数\n");
gotoxy(2,f+4);
scanf("%s",p1->no);
// gotoxy(2,20+m);
//printf("---------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:最多五个字\n");
gotoxy(12,f+4);
scanf("%s",p1->name);
// gotoxy(2,20+m);
//printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:最多五个字 \n");
gotoxy(27,f+4);
scanf("%s",p1->kind);
// gotoxy(2,20+m);
//printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:最多9位数 \n");
gotoxy(41,f+4);
scanf("%s",p1->price);
// gotoxy(2,20+m);
//printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:输入格式如:20011011 \n");
gotoxy(55,f+4);
scanf("%s",p1->purtime);
// gotoxy(2,20+m);
//printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:输入格式如:20011011 \n");
gotoxy(68,f+4);
scanf("%s",p1->scrtime);
// gotoxy(2,20+m);
//printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:输入(是\否) \n");
gotoxy(83,f+4);
scanf("%s",p1->scrap);
// gotoxy(2,20+m);
// printf("-----------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21+m);
printf(" ");
gotoxy(2,21+m);
printf("提示:最多8位数 \n");
gotoxy(95,f+4);
scanf("%s",p1->cost);
gotoxy(2,21+m);
printf(" ");
gotoxy(95,f+4); //printf("\n");
f+=2;
m++;
fwrite(p1,sizeof(struct mechanical),1,fp);
p2=(struct mechanical *)malloc(sizeof(struct mechanical));
p1->next=p2;//链接到下一个链表
p1=p2;
}
fclose(fp);
return root;
}
//--------------------------------------------------浏览
void Browse(struct mechanical *root)
{
struct mechanical *p1;
int i=0;
p1=root;
fp=fopen("d:\\shebei.dat","rb");
if(fp==NULL)
{
printf("\n\n文件打开失败,按任意键返回主菜单");
getch();
return;
}
system("cls");
printf("\n---------------------------------------------------------------------------------------------------------\n");
printf("| 编号 | 名称 | 种类 | 价格 | 购买日期 | 报废日期 | 是否报废 | 破损耗费 | \n");
printf("---------------------------------------------------------------------------------------------------------\n");
while(1)
{
p1=(struct mechanical *)malloc(sizeof(struct mechanical));
fread(p1,sizeof(struct mechanical),1,fp);
if(feof(fp)!=0) break;
printf("|%10s|%14s|%13s|%11s|%12s|%12s|%11s|%13s|\n",p1->no,p1->name,p1->kind,p1->price,p1->purtime,p1->scrtime,p1->scrap,p1->cost);
printf("---------------------------------------------------------------------------------------------------------\n");
if(i==5)
{
getch();
i=0;
printf("\n\n");
}
}getch();
fclose(fp);
printf("数据浏览完毕,按任意键返回。。");
getch();
}
//-----------------------------------链表末尾添加
struct mechanical * insert(struct mechanical *root)
{
struct mechanical *new_stu,*p;
char c;
int f=0,i,n;
fp=fopen("d:\\shebei.dat","ab");
system("cls");
gotoxy(40,f+10);
printf("请输入你需要输入的数量:[ ]\b\b\b\b\b\b"); scanf("%d",&n);
system("cls");
printf("\n---------------------------------------------------------------------------------------------------------\n");
printf("| 编号 | 名称 | 种类 | 价格 | 购买日期 | 报废日期 | 是否报废 | 破损耗费 | \n");
printf("---------------------------------------------------------------------------------------------------------\n");
// new_stu=(struct mechanical *)malloc(sizeof(struct mechanical));
for(i=0;i<n;i++)
{
printf("| | | | | | | | |\n");
printf("---------------------------------------------------------------------------------------------------------\n");
new_stu=(struct mechanical *)malloc(sizeof(struct mechanical));
gotoxy(2,20);
printf("---------------------------------------------------------------------------------------------------------\n");
gotoxy(2,21);
printf(" ");
gotoxy(2,21);
printf("提示:最多六位数\n");
gotoxy(2,f+4);
scanf("%s",new_stu->no);
gotoxy(2,20);
printf("---------------------
展开阅读全文