首页 > 其他分享 >你帮我助软件开发-PSP

你帮我助软件开发-PSP

时间:2022-10-05 10:44:44浏览次数:56  
标签:tel name 软件开发 owner next 物品 我助 end PSP

 

 

设计思路

        实现需求只需要一个简单的单向链表,通过添加、删除、查找、遍历等基本操作即可。

 

 设计实现

        用Struct记录物品的信息,name、owner、tel分别记录物品名称、提供者、提供者联系方式。add、del、show、search分别实现添加、删除、遍历、查找功能。为了兼顾用户操作的便捷性和性能,采用每次操作前询问操作类型,支持一次添加多种物品、单个物品的删除,通过物品名称查找,对应物品必须提供完整的信息才可删除。

        实现过程中以外耗费时间的是发现要维护历史数据......由于还没学会数据库,因此只能采用粗暴的文本文档读入历史物品清单/输出操作后的物品清单+命令行进行新操作【捂脸】

 

改进思路

        基础功能比较朴素,主要进行了一些使用体验方面的小完善(甚至不能称之为改进...),比如设置清单输出时的对齐格式,增加一些误输入的处理(添加物品数量为0、输入格式不规范的提醒、3次输入错误后自动退出等)。此外实在写这篇总结时想到的,将原本查找物品必须名称完全一致修改成现有物品名称包含输入名称即可(显然这也是有漏洞的,比如“酱油”包含“油”,但实际上是完全不同的物品)。

 

代码

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<cstring>
  4 #include<cmath>
  5 #include<algorithm>
  6 #include<iomanip>
  7 
  8 using namespace std;
  9 
 10 typedef struct node{
 11     char name[22];
 12     char owner[22];
 13     char tel[22];
 14     struct node *next;
 15 }item; 
 16 
 17 item *head,*end;
 18 
 19 int request(){
 20     cout<<"请输入命令:"<<endl;
 21     cout<<"添加物品请输入1"<<endl;
 22     cout<<"删除物品请输入2"<<endl;
 23     cout<<"显示当前物品列表请输入3"<<endl;
 24     cout<<"查找所需物品请输入4"<<endl;
 25     cout<<"操作完毕请输入0"<<endl;
 26     int x;
 27     cin>>x;
 28     return x;
 29 }
 30 
 31 //初始化物品列表 
 32 void init(){
 33     head=new item;
 34     end=head;
 35     end->next=NULL;
 36     char name[22],owner[22],tel[22];
 37     item *p;
 38     p=new item;
 39     while (cin>> p->name){
 40         cin>> p->owner >> p->tel;
 41         end->next=p;
 42         end=p;
 43         p=new item;
 44     }
 45     end->next=NULL; 
 46 }
 47 
 48 //显示物品列表
 49 void show(){
 50     if (head->next==NULL){
 51         cout<<"当前没有物品"<<endl;
 52         return; 
 53     }
 54     item *p;
 55     for (p=head->next;p!=NULL;p=p->next){
 56         cout<< setw(21) << left << p->name << setw(21) << left << p->owner << setw(21) << left << p->tel << endl; 
 57     }
 58 } 
 59 
 60 //查找物品
 61 void search(){
 62     item *p,*pre;
 63     char name[20],owner[20],tel[20];
 64     cout<<"请输入您要查找的物品名称"<<endl;
 65     cin>>name; 
 66     pre=head;
 67     bool flag=false;
 68     for (p=head->next;p!=NULL;p=p->next){
 69         if (strstr(p->name,name)){ 70             cout<< setw(21) << left << p->name << setw(21) << left << p->owner << setw(21) << left << p->tel << endl; 
 71             flag=true;
 72         }
 73         pre=p; 
 74     }
 75     if (!flag) cout<<"不存在您要查找的物品"<<endl; 
 76 } 
 77 
 78 //添加物品 
 79 void add(){
 80     item *p;
 81     int x;
 82     cout<<"请输入您要添加的物品数量"<<endl;
 83     cin>>x; 
 84     if (x==0){
 85         cout<<"不允许添加0件物品,请检查输入是否错误" <<endl; 
 86         return;
 87     } 
 88     cout<<"请输入您要添加的物品名称、提供者、电话号码"<<endl;
 89     for (int i=1;i<=x;i++){    
 90         p=new item;
 91         cin>> p->name >> p->owner >> p->tel;
 92         end->next=p;
 93         end=p;
 94     }
 95     end->next=NULL;
 96 }
 97 
 98 //删除物品
 99 void del(){
100     item *p,*pre;
101     char name[20],owner[20],tel[20];
102     cout<<"请输入您要删除的物品名称、提供者、电话号码"<<endl;
103     cin>>name>>owner>>tel; 
104     pre=head;
105     bool flag=false;
106     for (p=head->next;p!=NULL;p=p->next){
107         if (strcmp(p->name,name)==0 && strcmp(p->owner,owner)==0 && strcmp(p->tel,tel)==0){
108             pre->next=p->next;
109             delete p;
110             flag=true;
111         }
112         pre=p; 
113     }
114     if (!flag) cout<<"您要删除的物品不存在,请检查是否输入错误";
115 } 
116 
117 int main(){
118     freopen("物品清单.txt","r",stdin);
119     init();
120     fclose(stdin);
121     freopen("CON","r",stdin);cin.clear();
122     bool flag=true;
123     int num=0;
124     while (flag){
125         cout<< "*********************************************************" <<endl;
126         switch (request()){
127             case 1:
128                 add();
129                 continue;
130             case 2:
131                 del();
132                 continue;
133             case 3:
134                 show();
135                 continue;
136             case 4:
137                 search();
138                 continue;
139             case 0:
140                 flag=false;
141                 continue;
142             default:
143                 cout<<"输入不符合规范,请重新输入"<<endl; 
144                 cin.sync();
145                 num++;
146         }    
147         if (num==3) break;
148     }
149     
150     freopen("物品清单.txt","w",stdout);
151     show();
152     fclose(stdout);
153     
154     return 0;
155 } 

 

