一、引言
1.1 项目设计背景及意义
1.1.1理论研究基础
(1)C++在C的基础上增加了面向对象的机制。
(2)充分利用面向对象机制中的多态性实现函数的设计。
1.1.2 技术层面的支持
运用系统为C++面向对象程序设计提供的各种设计方法和VS提供的集成开发环境实现函数的开发。
1.1.3 课设的意义
(1)资产设备管理系统可以实现资产的规范化,系统化管理,能够将所有资产设备聚集在一起实施统一运作,让管理员更方便地进行设备入库,设备查询,设备报废,资金查看等操作,推动学校实现更好地数字化管理。本设计界面操作简单方便,便于操作者掌握,减轻了管理人员的劳动力度,便全校师生和财务部管理员对于资产设备的了解与管理。资产设备管理系统的应用在改革传统的资产设备管理方式,健全服务功能,提升管理工作效率等方面具有积极作用。学校应当认清该管理系统应有的优势,并重视对系统的维护管理工作,力求使资产设备管理系统在最佳的工作状态下发挥最大的效用。
(2)通过设计此系统,熟练掌握C++语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学习能力,能够利用所学的基本知识和技能,进行简单应用程序设计。
1.2 设计题目
资产设备管理系统
1.3 课设目的
(1)能够熟练掌握C++语言的基本知识和技能。
(2)基本掌握面向对象的基本思路和方法。
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、程序的功能结构
2.1 用户功能模块
2.2 设备功能模块
三、界面菜单设计
3.1 菜单的简单显示
system(“color e9”); //控制背景字体颜色:前面是背景,后面为字体
这里设置系统的整体背景为黄色,字体颜色为蓝色。
cout <<endl<< " 欢迎来到登陆界面! "<<endl<<endl;
cout << " ***********************登陆界面菜单**********************"<<endl;
cout << " | |"<<endl;
cout << " | ___1:用户注册___ |"<<endl;
cout << " | ___2:用户登录___ |"<<endl;
cout << " | |"<<endl;
cout << " ---------------------------------------------------------"<<endl;
cout << " *********************************************************"<<endl<<endl<<endl;
3.1.1 系统管理员界面
3.1.2 系统普通用户界面
3.1.3 设备信息显示
3.2输入界面的设计
3.2.1 用户注册界面
3.2.2 用户登录界面
3.2.3 设备入库界面
3.2.4 管理员审核界面
四、数据结构设计
5.1 菜单类
类名 菜单类Menu
数据成员 无
成员函数 void showLoginMenu(); //用户登录界面的显示
void showUserMenu(); //用户菜单的显示
void showAdminMenu(); //管理员菜单的显示
void showSearchDeviceMenu(); //查询设备菜单的显示
void showSystemUser(); //系统用户的显示
void showAppliers(); //申请用户的显示
void showDevice(int switch_num); //系统设备的显示
void chooseLoginSystem(); //登录系统菜单跳转
void chooseUserSystem(); //用户系统菜单跳转
void chooseAdminSystem(); //管理员系统菜单跳转
void chooseSearchDevice(); //查询设备功能跳转
函数主要分为两种类型:一为单纯的菜单的显示,二为菜单的跳转。跳转以用户系统菜单为例,采用switch方法进行菜单切换。
switch (i) { //顾客系统功能选择
case 1: system("cls"); //设备申请入库模块
device = (*device).device_enter(device);link.write_Link(device);
system("cls");break;
case 2: system("cls"); //设备申请报废模块
(*device).device_dumping(device);break;
case 3: system("cls"); //设备信息查询
chooseSearchDevice();break;
case 4: system("cls"); //查看申请情况
(*device).showApply(device);break;
case 5: system("cls"); //在用设备信息
showDevice(1);break;
case 6: system("cls"); //修改用户密码
(*participator).modify_passwd(participator);link.write_Link(participator);
break;
case 0: //退出程序
cout<<" *********************感谢使用!**************************"<<endl;
link.delete_Link(participator);link.delete_Link(device);break;
default:
cout << " 输入错误!" << endl;Sleep(500);system("cls");break;
}
5.2 用户类
类名 用户类User
数据成员 char nickName[48]; //昵称
char realName[16]; //真实姓名
int userType; //用户类型
char college[48]; //所在学院
char password[7]; //用户密码
int validate; //用户审核是否通过(0为未通过,1为通过)
User *next;
成员函数 void user_login(User* head); //用户登录函数
User* user_register(User* head); //用户注册函数
void modify_passwd(User* head); //修改密码函数
(1) 用户登录函数
(2) 用户注册函数
(3) 修改密码函数
5.3 设备类
(1) 一个设备的生命历程
5.4 链表类
(1) 创建链表函数(主要部分)
while (!feof(fp)){ //导入
p1 = (User *)malloc(sizeof(User));
fscanf(fp, "%s%s%d%s%s%d", p1->nickName, p1->realName, &p1->userType, p1->college,p1->password,&p1->validate);
if (head == 0) {
head = p1;
p2 = p1;
}else {
p2->next = p1;
p2 = p1;
}
}
(2) 输出链表函数(主要部分)
p = head;
while (p != 0){
cout <<setw(8)<<left<< " |"<<setw(12) << left<< p->nickName << setw(12) << left << p->realName << setw(8) << left << p->userType << setw(20) << left << p->college << setw(12) << left << "|" << endl; //控制输入样式
p = p->next;
}
(3) 删除链表函数(主要部分)
while (head){
p1 = head;
head = head->next;
free(p1);
}
(4) 将链表内容写进文件函数(主要部分)
while (p->next){
fprintf(point, "%s %s %d %s %s %d\n", p->nickName, p->realName, p->userType, p->college, p->password, p->validate);
p=p->next ;
}
fprintf(point, "%s %s %d %s %s %d", p->nickName, p->realName, p->userType, p->college, p->password, p->validate);
fclose(point);
五、联系与交流
q:969060742 完整代码、项目报告