精华内容
下载资源
问答
  • UML项目设计----企业项目设计详解

    千人学习 2016-09-30 14:09:17
    肖老师详细介绍了企业项目设计时使用的方法,如UML,提供了一套完善的设计模板
  • 文章目录智能门锁一、项目背景二、项目功能要求三、元件准备四、项目设计(一)原理图设计(二)硬件设计(三)程序设计 智能门锁 资料链接 :stm32智能门锁.rar 哔哩哔哩项目展示视频:https://b23.tv/bxfxvd 一、...

    智能门锁

    资料链接 :智能门锁.rar

    百度网盘下载链接:https://pan.baidu.com/s/1jmrMfNDlkZ9denImJRwzOw
    提取码:abcd(2020年12月7日08:26:11)

    原理图清晰图片:智能门锁连接图.bmp

    哔哩哔哩项目展示视频:https://b23.tv/bxfxvd

    哔哩哔哩视频教程:https://www.bilibili.com/video/BV1Ah411y71E
    在这里插入图片描述

    取走记得点赞,谢谢各位。

    一、项目背景

    在消费升级渗透在各个领域的今天,国民消费发生着巨大的变化,与每个人息息相关的家居行业也是如此。现今,越来越多的智能家居产品出现在普通老百姓的生活中,智能照明、智能窗帘、智能扫地机器人等各种智能产品都给人们的生活带来了极大的便利。智能门锁作为智能家居中重要的一环,也成为消费者家居智能化的重要选择。智能相比市面的机械门锁更加安全、更智能、更人性化而得到市场的认可,在智能门锁行业里,不少世界500强企业也在智能门锁上进行产品布局,像中国小米公司就生产智能门锁,致力打造智慧家庭,市场智能门锁能够支持五种解锁方式,支持指纹、手机、门禁门、按键密码、钥匙解锁功能。可以说是智能家庭必不可少的成员。
    在这里插入图片描述

    二、项目功能要求

    1、可通过指纹模块增删查改家庭成员的指纹信息,增删查改是否成功的相关信息显示在OLED屏幕上
    2、在指纹匹配过程中,如果采集的指纹与指纹模块库相匹配,OLED显示匹配成功,并转动步进电机一圈
    3、可通过按键设定智能门锁密码,密码可设置为两个(密码六位),如果匹配两个中的一个成功,即可开锁,也可通过按键修改密码,所有的操作过程显示于OLED中
    4、实现RFID与手机解锁(蓝牙解锁)
    5、扩展:虚位密码解锁(虚位密码:自己百度)

    项目所用到的主要技术:
    1、IIC协议、SPI协议、串口协议
    2、外部flash驱动、SD卡驱动
    3、FTAFS文件系统
    4、RTC实时时钟

    三、元件准备

    1、步进电机(带驱动模块)
    型号:28BYJ4+ULN2003

    在这里插入图片描述

    2、4X4矩阵按键
    在这里插入图片描述
    3、指纹模块AS608(串口控制)在这里插入图片描述

    4、0.96寸OLED显示屏(IIC)
    型号:7针

    在这里插入图片描述

    5、蓝牙模块HC-05
    在这里插入图片描述

    6、主控芯片STM32F407ZGT6
    型号:普中最小系统板
    在这里插入图片描述
    7、RFID RC522 射频模块(带一张卡片)在这里插入图片描述
    8、杜邦线

    四、项目设计

    (一)原理图设计

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    (二)硬件设计

    根据原理图连接好硬件电路
    在这里插入图片描述

    (三)程序设计

    由于代码过长只展示部分代码:

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "led.h"
    #include "sram.h"   
    #include "malloc.h" 
    #include "sdio_sdcard.h"    
    #include "malloc.h" 
    #include "w25qxx.h"    
    #include "ff.h"  
    #include "exfuns.h"    
    #include "fontupd.h"
    #include "text.h"	
    #include "oled.h"
    #include "beep.h"
    #include "button4_4.h"
    #include "AS608.h"
    #include "walkmotor.h"
    #include "usart2.h"
    #include "rtc.h"
    #include "MFRC522.h"
    #include "usart3.h"	
    #include "stmflash.h"
    
    #define usart2_baund  57600//串口2波特率,根据指纹模块波特率更改
    
    //要写入到STM32 FLASH的字符串数组
    const u8 TEXT_Buffer[]={0x17,0x23,0x6f,0x60,0,0};
    #define TEXT_LENTH sizeof(TEXT_Buffer)	 		  	//数组长度	
    #define SIZE TEXT_LENTH/4+((TEXT_LENTH%4)?1:0)
    #define FLASH_SAVE_ADDR  0X0802C124 	//设置FLASH 保存地址(必须为偶数,且所在扇区,要大于本代码所占用到的扇区.
    										//否则,写操作的时候,可能会导致擦除整个扇区,从而引起部分程序丢失.引起死机.
    
    SysPara AS608Para;//指纹模块AS608参数
    u16 ValidN;//模块内有效指纹个数
    u8** kbd_tbl;
    
    void Display_Data(void);//显示时间
    void Add_FR(void);	//录指纹
    void Del_FR(void);	//删除指纹
    int press_FR(void);//刷指纹
    void ShowErrMessage(u8 ensure);//显示确认码错误信息
    int password(void);//密码锁
    void SetPassworld(void);//修改密码
    void starting(void);//开机界面信息
    u8 MFRC522_lock(void);//刷卡解锁
    u8 Add_Rfid(void);		//录入
    void Set_Time(void);
    void Massige(void);
    u8 Pwd[7]="      ";  //解锁密码1
    u8 Pwd2[7]="      ";  //解锁密码2
    u8 cardid[6]={0,0,0,0,0,0};  //卡号1
    int Error;  //密码验证信息
    
    
    //数字的ASCII码
    uc8 numberascii[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    //显示缓冲区
    u8  dispnumber5buf[6];
    u8  dispnumber3buf[4];
    u8  dispnumber2buf[3];
    //MFRC522数据区
    u8  mfrc552pidbuf[18];
    u8  card_pydebuf[2];
    u8  card_numberbuf[5];
    u8  card_key0Abuf[6]={0xff,0xff,0xff,0xff,0xff,0xff};
    u8  card_writebuf[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    u8  card_readbuf[18];
    //SM05-S数据区
    u8  sm05cmdbuf[15]={14,128,0,22,5,0,0,0,4,1,157,16,0,0,21};
    //extern声明变量已在外部的C文件里定义,可以在主文件中使用
    extern u8  sm05receivebuf[16];	//在中断C文件里定义
    extern u8  sm05_OK;							//在中断C文件里定义
    
    u8 * week[7]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
    u8 * setup[7]={"1、录入指纹","2、删除指纹","3、修改密码","4、修改时间","5、录入卡片","6、查看信息"};
    
    int main(void)
    {
    	u16 set=0;
    	int key_num;
    	int time1;
    	int time2;		//锁屏时间
    	char arrow=0;  //箭头位子
    	
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
    	My_RTC_Init();		 		//初始化RTC
    	RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);		//配置WAKE UP中断,1秒钟中断一次
    	delay_init(168);  //初始化延时函数
    	uart_init(115200);	//初始化串口1波特率为115200,用于支持USMART
    	uart3_init(9600);// 蓝牙初始化
    	usart2_init(usart2_baund);//初始化串口2,用于与指纹模块通讯
    	PS_StaGPIO_Init();	//初始化FR读状态引脚
    	LED_Init();					//初始化LED  
    //	BEEP_Init();    		//beep初始化
    	Button4_4_Init();//矩阵按键初始化
    	OLED_Init(); 			//oled初始化
    	W25QXX_Init();				//初始化W25Q128
    	
    	Walkmotor_Init(); //步进电机初始化
    	my_mem_init(SRAMIN);		//初始化内部内存池 
    	my_mem_init(SRAMCCM);		//初始化CCM内存池 
    	exfuns_init();				//为fatfs相关变量申请内存  
     	 f_mount(fs[0],"0:",1); 		//挂载SD卡 
     	f_mount(fs[1],"1:",1); 		//挂载FLASH.
    	starting();//开机信息  logo
    
    	STMFLASH_Read(0X08020004,(u32*)Pwd,2);	//读取密码1
    	STMFLASH_Read(0X08090004,(u32*)Pwd2,2); //读取密码2
    	STMFLASH_Read(0X080f0004,(u32*)cardid,1); //读取卡号1
    	 while(1)
    	 {
    //锁屏界面
    MAIN:
    			OLED_Show_Font(56,48,0);//显示锁图标
    			while(1)
    			{
    				time1++;
    				if((time1%200)==0)//时间显示:每50ms更新一次显示数据
    				{
    					Display_Data();
    				}
    				if((time1%1000)==0)//每200ms检测一次卡片,蓝牙数据
    				{
    					//MFRC522解锁
    					MFRC522_Initializtion();			
    					Error=MFRC522_lock();
    					if(Error==0)goto MENU;	
    					else 
    						OLED_Show_Font(56,48,0);//锁
    					//手机蓝牙解锁密码1
    					Error=usart3_cherk((char*)Pwd);         
    					if(Error==0){
    						OLED_Clear();
    						Show_Str(20,10,128,24,"解锁中...",24,0);	
    						Walkmotor_ON();
    						Show_Str(20,10,128,24,"已解锁!",24,0);
    						goto MENU;	
    					}
    					else 
    						OLED_Show_Font(56,48,0);//锁
    					//手机蓝牙解锁密码2
    					Error=usart3_cherk((char*)Pwd2);
    					if(Error==0){
    						OLED_Clear();
    						Show_Str(20,10,128,24,"解锁中...",24,0);	
    						Walkmotor_ON();
    						Show_Str(20,10,128,24,"已解锁!",24,0);
    						goto MENU;	
    					}
    					else 
    						OLED_Show_Font(56,48,0);//锁
    					
    				} 
    				//指纹解锁
    				if(PS_Sta)	 //检测PS_Sta状态,如果有手指按下
    				{
    						while(PS_Sta){
    						Error=press_FR();//刷指纹
    						if(Error==0)goto MENU;
    						else 
    							OLED_Show_Font(56,48,0);//锁
    					}
    				}
    				//密码锁
    				key_num=Button4_4_Scan();	//按键扫描
    				if(key_num!=-1)
    				{
    					Error=password();
    					if(Error==0)goto MENU;	
    					else 
    						OLED_Show_Font(56,48,0);//锁
    				}
    			}
    

    五、上机调试

    把硬件连接好之后还需要做一些准备工作:
    录入指纹:
    (1)程序下载之前需要给门禁一个解锁方式,门锁一共有4种解锁方式:指纹、蓝牙、卡片、密码。其中卡片需要录入过系统的才可以解锁,密码一开始保存在stm32内部flash中,内部flash做eeprom需要先初始化,解锁后在设置中更改密码或者在代码中进行初始化密码,不然密码是乱码。
    (2)串口录入指纹:将串口转TTL CH340模块连接好指纹模块,用配套上位机录入自己的一个指纹。详细连接方法参考指纹模块资料
    (3)解锁后就可以进行设置密码和录入卡片等操作在这里插入图片描述
    在这里插入图片描述
    移植汉字库:(如果没有SD卡接口可以自己汉字取模显示)
    (1)准备一个sd卡,一个读卡器,用来存储汉字库,显示到OLED
    (2)找到开发资料下的SYSTEM文件夹
    在这里插入图片描述
    (3)把SYSTEM文件夹复制到SD卡根目录下(一定要是根目录下)在这里插入图片描述
    (4)复制好之后吧SD卡插到开发板
    (5)下载程序到开发板启动,如果可以显示汉字说已经移植成功。(注意:开始的化作尘&指纹锁界面是显示的图片,并不是汉字字体)

    一般遇到的问题:

    如果进去只显示“化作尘指纹锁”然后黑屏,那么是字库的问题
    如果因为不知道密码进不去主界面,那么打开代码,将密码打印出来,然后就可以用密码解锁了,一共两个密码,任意一个都可以解锁:
    在这里插入图片描述
    因为没有考虑到字符不全是’0’- '9’的关系,密码打印出来不是数字,所以查看密码不成功

    正确打开方式
    步骤一:直接给密码赋值操作,然后编译下载,下载完成后输入密码“123456”是肯定可以进主界面的,然后点击修改密码,密码修改为你想要的密码“000111”,这个密码会保存到内部eeprom
    ,密码初始化就完成了

    1、在127行加入如下代码编译下载
    在这里插入图片描述
    2、输入密码“123456”解锁
    在这里插入图片描述
    3、进入解锁后界面,选择修改密码
    在这里插入图片描述
    密码修改为“123456”后保存,会保存到内部eeprom
    在这里插入图片描述

    步骤二:把刚刚写的代码注释,重新下载进去,代码就可以正常运行了,输入刚刚设置的密码“000111”就可以解锁

    在这里插入图片描述
    蓝牙调试
    1、首先下载“蓝牙串口”APP
    2、连接蓝牙后发送密码“123456::”

    蓝牙发送密码不解锁?

    1、可能是波特率不对
    ①可以通过AT指令修改蓝牙模块的波特率与单片机一样(9600),使得蓝牙模块能连接单片机(单片机代码初始化蓝牙模块的波特率一般为9600)
    ②可以用usb转ttl将蓝牙模块与电脑相连,打开串口助手后,用手机连接蓝牙发送数据,调节串口助手的波特率,接收到正常数据后记录波特率,这个就是蓝牙模块现在的波特率,随后将代码中初始化蓝牙模块的波特率改成这个波特率,单片机就可以正常与蓝牙模块通信
    2、可能是蓝牙模块接线不对,吧tx rx对调
    3、可能蓝牙模块已经损坏

    开机图片取模显示
    取模软件合集.rar
    在这里插入图片描述

    六、知识扫盲

    (一)汉字的显示
    (具体代码参考正点原子“汉字显示实验”)

    1、汉字的显示原理

    1)学习过屏幕驱动的应该都知道,屏幕的显示无非就是在屏幕上打相应颜色的点,比如要显示一个字符 ‘A’ 那么我只需要知道 ‘A’ 相应的点阵数据就可以把它显示出来,汉字也一样。

    2、汉字库

    1)汉字库文件在正点原子的开发板资料->“SD卡根目录文件”中,可以到正点原子官网论坛下载
    在这里插入图片描述
    2)汉字库有两类文件,.FON与.BIN文件,.FON代表汉字库点阵文件,.BIN表示的是编码表,与点阵一一对应,比如GBK编码的第一个字就对应着点阵里的第一个点阵数据,映射关系如下:
    UNIGBK->GBK12.FON
    UNIGBK->GBK24.FON
    UNIGBK->GBK32.FON

    有兴趣可以百度一下查看GBK编码表:
    在这里插入图片描述

    2、汉字库的存储位置

    2)汉字与字符不同的是,汉字有1万多个,ASCII码字符却只有100多个,并且汉字的显示明显比字符的点阵复杂程度高,比如说字体是12的字符占用点阵是12x6,每个字符需要12x6/8=9个字节的存储空间。字体是12 的汉字占用12x12的点阵,每个汉字需要12x12/8=18个字节存储空间,这还是最小字体,大的字体所需要的存储空间只会成倍增加

    3)一般12号字体的汉字库需要500K字节、16号字体700K、24号字体1.6M、32号字体3M,这对于单片机来说数据量太大了,内部FLASH512K~1M表示压力很大
    在这里插入图片描述
    4)需要把汉字库保存到SD卡,再将SD卡中的汉字库数据保存到外部FILASH才行,w25q128无疑是个好选择,它拥有16M的存储空间,SPI通信协议,读写速度也是相当快。

    (二)把汉字库里的点阵数据读取出来显示到MCU屏

    1、数据编码格式的问题

    1)有关显示汉字就必然会涉及编码格式的问题,不同的编码格式对应的汉字编码是不同的,比如UTF-8编码的文件用GB2312编码打开就会乱码。
    同理,比如文档的格式是UTF-8编码,但是我的字库是GBK编码,读出来的数据直接显示到屏幕就必然会乱码

    2)所以显示汉字如果乱码首先需要检查的就是编辑器的编码,保证编码一致。

    七、项目图片展示

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    资料下载:https://download.csdn.net/download/mbs520/12662458
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 大学项目设计C#仓库管理系统+完整项目源代码

    千次下载 热门讨论 2012-04-09 21:40:42
    大学项目设计C#仓库管理系统+完整项目源代码,适合新手了解,WINFORM程序,用到了很多小技术,由于文件过大。所以数据库和文档分开传了,大家看下我同时传的其他文件有的,谢谢。
  • Java项目设计分享(一)

    千次阅读 2017-09-29 18:31:56
    Java项目设计

    感觉公司项目的设计还不错,想和大家分享一下,欢迎大家留言指出缺陷和可优化之处。

    先来简单介绍下项目的构成情况。

    公司使用的是微服务设计,框架采用SSM(Spring+SpringMVC+MyBatis),整个项目拆分成7个微服务项目,项目之间采用dubbo进行接口调用,采用kafka进行非实时通信,采用Redis作为内存锁工具。

    每个微项目的构建结构层次大体相同:
    不需要页面的项目分为两层:
    project-all
    |——api
    |——core

    需要页面的项目分为三个子项目:
    project-all
    |——api
    |——core
    |——web

    • api项目:对外的接口服务。
    • core项目:业务逻辑层,包含:biz层、service层、dao层(注:core层依赖api项目)。
    • web项目:页面处理层,包含:controller(注:web层依赖core项目)。

    业务层次共分为4层:

    • Facade层:负责对接收参数进行合法性校验,以及对请求记录进行内存锁定。
    • Biz层:负责主要业务逻辑的整合。
    • Service层:负责将请求数据和返回数据进行一些特殊处理。
    • Dao层:负责数据的持久化。

    请求DTO主要分为2层:
    - xxxxReq:api层接收接口传输的最原始dto(注:Req存储在api层)。
    - xxxxQuery:用来对xxxxReq进行特殊处理,比如将req接收的时间字段进行格式化等。

    响应DTO也分为两层:
    - xxxxEntity:数据表直接生成的实体类
    - xxxxRes:api层对外接口返回的dto

    持久层又分为2层:

    • Mapper层:存放mybatis自动生成工具产生的最原始的Model、Mapper和Mapper.xml
    • Dao层:存放基于Mapper层扩展的Model、Dao和Dao.xml。Dao继承了Mapper,Dao.xml继承了Mapper.xml

    这样的设计很明显的让设计很清晰,尤其是持久层的设计非常便于扩展:Mapper层的文件由于在自动化生成的基础上,完全没有任何的改动,所以当表字段变更的时候,可以直接使用mybatis自动化生成工具覆盖掉之前的Mapper层文件。由于Dao层生成的定制化语句非常少,手动修改的工作量还是很少的。

    虽然上面的设计很清晰,但是DTO的设计上存在几个问题:

    1.Req和Query存在一个问题:那就是Query和Req的字段是非常近似的,但是Query没有继承Req,这使得在Req增加字段的时候,还得在Query中增加字段,非常麻烦且容易遗漏。

    public class BaseQuery implements Serializable{
    
        private static final long serialVersionUID = -435214449318006882L;
    
        private String orderby;
    
        private Integer start;
    
        private Integer offset;
    
        public String getOrderby() {
            return orderby;
        }
    
        public void setOrderby(String orderby) {
            this.orderby = orderby;
        }
    
        public Integer getStart() {
            return start;
        }
    
        public void setStart(Integer start) {
            this.start = start;
        }
    
        public Integer getOffset() {
            return offset;
        }
    
        public void setOffset(Integer offset) {
            this.offset = offset;
        }
    
    }
    public class LoanSummaryReq extends BaseQuery {
    
        private static final long serialVersionUID = 5584867796146222861L;
    
        /**
         *系统来源ID
         */
        private Integer systemSourceId;
    
        /**
         * 是否合计
         */
        private Boolean token;
    
        /**
         * 查询日期类型
         */
        private String dateType;
    
        /**
         * 起始日期
         */
    
        protected String startTime;
    
        /**
         * 结束日期
         */
        protected String endTime;
    
        /**
         *系统来源ID
         */
        public Integer getSystemSourceId() {
            return systemSourceId;
        }
    
        /**
         *系统来源ID
         */
        public void setSystemSourceId(Integer systemSourceId) {
            this.systemSourceId = systemSourceId;
        }
    
        public Boolean getToken() {
            return token;
        }
    
        public void setToken(Boolean token) {
            this.token = token;
        }
    
        public String getDateType() {
            return dateType;
        }
    
        public void setDateType(String dateType) {
            this.dateType = dateType;
        }
    
        public String getStartTime() {
            return startTime;
        }
    
        public void setStartTime(String startTime) {
            this.startTime = startTime;
        }
    
        public String getEndTime() {
            return endTime;
        }
    
        public void setEndTime(String endTime) {
            this.endTime = endTime;
        }
    
    }
    public class LoanSummaryQuery extends LoanSummaryReq {
    
        private Logger logger = LoggerFactory.getLogger(LoanSummaryQuery.class);
    
        public Date getStartDate() {
            if (StringUtils.isNoneBlank(startTime)) {
                try {
                    return DateUtils.getStartDate(startTime);
                } catch (ParseException e) {
                    logger.error("【查询】转换日期参数错误,错误详情:", e);
                }
            }
            return null;
        }
    
        public Date getEndDate() {
            if (StringUtils.isNoneBlank(endTime)) {
                try {
                    return DateUtils.getEndDate(endTime);
                } catch (ParseException e) {
                    logger.error("【查询】转换日期参数错误,错误详情:", e);
                }
            }
            return null;
        }
    }

    2.sql查询返回的entity和api对外返回的res 字段是一样的,但是因为entity不在api层,所以返回的时候需要将entity对象的属性拷贝到req对象里。如果在*Mapper.xml中自定义Column_List,每个字段填写res对象的字段名称作为别名,在sql上直接返回 ***Res 对象。

    <sql id="Column_List">
       id, loan_date loanDate, system_source_id systemSourceId, capital, asset, asset_product assetProduct, account_type accountType,create_date createDate, update_time updateTime
      </sql>
    <select id="queryLoanSummaries" resultType="com.xxx.xxx.xxx.report.dto.LoanSummaryRes" parameterType="com.xxx.xxx.xxx.apps.report.model.customized.LoanSummaryQuery">
        select
        <include refid="Column_List" />
        from report_loan_summary
        <include refid="loanSummaryWhere" />
        <include refid="paging.orderby" />
        <include refid="paging.pager" />
      </select>
    <sql id="loanSummaryWhere">
        <where>
          <if test="systemSourceId != null and systemSourceId != '' ">and system_source_id = #{systemSourceId}</if>
          <if test="assets != null and assets.size > 0"> and asset in
            <foreach item="item" index="index" collection="assets" open="(" separator="," close=")">
              #{item}
            </foreach>
          </if>
          <if test="startDate   != null and dateType   !='' "><![CDATA[and ${dateType} >= #{startDate}]]></if>
          <if test="endDate     != null and dateType   !='' "><![CDATA[and ${dateType} <= #{endDate}]]></if>
        </where>
      </sql>
    展开全文
  • PHP项目设计基本步骤

    千次阅读 2016-12-19 20:55:46
    PHP项目设计基本步骤 一.项目题目  基于php和mysql数据库设计一个在线测试系统,实现功能如下:  (1)学生可在线进行测试答题,并上传答案到数据库中;  (2)老师可在线进行测试管理,并在线进行阅卷等操作。 ...

    PHP项目设计基本步骤

    一.项目题目

        基于php和mysql数据库设计一个在线测试系统,实现功能如下:

        (1)学生可在线进行测试答题,并上传答案到数据库中;

        (2)老师可在线进行测试管理,并在线进行阅卷等操作。

    二.项目步骤

        1.明确任务要求

           可以从项目题目中提取应该实现的功能模块。

        2.资料准备阶段

          本项目需要用到的技术资料,包括文本知识和软件资料。

          (1)软件资料:phpStudy_2014和notepad++

          (2)文本资料:php基础教程和php数据库操作的详细例程

            推荐网址:http://www.w3school.com.cn/php/index.asp里面有详细的php和数据库教程以及示例。

        3.系统架构搭建

          作为一个完整的数据库远程访问交互系统,项目系统架构包括控制流和数据流,所以首先搭建系统架构以从整体上把握方向。本项目包括用户版和管理版两个操作窗口:

                                                                       

        4.功能模块编程

           (1)用户:在线答题、修改密码、登录和退出时间写入数据库;

           (2)管理:修改密码、查看题库、删除题目、录入试题、创建班级、阅卷管理、发布试题、发布通知

        5.联合调试测试

            尽管系统所有功能模块已经实现,仍然需要对系统进行调试和Debug如边界测试和输入检验等等,以及完善人机交互界面。

        6.编写项目报告

            包括项目流图、软件流图以及详细安装使用文档以及补充说明。

    展开全文
  • App项目设计开发完整流程

    千次阅读 2016-03-27 23:36:34
    App项目设计开发完整流程 1. idea形成——APP项目雏形 一个APP项目的最初首先要确定项目整体方案,整个项目的规划,大体框架,做成文档展现出来,以便大家提意见和更好的改进。也就是说首先要确立产品原型,进入...

    App项目设计开发完整流程

    1. idea形成——APP项目雏形

    一个APP项目的最初首先要确定项目整体方案,整个项目的规划,大体框架,做成文档展现出来,以便大家提意见和更好的改进。也就是说首先要确立产品原型,进入项目评估阶段。经过反复确认,最终形成产品脑图和完整的需求文档。

    2.功能设计——APP项目概要设计

    第二步相当于网站的需求分析,需要整理确定App的主要用户群体和APP能实现的功能。关于APP开发设计可以在DevStore平台上借助一些工具来充实你的APP,像结合推送、地图、社交分享、第三方登录等常用的工具让你的APP更丰富一些。借助第三方服务来丰富自己的作品是很好的借力途径,一定不要错过,平时要养成收集平台的习惯,例如工具平台,学习交流平台,养成总结整合资源会是受益一生的好习惯。

    3. 功能实现——APP项目打码阶段

    APP的大概界面构思和设计,大功能模块代码编写。正式进入产品的原型设计阶段。UI、UE开始设计,形成初步的效果图。在经过确认后界面的效果图正式设计完成。产品在设计图完成后,进入研发阶段。通过编程语言形成正式的程序。至此,App的制作过程就完成了一大部分,可以进入测试部进行测试。作为一个开发者来说这才是重头戏,设计,测试都是别人的事情,这一步主要是开发者努力打码阶段,不断码砖,修bug阶段。

    4.测试——APP项目大家评

    把大概的界面和功能连接后,App的大致demo就出来了,demo自己试用和体验几遍后,根据实际情况修改,没有大错误后,新版本可以尝试寻找beta用户, 根据测试用户的反馈,改进并反复测试。用户测试阶段一定要把每个用户的意见考虑进去,不一定每个意见都会采纳,但是不要放过一点瑕疵,尽全力让自己的作品更好。

    5.APP项目完成

    在产品经过多次测试,修改bug确认无误后。一个App制作项目就完成,可以进入个大市场,投放使用。市场推广也是比较关键的一步,在各大市场中,开发者就要通过各种方式推广自己的App产品,力求App在市场上获得更多的下载量,吸引更多的用户。

     

     

    开发一款移动App的5个基本步骤

    无论是苹果App Store,还是谷歌的Play Store,人们总是会发现无数创新独特的移动App。但是,创意只是万里长征的第一步,开发一款移动应用的过程其实并不容易,有时甚至会让人感到沮丧万分。因此,本文将介绍五个步骤,或许对那些刚起步的创业者会有所帮助。

    一、开发App之前要先想好商业模式

    很多创业者在有了一个创意想法之后,便会立即着手开发App应用,但是笔者要提醒的是,你最好对自己的App的商业模式要有一个清晰的理解。通常来说,将App作为一种平台,帮助两个相互依存的群体进行交流是一种不错的商业模式。

    实际上,Uber,Airbnb,Snapchat,YouTube,等等重量级App应用都采用了上述商业模式。

    接下来,就是要具体化App应用的主要功能和核心作用,简而言之,就是它能给用户提供什么样的价值。如果你在描述App应用的核心功能时,用了超过一句话,那么不好意思,基本上说明它还不够核心。

    Uber的核心功能是连接司机和乘客;Airbnb的核心功能是连接房间空闲的房东和租客。Instagram的核心功能是简单、快速地在社交网络里分享美图。这些平台其实只做了一件事,但是却把这一件事做的很专,很精。因此,创业者千万不要有吃着碗里瞧着锅里的想法,一个核心功能还没做好,就想着下一个了。

    记住,你总是能在下一个版本里增加更多功能。但投资人想要的,是你在市场上独一无二的竞争力。如果你让用户承载了太多选择,肯定无法获得成功。不仅如此,App应用新增功能的成本通常不会太低,创业者必须要学会聪明地利用自己的资源,因此,好钢用在刀刃上,在最有竞争力,最能形成网络效应的地方下功夫。

    二、了解竞争环境

    一旦你的App应用明确了核心功能,那么接下来可能就要做些调研工作了,首当其冲地,就是要去了解下你的潜在对手和竞争环境。如果你试图进入一个饱和的市场,风险肯定比较大;相对而言,一个充满竞争的市场应该会比较成熟,在其中获得成功的机会也比较大。

    不过,如果你的竞争对手已经完成了数百万美金的B轮或C轮融资,此时你可能就得自己掂量掂量了,想想你开发的这款移动应用在进入到这个市场之后,是否有足够的竞争力与之抗衡。

    另一方面,如果一个市场门户大开,你也需要慎重考虑一下为什么会这样,不要冒然闯入其中。

    三、规划和验证

    如果上述两点完成之后,就是时候开始制定规划,让自己的想法变成一个有形的产品。

    首先,你需要了解用户体验(UX)和用户界面(UI)两者的区别。用户体验主要涉及到如何设计用户需求,你需要理解的某个产品或服务所涉及到的一些具体工作,这样才能为用户提供更好的体验。用户界面更多地是专注在界面可用性上,比如用户是否能足够便捷地使用,使用效率够不够高,使用过程中用户满意度好不好,等等。

    你最先要做的,就是从用户界面下手。你的App应用会在哪些设备屏幕上使用,提供什么样的功能,功能之间又是如何彼此关联的。用户体验不需要考虑上述要点,它更多地是起到“修饰”作用,不过用户体验可以帮助你了解App应用应该具备什么样的设计原则。你可以考虑给你的平台制定一个详细的框架规划,甚至开发一个“可点击”App原型产品。

    如果上述工作完成之后,你需要与人分享,并寻求他们真诚的反馈。根据具体的建议,制定开发规划路径和UI/UX规划。当你完全规划好了App应用的布局,必须要考虑它将会在哪些移动操作系统平台上运行。

    通常来说,移动App应用会在苹果的iOS操作系统上运行,但是如果你希望进军安卓和iOS两大主流移动市场,那么在此笔者要提醒的是,安卓应用所需的成本更高,开发难度更高,这也是很多开发人员选择iOS操作系统的原因之一,但如果一款移动App平台想要获得成功,就必须得那些安卓和iOS这两个市场

    四、寻找开发人员,了解如何招募人才

    如果你希望打造一家受人尊敬的移动应用开发公司,那么可能需要牢记以下这几件事:

    优秀、快速、廉价。三者只能选其二,在移动应用开发过程中,你无法做到三者兼得。

    如果你要完成一款移动应用的开发和部署,至少需要投入五万美元,很少有移动应用开发公司能做到比这个金额更少的成本投入。因此,你需要做好成本预算,并且专注于开发最低可行性产品,明确商业模式,并构建产品原型,不要一上来就考虑整个开发和部署项目,要一点一点来。

    绝大多数高质量的移动应用,成本都超过10万美元。

    创建一款移动应用,开发只占到长期成本的35%,之后会有很多无法预料的成本投入。

    开发移动应用的过程会很长(大致需要12到20周时间),期间你需要和开发团队紧密合作,因此在选人的时候,尽量选择那些与你容易相处的。此外,招募一名熟悉你移动应用商业模式的程序员,这点也非常重要。

    如果上面几点都考虑完善之后,接下来要做的就是挖人啦。谷歌公司有很多高水平的移动应用开发人员。如果你认识其他移动应用创业者,可以听听他们在选择供应商上的意见。

    如果你手头资金不足,也可以在一些网站(比如Elance和CrAIGlist)上寻找一些自由职业程序员。另外,你需要考虑员工的住所距离,毕竟员工距离公司较远会非常不方便。

    五、做好不断修改优化移动应用的准备

    当你的移动应用开发接近尾声,需要找一下测试人员,看看在生产环境下的使用效果,了解下移动应用的用户体验是否符合预期,如果不达标,那么开发人员就需要尽快调整产品。除非你能确保自己开发的移动应用能够满足用户要求,否则就需要不断优化代码。总之,在发布移动应用之前,充分做好测试工作是非常重要的

    除了确保程序员能编写高质量的代码,质量控制也非常重要,不要使用自动质量控制,一定要人为参与,尽管这可能会花费较多时间。

     

    在你准备发布App应用时,必须先申请创建App Store和Google Play Store的开发者账号,申请过程可能会花上几天时间,因此这也要考虑其中,避免耽误整个发布流程。如果这一切都准备就绪,那么就可以发布啦。

    当你发布了一款移动应用,一定要做好不断修改优化移动应用的准备。如果一款应用使用两次还出现bug,86%的用户会选择删除。因此,在当下竞争如此激烈的移动市场里,要给自己留大约三到八周时间,解决发布后出现的各种问题。一旦你的应用被用户下载、使用,请关注用户评论,并做好跟踪分析工作。不断修改、不断优化,不断提升用户满意度。

    的确,开发移动应用是一个漫长且复杂的过程,但如果你能了解上述五个步骤,或许能在这个竞争激烈的市场里占有一席之地。

     

     

    展开全文
  • 提高程序员项目设计水平的11条建议

    千次阅读 多人点赞 2014-07-27 14:22:29
    1.分析清楚你要面对的项目。...2.考虑项目设计的方法。 在这个阶段,你要根据这个项目的特点考虑设计的工具和语言。比如,对于图书管理系统,它需要封装性好,这样有利于管理和维护。而这
  • 基于vue.js的直播项目设计

    千次阅读 2017-03-03 15:53:06
    基于vue.js的直播项目设计
  • 文章目录题目要求一、硬件设计二、理论分析与计算三、电路与程序设计四、测试方案与测试结果五、项目展示 哔哩哔哩项目展示视频:https://www.bilibili.com/video/BV1oz4y1d7mH/ 百度网盘资料链接:...
  • javaweb项目设计文档

    万次阅读 2016-11-27 15:05:24
    项目需求、分析设计
  • 项目设计数据库表时是否需要在表中加备用预留字段? 背景:以前做项目,有用过SSH框架,或者SSM框架,数据库有Oracle,DB2。在开发过程中,有时因数据库设计者未考虑周到,业务实体有一个属性没有对应的字段,因此...
  • 单片机项目设计中常用的NMOS+PMOS控制电路 大家晚上好,第一次写博客给大家分享一个比较常用的电路,不要说我菜哈,这些都是我自毕业以来实际工作中用到的电路,虽然毕业的时候在其他同学看来在实验室呆过,但是...
  • JavaWeb的项目设计思路

    千次阅读 2018-07-30 16:02:28
    JavaWeb在做项目的时候,最重要的是应用了分层操作的思想,JavaBean + JSP + Servlet,就是Model + View + Controller,即MVC的设计模式。 拿到项目的时候,首先分析需求,分析业务,然后分几步走: 设计数据库 ...
  • 视频检测器(VideoDetector)项目设计   本文地址: http://blog.csdn.net/caroline_wendy   国家863涉密视频检测项目, 核心代码类图设计. 包含: 图像特征提取, 关键帧提取, 分类器检测, 等模块. 可以进行视频的检测,...
  • 软件平台项目设计开发流程

    千次阅读 2019-02-10 10:31:58
    本文是写给未入行或刚入行的伙伴,希望没有做过大型平台开发的朋友对平台的开发有一个感性的认识,消除对大型项目开发的恐惧感,一个平台项目的整体流程大概是什么样子,分享下真实的开发流程 1软件设计 1.1沟通了解...
  • 电子商务项目设计(案例)

    万次阅读 2008-04-01 23:24:00
    电子商务项目设计案例 一、项目概述 简要说明项目的要点,让读者了解整个项目的大体情况。 1、项目名称:“芬芳”网上花店项目规划设计方案 2、项目背景:(需求及迫切性) 随着互联网技术
  • PHP项目设计

    千次阅读 2011-11-22 21:38:13
    不过本文并不打算讨论和需求分析、获取商业逻辑相关的话题,而是针对系统设计方面进行探讨。 面临难题 编码对于合格的 PHP 程序员来说并不是什么难事(也许只是花费时间长短的问题),因此系统分析和设计这一阶段...
  • 项目设计的方案及思路

    千次阅读 2015-10-07 07:28:42
    一个网站或者其他项目来了,我们可以怎么设计项目的功能设计和数据库设计呢? 答:所谓功能设计,就是这个网站需要设计出哪些模块来,比如:登录模块,用户注册模块,购物车模块等等, 而每一个模块,再具体...
  • 拟定项目所需工作和完成时间 2020.02.28 完成mqtt协议的学习,使用电脑端软件与服务器进行通讯 2020.03.10 使用stm32f1控制esp8266,完成使用mqtt协议与服务器的交互,上传芯片内部温度至服务器作为模拟信息...
  • 51单片机项目设计:时钟万年历、闹钟(lcd1602显示)

    千次阅读 多人点赞 2020-05-13 17:17:52
    项目功能: 1、能够显示年、月、日、星期、时间、实时温度。 2、能够按键实现修改当前时间与日期。 3、能够同时设定3个闹钟,在指定时间蜂鸣器发出滴滴声响。 4、掉电走时,掉电闹钟设置数据不丢失 项目思路: 利用...
  • 各色无人机经典项目设计,全部开源!

    万次阅读 多人点赞 2018-07-12 13:36:21
    几乎所有的电子发烧友都有一个“飞天梦”,都想拥有一个自己的无人机,四轴也好,六轴也罢,给大家分享12个无人机方面的经典设计,赶快设计起来吧!1、资料开源-MiniFly四轴飞行器-支持4D空翻,抛飞,定高本设计分享...
  • 如何写项目设计方案

    千次阅读 2012-04-01 16:13:07
    (其他项目也适用)  一份成功安防监控工程设计方案是赢得单子的重要砝码,如何写一份令客户心动的安防监控工程设计方案则需要下苦功夫。监控系统是属于弱电系统中的一种安防范系统,它集微机自动识别技术和...
  • 今天给大家分享一款由Java swing实现的酒店餐饮管理系统,该系统相对复杂,数据库采用的是sqlserver,功能很多,非常适合Java学习者参考学习,项目除了源码还有详细的设计文档,下载地址最后面附上,下面来看下演示...
  • 前提概要: ...笔者在开始做项目前,首先是对项目需求的一个细化,有点像是将一个大目标拆解成一个个小目标,分解后便做了如下图: 项目实现: 随后笔者将项目主要分为了四大块: 1、简单的UI实现,也就
  • 硬件项目设计心得

    千次阅读 2006-03-24 20:36:00
    1 充分了解各方的设计需求,确定合适的解决方案 启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,...
  • 软件设计有三个要素:流程、功能方法和数据结构 一 设计流程要点 功能方法考虑性能,流程方法考虑设计模式。 1. 愿景 你需要做个什么东西,要做到什么水平。 2. 边界 你需要干什么,什么你不用干,什么你不能干。 3....
  • 上面一篇文章说的只是一些想法,我想很多人看到了比较空洞,从这篇文章开始我会把我设计过的一些项目拿出来把我的设计的相关思路给大家作为一些参考。  其实抽奖系统的设计,我在前面的文章有说明,今天又来回顾...
  • 数据库设计 项目架构 效果演示: Web端: 后台管理模块: 项目 打赏 移动端:【点击下载app】 【商城移动APP 】开发文档 Reward 本项目提供部分简单的API,更多详细的API请联系作者: 获取商品分类 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 212,784
精华内容 85,113
关键字:

项目设计