未实现的改进

        显然上述代码只是一个很基础的暴力实现,在用户交互方面做得比较差(,继续学习ing)。预想中的改进有如下几项:

        1.可视化方面。物品清单的显示不够清晰,尤其在文本文档输出后就没有命令行操作的对齐格式了;

        2.错误输入排查方面。对用户操作失误的控制和排查不够完善;

        3.模糊搜索功能。现有的代码只能查找到名称包含输入名称的物品,这在真正应用中显然是会出现很多疏漏的。但要真正实现比较精准的模糊搜索恐怕比较困难......;

        4.使用体验方面。现有的操作比较繁琐,不能进行连续操作,添加物品时也需要预先统计添加的物品总数,删除物品也只支持单次删除。

 

总结

  虽然代码的功能比较简单,但预先的设计仍然不够完善,没有充分考虑维护历史数据、可视化等方面的细节,而且对C++的字符串处理依然不够熟悉【泪】。此外,在之前的学习经历中只需关注正确输出答案,而不存在用户交互的需求,这是之后需要学习和加强的方面。(以及好几年没好好码代码了真的退步好多啊TAT)

 

标签:tel,name,软件开发,owner,next,物品,我助,end,PSP
From: https://www.cnblogs.com/Aliar11/p/16755136.html

相关文章

  • 25-70K*14薪| 梅卡曼德视觉算法、C++软件开发工程师等职位招聘
    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁。高级C++软件开发工程师薪水:25K-60K*14薪岗位职责:1、负责相关软件系统(客户端)的设......
  • 软件工程个人项目“你帮我助”软件开发
    软件工程第一次作业-物品交换系统项目需求在疫情期间,各个小区居民发挥互助精神,进行物品交换,互通有无。请你编写一个物品交换软件,该程序允许添加物品的信息,删除物品的信息......
  • 软件开发工具文字题检验_20221004
    软件开发工具文字题汇总第一章1.什么是专用的软件开发工具?它有什么优点和不足?(简答题) 的、统一的支撑环境。2.简述高级程序设计语言的不足。(简答题) 3.试论软件......
  • 软件开发工具填空题最易错的_20221004
    软件开发工作中总体设计包含(结构图)(模块清单)(公共数据设计)结模公公共数据结构程序的编写与文档的编写是两件并行的 工作,我们可以统称之为(实用阶段)。实现阶段Eclipse......
  • 软件开发工具填空题_20221004
    1第三代程序设计语言一般都是(  )语言。进入二十一世纪以来,软件开发工具的发展有两个鲜明的特点,第一个特点是面向网络,另一个特点是(来源软件的兴起和运用)。填空题1712......
  • “你帮我助”软件开发
    “你帮我助”软件开发程序语言为C++首版PSP和代码第一版代码第一版代码实现了软件中的4个核心功能,以及比较基本的命令行交互界面。···//////////////////////////......
  • 软件开发工具填空汇总
    第三代程序设计语言一般都是(过程化 )语言。进入二十一世纪以来,软件开发工具的发展有两个鲜明的特点,第一个特点是面向网络,另一个特点是(来源软件兴起和运用)。填空题171......
  • 华为软件开发平台 DevCloud 和 流水线(CloudPipeline)使用汇总
    华为软件开发平台DevCloud和流水线(CloudPipeline)使用汇总1.DevCloud产品概述:软件开发平台(DevCloud)是面向开发者提供的一站式云端DevSecOps平台,即开即用,随时随地在云......
  • 直播平台软件开发,Vim自动缩进或保存时自动缩进
    直播平台软件开发,Vim自动缩进或保存时自动缩进一、自动缩进这非常方便,特别是如果正在使用Vim进行快速代码编辑,甚至进行长时间的编码会话。强制执行特定的缩进样式。在~/......
  • 怎么选择软件开发工具?零代码创造工具有什么优势?
    借我借我一双亮眼吧,让我把这些平台彻底看个清清楚楚明明白白!如果低代码平台只是基于定制好的模块来完成模块的拼接或者调用预定义好的存储过程,看上去很美好,实质是一个大坑,......