logo资料库

人机交互实验-命令行菜单界面.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
南京工程学院 实 验 报 告 课 程 名 称 人机交互 实验项目名称 命令行菜单界面的设计 实验学生班级 软件 161 实验学生姓名 学 号 202 同组学生姓名 实 验 时 间 2 0 1 8 . 1 2 . 2 0 实 验 地 点 图书馆 实验成绩评定 指导教师签字 年 月 日
一、实验目的和要求 实验目的: 1、要求同学掌握命令行菜单界面设计及实现方法。 2、在2学时的上机时间内,调试完成题目,通过调试程序,进一 步加深交互设计思想。 3、对问题能够通过分析,理解交互设计的设计及评估特性,使得 界面更符合以用户为中心的原则。 实验要求: 实现编写好程序,上机调试和运行程序,分析结果。 二、实验主要仪器和设备 Windows10 计算机 Dev-C++软件 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 1.命令行菜单界面简介 命令行界面(英语:command-line interface,缩写:CLI) 是在图形用户界面得到普及之前使用最为广泛的用户界面,它通 常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后, 予以执行。也有人称之为字符用户界面(CUI)。
随着科学技术的发展,图形用户界面愈加兴盛,然而命令行 菜单界面仍然被使用,许多命令行界面仍拥有几个胜过图形用户 界面的优势。它们在超级用户、程序员以及系统管理员中间很流 行。 2.实验主题 使用 C 语言程序编写一个图书管理系统,以 C 语言运行的命 令行菜单界面来分析命令行界面的优缺点。对问题能够通过分析, 理解交互设计的设计及评估特性,使得界面更符合以用户为中心 的原则。 图书馆管理系统包括: ●录入:新进图书及基本信息输入 ●删除:旧图书及基本信息删除 ●查询:查询要借阅的图书信息 ●修改:修改已有的图书信息 ●借书:实现用户办理借书手续 ●还书:实现用户.办理还书手续 系统以菜单方式工作,界面友好,易于操作。
四、实验原始纪录(源程序、数据结构等) 主要源程序: #include #include #include #define AVAILABLE 0 #define UNAVAILABLE 1 #define MAXNAME 30 #define CLEAR "cls" typedef struct book{ char *name; int id; int count; int status; struct book *next; }Book; void welcome(); void error(char *); // [异常提醒] char land(); // [主页面项目] int usrstudent(); // [学生入口]返回 0 表示返回主页 1 表示继续执行本函数 int usrmanager(); // [管理员入口]返回 0 表示返回主页 1 表示继续执 行本函数
int viewbook(); // [查看图书]返回打印的图书个数 失败返回-1 int addbook(); // [注册图书]添加图书成功 返回图书 id 失败返 回-1 int modbook(); // [修改图书]修改图书信息 成功后返回 id 失 败 -1 int delbook(); // [注销图书]删除成功 返回被删除图书的 id 失败 返回-1 void printbook(Book *); // [打印图书] Book *lookup(char *, int); // [搜索图书] int borrowbook(); // [借阅图书] int returnbook(); // [归还图书] Book *head = NULL; int nbook = 0; int main(){ welcome(); return 0; } void welcome(){ printf("************************* 欢 迎 使 用 图 书 管 理 系 统 *************************\n"); while(1){
printf("-------------------------------------\n"); printf("请输入项目前编号执行相关操作:\n"); printf("\n[1] 管理员入口\n\n[2] 学生入口\n\n[0] 退出\n\n"); switch(land()){ case '1': while(1){ if(usrmanager()){ continue; }else{ break; } } break; ...... void printbook(Book *bp){ printf("图书编号:%d\n", bp->id); printf("图书名:%s\n", bp->name); printf("图书存数:%d\n", bp->count); printf("图书状态:%s\n", bp->status ? "不可借" : "可借"); } ...... int delbook(){
system(CLEAR); /////////////////////////////////////////// Book *bp, *fbp; int id = 0; printf("请输入要注销的图书编号:\n"); scanf("%d", &id); getchar(); if(!(id > 0 && id < 1000)){ fflush(stdin); error("图书编号不符合要求"); return -1; } for(fbp = bp = head; bp != NULL; fbp = bp, bp = bp->next){ if(bp->id == id){ printbook(bp); break; } } if(bp != NULL){ while(1){ printf("确定要注销此图书:Y N\n"); char YN; scanf("%c", &YN);
getchar(); if(!((YN == 'Y' || YN == 'y') || (YN == 'N' || YN == 'n'))){ fflush(stdin); error("指令无效\n"); continue; } if(YN == 'Y' || YN == 'y'){ bp == head ? head = bp->next : (fbp->next = bp->next); free(bp->name); free(bp); bp = NULL; printf("图书注销成功\n"); break; }else{ printf("放弃注销\n"); return 0; } } return id; }else{ printf("要注销的图书编号不存在\n"); return -1;
分享到:
收藏