Logic Java学习总结2----日历的实现

日历的实现

import java.util.*;

public class B{

 public static void main(String[] args){

   Scanner input = new Scanner(System.in);

   System.out.print("请输入年份");

   int year = input.nextInt();

   System.out.print("请输入月份");

  int month = input.nextInt();

   int sum = 0;

   int y = 1990;//1990年1月1日刚好是星期一

//计算从输入的要查询的年份的1月1日距1990年1月1日有多少天

   while(y<year){

     if(y%4==0&&y%100!=0||y%400==0){

        sum = sum + 366;

      }else{

        sum = sum + 365;

      }

     y++;

   }
//计算该年1月1日距给定月1月1日有多少天
   int m = 1;

   while(m<month){

     if(m==4||m==6||m==9||m==11){

        sum = sum + 30;

      }else if(m==2){

        if(y%4==0&&y%100!=0||y%400==0){

          sum = sum + 29;

        }else{

          sum = sum +28;

        }

      }else{

        sum = sum + 31;

      }

     m++;

    }

   sum = sum + 1;

//输出日历

   System.out.println("日/t一/t二/t三/t四/t五/t六");

   int k = 1;

   int WeekDay=sum%7;

   while(k<=WeekDay){

     System.out.print("/t");

     k++;

   }

   int d = 1;
 int day = 1;

   if(m==4||m==6||m==9||m==11){

       day = 30;

     }else if(m==2){

       if(y%4==0&&y%100!=0||y%400==0){

         day = 29;

       }else{

         day = 28;
  }

    }else{

       day = 31;

    }
   while(d<=day){
     System.out.print(d+"/t");
     if(sum%7==6){
       System.out.println();
     }
     d++;
     sum++;
   }

  }

}

### 鸿蒙OS APP项目实战:课程表的设计与实现教程 #### 一、需求分析 为了满足用户对于课程管理的需求,在鸿蒙操作系统上的教育类应用程序应具备创建、编辑以及查看个人日程安排的功能。这不仅限于简单的展示,还应该支持按周视图显示不同时间段内的具体科目名称及其对应的时间地点等信息。 #### 二、技术选型 考虑到性能优化及用户体验等因素,建议采用Java作为主要编程语言来构建此应用;同时利用XML布局文件定义UI界面结构,并通过Data Binding机制简化数据绑定过程[^1]。 #### 三、架构设计 整个系统的架构可以分为三层: - **表现层(Presentation Layer)** 负责处理用户的输入输出操作,比如绘制图形化用户界面(GUI),响应触摸事件等。 - **业务逻辑层(Business Logic Layer)** 用于封装具体的业务规则和服务接口调用等功能模块,如获取服务器端的数据并解析成适合前端使用的格式。 - **持久化存储层(Data Persistence Layer)** 提供本地数据库访问能力,保存重要配置参数或缓存网络请求的结果以便离线状态下也能正常工作。 #### 四、核心功能开发指南 ##### (一)创建课程实体类Course.java ```java public class Course { private String courseName; private int weekDay; // 星期几上课 private Time startTime; private Time endTime; private Location location; public Course(String name, int dayOfWeek, Time start, Time end, Location loc){ this.courseName = name; this.weekDay = dayOfWeek; this.startTime=start; this.endTime=end; this.location=loc; } } ``` ##### (二)设置RecyclerView适配器WeekViewAdapter.kt 使用`RecyclerView`组件配合自定义的ViewHolder模式渲染每周七天的日历格子,每个item内部再嵌套另一个水平方向滚动条用来承载当天所有的课程卡片。 ```kotlin class WeekViewAdapter(private val coursesList: List<Course>) : RecyclerView.Adapter<WeekViewAdapter.DayHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DayHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_day, parent, false) return DayHolder(view) } inner class DayHolder(itemView: View) : RecyclerView.ViewHolder(itemView), ViewHolder<List<Course>>{ lateinit var adapter: HorizontalCoursesAdapter init { itemView.findViewById<Button>(R.id.add_course_button).setOnClickListener { showAddDialog() } setupHorizontalRecycler() } private fun setupHorizontalRecycler(){ val recyclerView = itemView.findViewById<RecyclerView>(R.id.horizontal_courses_recycler_view) recyclerView.layoutManager = LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false) adapter = HorizontalCoursesAdapter(ArrayList()) recyclerView.adapter = adapter } override fun bind(item: List<Course>?) { item?.let{adapter.submitList(it)} } } } ``` ##### (三)集成Room Database完成CRUD操作 借助Android官方推出的轻量级ORM框架——Room来进行SQLite数据库的操作,从而达到高效便捷地增删改查目的。 ```kotlin @Entity(tableName="courses") data class DbCourse( @PrimaryKey(autoGenerate=true)val id:Int?=null, val title:String, val weekday:Int,//星期几 val fromHour:Int, val toHour:Int, val roomNumber:String? ) @Dao interface CoursesDAO{ @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insertAll(vararg dbCourses:DbCourse) @Query("SELECT * FROM courses WHERE weekday=:day ORDER BY fromHour ASC ") suspend fun loadByDate(day:Int):LiveData<List<DbCourse>> } @Database(entities=[DbCourse::class],version=1,exportSchema=false) abstract class AppDatabase: RoomDatabase() { abstract fun getCoursesDAO():CoursesDAO companion object{ @Volatile private var INSTANCE:AppDatabase? = null fun getDatabase(context: Context)=INSTANCE?: synchronized(this){ val instance = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java,"course_database" ).build() INSTANCE = instance instance } } } ``` #### 五、测试验证 编写单元测试案例覆盖各个关键路径下的预期行为,确保新增加的功能不会破坏现有程序稳定性的同时也能够按照既定规格运行良好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值