人机交互-任务3:命令语言交互界面的设计

本文介绍了一个C语言程序,该程序可以接收用户输入的整数数组,并提供两种功能:删除数组中的重复值及对数组进行排序后再删除重复值。程序通过模块化设计确保易于维护和扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


任务目的

(1) 通过人机界面的显示风格和用户操作方式等内容的学习,帮助学生了解界面设计的主要内容。
(2) 使用掌握的计算机语言完成命令语言交互界面的设计,充分考虑以用户为中心的设计理念。进一步体会命令语言交互界面设计中的重要因素。

实验内容

任务1:文本交互界面的设计使用C语言完成。
编写程序,输入若干个按由小到大的整数(可能有重复数),保存到数组中,利用循环删除所有重复的值,使相等的数只保留一个。
在程序设计中,要实现程序的模块化设计。在界面设计中,要解释说明如何是以用户为中心进行设计的。

方案设计

(1)算法设计:本程序包含三个算法。一是根据用户需要输入并创建数组;二是基础的使用相邻去除法来去除数组中重复元素;三是了让程序更具有可用性使用了排序算法中较为简洁的冒泡排序对数组中的数字进行简单排序。
(2)流程描述:运行程序后用户根据文字提示输入数组元素个数,能满足不同元素个数都能使用的效果;数组创建完成后选择两个功能,根据提示输入以空格形式隔开的随意整数,敲击回车键后,显示运行结果。运行结果分别输出排序后数组、排序后删除重复值后的数组。

核心代码

#include <stdio.h>
#include <stdlib.h>


int del(int a[],int COUNT){ //删除重复值函数 
	int m,count=COUNT,k;
	for(k=COUNT-1;k>0;k--){ 
        if(a[k]==a[k-1])
		{
			for(m=k-1;m<COUNT-1;m++)
			a[m]=a[m+1];
   			count--; //删除重复值 
		}
   }
   return count;	 
}

void sort(int a[], int length){ //排序数组函数 
	int i, j, temp;
    for(i = 0; i < length; ++i){
        for(j = i + 1; j < length; ++j){
            if(a[j] < a[i]){    //如果后一个元素小于前一个元素则交换
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;}}}

	printf("排序后的数组:");
	for(i=0;i<length;i++)
		printf("%5d",a[i]);
	printf("\n");
}


void show(int a[],int length){ //输出函数 
	int k; 
	printf("删除重复值后的数组:");
	for(k=0;k<length;k++)
		printf("%5d",a[k]);
	printf("\n");
	system("pause");}
	

int main(int argc, char *argv[]) {
	int COUNT=10,a[COUNT],count=COUNT,k,m,p;
	
	system("color 3f"); //界面颜色,浅蓝,字体颜色,亮白 
	
	printf("    `;-.          ___,\n");
	printf("      `.`\\_...._/`.-\"`\n");
	printf("        \\        /      ,\n");
	printf("        /()   () \\    .' `-.>\n");
	printf("       |)  .    ()\\  /   _.'\n");
	printf("       \\  -'-     ,; '. <\n");
	printf("        ;.__     ,;|   > >\n");
	printf("       / ,    / ,  |.-'.-'\n");
	printf("      (_/    (_/ ,;|./`\n");
	printf("        \\    ,     ;-`\n");
	printf("         >   \\    /\n");
	printf("        (_,-'`> .'\n");
	printf("             (_,' \n\n"); //字符画 

printf("本系统具有排序并删除重复值功能\n");
printf("请输入数据个数:");
scanf("%d",&COUNT);


	printf("请按大小顺序输入%d个数据:\n",COUNT);
	for(k=0;k<COUNT;k++){
		printf("a[%d]=",k);
		scanf("%d",&a[k]); //请输入a[0]= 
	}
	printf("输入完成\n");
	
	printf("-------请输入数字选择功能-------\n");
	printf("1 - 删除数组重复值\n");
	printf("2 - 排序并删除数组重复值\n");
	printf("--------------------------------\n\n");
	scanf("%d",&p);
	switch(p){
		case 1:
			count=del(a,COUNT);
			show(a,count);
			break;
		case 2:
			sort(a,COUNT);
			count=del(a,COUNT);
			show(a,count);
			break;
	}

运行结果

在这里插入图片描述
根据屏幕的提示输入数组元素个数并逐个输入元素,选择功能,系统执行功能并把每步的执行结果和最终结果都显示在屏幕上。

① 输入数据个数:5
② {2,1,5,6,5}
③ 选择功能2:排序并删除重复值
④ 输出排序后的数组
⑤ 输出删除重复值后的数组

完整项目+成品下载

完整项目+成品程序下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值