鱼C论坛

 找回密码
 立即注册
查看: 2461|回复: 8

[作品展示] 一个功能比较完善的账本程序

[复制链接]
发表于 2020-2-10 11:37:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dlnb526 于 2020-2-12 19:28 编辑
在学习完Easygui后曾经做了一个很简陋的账本 https://fishc.com.cn/thread-154753-1-1.html
,之前利用tkinter制作了一个简陋的登陆程序,然后就有了一个功能比较完善Tkinter版本的账本程序。
说明:因为我还没有学完Tkinter,所以之后可能还会再鼓捣鼓捣。里面有很多代码可以精简,暂时懒得弄了~

Ver: 0.0.1
BuildDate:2020.02.10
Author:dlnb526
Statement:(origin)嘿嘿这是一个简单的账本程序,由于明文存储密码,所以要注意隐私安全哦!
---------------------
Ver: 0.0.2
BuildDate:2020.02.11
Author:dlnb526
Statement:修复了另存为窗口打不开的问题
---------------------
Ver: 0.0.3( 待上传)
Statement:
1.“另存为”后自动添加.txt后缀
2.增加了登陆界面菜单栏
BuildDate:2020.02.12
       
具体功能

[u][b]
一、登录界面



[/b]
[/u]
  • 登陆界面就是简单的注册和登录功能啦,每当出现错误步骤的时候用label来提示错误
  • 第一次进行操作新建一个存放账户密码信息的pkl,注册成功后会创建再userdata文件夹一个数据文件
  • 在成功登录后载入相对应用户名的数据文件,数据文件采用json保存,如果文件被删除,登陆时会弹出错误界面
QQ图片20200210105422.png


二。账本

  • 记录收入支出并随时反馈,随时可以看到上一次的操作以及剩余金额,如果金额输入的不是数,也会有相应的提示
  • 在账本历史界面可以按时间进行查询搜索,还可以将账本另存为txt文件
QQ图片20200210105553.png

QQ图片20200210105606.png

有很多很容易实现的东西以后有时间再加进去,比如输入保存后清空输入框啥的~



才疏学浅~希望各位不吝指教!

源码见二楼


源码下载及打包后程序下载:


                               
登录/注册后可看大图



https://github.com/dlnb/python_exp/tree/master/%E8%B4%A6%E6%9C%AC


蓝奏云
游客,如果您要查看本帖隐藏内容请回复

  1. <div><span style="white-space:pre">        </span>Ver: 0.0.1</div><div><span style="white-space:pre">        </span>BuildDate:2020.02.10</div><div><span style="white-space:pre">        </span>Author:dlnb526</div>
复制代码


        感谢您的回帖和评分~
        

评分

参与人数 2荣誉 +11 鱼币 +11 贡献 +9 收起 理由
Yvonne! + 5 + 5 + 3 鱼C有你更精彩^_^
不二如是 + 6 + 6 + 6 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-10 11:39:44 | 显示全部楼层
本帖最后由 dlnb526 于 2020-2-11 11:10 编辑

main.py
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Feb  9 14:09:39 2020

  4. @author: dlnb5
  5. """
  6. #账单主程序
  7. from books_register import Login
  8. from tkinter import *
  9. import time
  10. import json
  11. from history_list import Historylist
  12. from tkinter import filedialog
  13. class MoneyBook():
  14.     def __init__(self):
  15.         login = Login()
  16.         judge1 = 0
  17.         try:
  18.             self.Total = 0
  19.             self.data = login.data1
  20.             self.username = login.user_name
  21.             print('您好:%s,欢迎使用账本!控制台将显示您的操作历史'%self.username)
  22.             print('当前余额:%.2f'%self.data[-1]["Total"])
  23.             self.Total = self.data[-1]["Total"]
  24.             judge1 = 1

  25.         except:
  26.             print('处理错误,请重新注册!')
  27.         if judge1 == 1:  
  28.             self.bookGui()
  29.     #检测输入框里是否输入数字
  30.    
  31.     def inputwindow(self,select):
  32.         print('%s'%select)
  33.         self.labelframe2.grid_forget()
  34.         self.labelframe2 = LabelFrame(self.root,text='%s'%select,labelanchor=N,padx=80,pady=50)
  35.         self.labelframe2.grid(row=1,column=1,padx=5,pady=10)
  36.         self.label_item = Label(self.labelframe2,text = '%s项目:'%select,padx=5,pady=5)
  37.         self.label_item.grid(row=2,column=1)
  38.         self.label_price = Label(self.labelframe2,text = '金额:',padx=5,pady=5)
  39.         self.label_price.grid(row=3,column=1)
  40.         self.entry_item = Entry(self.labelframe2)
  41.         self.entry_item.grid(row=2,column=2,padx=10,pady=5)
  42.         self.entry_price = Entry(self.labelframe2)
  43.         self.entry_price.grid(row=3,column=2,padx=10,pady=5)
  44.         self.savebutton =Button(self.labelframe2,text='保存',command = self.save)
  45.         self.savebutton.grid(row=4, column=3)
  46.         
  47.     def income(self):
  48.         self.inputwindow('收入')
  49.         self.choice = 1
  50.     def outcome(self):
  51.         self.inputwindow('支出')
  52.         self.choice = 2
  53.    #保存数据
  54.     def save(self):
  55.         if self.choice == 1:
  56.             print('正在执行保存收入操作')

  57.             
  58.             try:
  59.                 self.price_input = self.entry_price.get()
  60.                 self.item = self.entry_item.get()
  61.                 self.price_input=float(self.price_input)
  62.                 self.atime=time.localtime()
  63.                 self.timstr='%d%02d%02d%02d%02d%02d'%(self.atime[0],self.atime[1],self.atime[2],self.atime[3],self.atime[4],self.atime[5])
  64.                 print('-------当前时间为:%s-------'%self.timstr)
  65.                 self.Total = self.Total + self.price_input
  66.                 self.dict_temp = {"Time":self.timstr,"Item":self.item,"Exp":self.price_input,"Total":self.Total}

  67.                 self.data.append(self.dict_temp)
  68.                 with open('user_data\%s_file.json'%self.username,'w', encoding='utf-8') as file2:
  69.                     json.dump(self.data, file2, indent=4)
  70.                 self.label3.grid_forget()
  71.                 self.label3 = Label(self.root,text='%02d:%02d:%02d  保存成功!收入%.2f元,余额%.2f元'%(self.atime[3],self.atime[4],self.atime[5],self.price_input,self.Total),padx=5)
  72.                 self.label3.grid(row =4,column=1,padx=5,pady=1)               
  73.             except:
  74.                 print('输入有误!')
  75.                 self.label3.grid_forget()
  76.                 self.label3 = Label(self.root,text='金额处请输入数字!',padx=5,fg='red')
  77.                 self.label3.grid(row =4,column=1,padx=5,pady=1)   
  78.         elif self.choice == 2:
  79.             print('正在执行保存支出')
  80.             try:
  81.                 self.price_input = self.entry_price.get()
  82.                 self.item = self.entry_item.get()
  83.                 self.price_input=-float(self.price_input)
  84.                 self.atime=time.localtime()
  85.                 self.timstr='%d%02d%02d%02d%02d%02d'%(self.atime[0],self.atime[1],self.atime[2],self.atime[3],self.atime[4],self.atime[5])
  86.                 print('-------当前时间为:%s-------'%self.timstr)
  87.                 self.Total = self.Total + self.price_input
  88.                 self.dict_temp = {"Time":self.timstr,"Item":self.item,"Exp":self.price_input,"Total":self.Total}
  89.                 self.data.append(self.dict_temp)
  90.                 with open('user_data\%s_file.json'%self.username,'w', encoding='utf-8') as file2:
  91.                     json.dump(self.data, file2, indent=4)
  92.                 self.label3.grid_forget()
  93.                 self.label3 = Label(self.root,text='%02d:%02d:%02d  保存成功!支出%.2f元,余额%.2f元'%(self.atime[3],self.atime[4],self.atime[5],-self.price_input,self.Total),padx=5)
  94.                 self.label3.grid(row =4,column=1,padx=5,pady=1)
  95.             except:
  96.                 print('输入有误!')
  97.                 self.label3.grid_forget()
  98.                 self.label3 = Label(self.root,text='金额处请输入数字!',padx=5,fg='red')
  99.                 self.label3.grid(row =4,column=1,padx=5,pady=1)   
  100.     def history(self):
  101.         Historylist(self.username)
  102.         #设计账本的图形界面
  103.     def bookGui(self):
  104.         self.root = Tk()
  105.         self.root.title('%s的账本 by dlnb526'%self.username)
  106.    
  107.         self.labelframe1 = LabelFrame(self.root,text="记录",labelanchor=N,padx=30,pady=20)
  108.         self.labelframe1.grid(row=1,column=0,padx=5,pady=10)
  109.         self.button1 = Button(self.labelframe1,text='收入',command = self.income)
  110.         self.button1.grid(row=2,column=0,padx=5,pady=10)
  111.         self.button2 = Button(self.labelframe1,text='支出',command=self.outcome)
  112.         self.button2.grid(row=3,column=0,padx=5,pady=10)        
  113.         self.labelframe2 = LabelFrame(self.root,text="请选择",labelanchor=N,padx=80,pady=50)
  114.         self.labelframe2.grid(row=1,column=1,padx=5,pady=10)
  115.         self.label2 = Label(self.labelframe2,text='请在左侧选择内容',padx=20,pady=20)
  116.         self.label2.grid(row=1,column=4,padx=5,pady=5)
  117.         self.result=StringVar()
  118.         self.result.set('当前总计余额%.2f'%self.Total)
  119.         self.label3 = Label(self.root,textvariable=self.result,padx=5)
  120.         self.label3.grid(row =4,column=1,padx=5,pady=1)
  121.         self.button3 = Button(self.root,text='查看历史账单',command=self.history)
  122.         self.button3.grid(row =5,column=1,padx=5,pady=5)
  123.         mainloop()
  124.         

  125.         
  126. moneybook = MoneyBook()
复制代码




history_list.py
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Feb 2020

  4. @author: dlnb5
  5. """
  6. #账单历史的程序
  7. from tkinter import *
  8. import json
  9. from tkinter import filedialog

  10. class Historylist():
  11.     def __init__(self,username):
  12.         print(username)
  13.         self.username = username
  14.         print(' 您打开了账单历史页面,正在写入文件')
  15.         with open('user_data\%s_file.json'%self.username,'r') as file1:
  16.             self.data1 = json.loads(file1.read())
  17.         self.hlwindow()
  18.     def search(self):
  19.         print('正在载入搜索功能')
  20.         print(self.entry1.get())
  21.         self.text.delete(1.0,END)
  22.         self.searchcontent = self.entry1.get()
  23.         self.text.insert(END,'搜索结果如下!\n')
  24.         self.count=0
  25.         for eachdict in self.data1:
  26.             temp_data = eachdict["Time"]

  27.             if self.searchcontent in temp_data:
  28.                 self.count=1
  29.                 try:
  30.                     self.text.insert(END,'您在%s 收支了%.2f元,\n项目是%s\n'%(eachdict["Time"],eachdict["Exp"],eachdict["Item"]))
  31.                 except:
  32.                     self.text.insert(END,'\n%s缺少项目无法展示\n'%eachdict["Time"])
  33.         if self.count == 0:
  34.             self.text.insert(END,'没有搜索结果')
  35.         self.text.insert(END,'\n-------\n搜索结束')
  36.     def saveas(self):
  37.         print('正在载入另存为~')
  38.         
  39.         filename = filedialog.asksaveasfilename(title='选择要保存账单的位置', filetypes=[('All Files', '*.txt')])
  40.         print(filename)
  41.         with open(filename,'w') as file2:
  42.             file2.write('\n欢迎使用账单程序 by dlnb526\n')
  43.             for eachdict in self.data1:
  44.                 try:
  45.                     file2.write('-----------------------------\n时间 %s\n项目 %s \n收支 %.2f元\n余额 %.2f元\n'%\
  46.                         (eachdict['Time'],eachdict['Item'],eachdict['Exp'],eachdict['Total']))

  47.                 except:
  48.                     file2.write('\n%s缺少项目无法展示\n'%eachdict["Time"])

  49.     def datapro(self):
  50.         self.text.delete(1.0,END)
  51.         self.text.insert(END,'****%s,您的历史账单如下:****\n'%self.username)
  52.         for eachdict in self.data1:
  53.             try:
  54.                 self.hisstr =  '-----------------------------\n时间 %s\n项目 %s \n收支 %.2f元\n余额 %.2f元\n'%\
  55.                     (eachdict['Time'],eachdict['Item'],eachdict['Exp'],eachdict['Total'])
  56.                 self.text.insert(INSERT,self.hisstr)
  57.             except:
  58.                 print('emmm已经录入数据')
  59.         self.text.insert(END,'---------\n感谢使用本程序!')
  60.     def back(self):
  61.         self.datapro()
  62. #账单历史的界面
  63.     def hlwindow(self):
  64.         self.root=Tk()
  65.         self.root.title("历史账单 by dlnb526")
  66.         
  67.         self.labelframe = LabelFrame(self.root,text="历史账单如下",labelanchor=N)
  68.         self.labelframe.grid(padx=10,pady=10,columnspan=4)
  69.         self.sb_text = Scrollbar(self.labelframe)
  70.         self.sb_text.grid(row=2,column=4,sticky=N+S)
  71.         self.text = Text(self.labelframe,width=50, height=30,yscrollcommand =self.sb_text.set)
  72.         self.text.grid(row=2,column=1,columnspan=3,padx=10,pady=10,sticky=W)
  73.         self.datapro()
  74.         self.label1 = Label(self.root,text="请输入要搜索的日期")
  75.         self.label1.grid(row=3,column=0,sticky=W,padx=5)
  76.         self.entry1 = Entry(self.root)
  77.         self.entry1.grid(row=3,column=1)

  78.         self.button2 = Button(self.root,text = "另存为",command=self.saveas)
  79.         self.button2.grid(padx=30,pady=30,row=4,column=1,columnspan=3,sticky=W+E)
  80.         self.button1 = Button(self.root,text = "搜索",command=self.search)
  81.         self.button1.grid(row=3,column=2,padx=10,pady=10,sticky=W)
  82.         self.button3 = Button(self.root,text = "刷新账单",command=self.back)
  83.         self.button3.grid(row=3,column=3,padx=10,pady=10,sticky=E)
  84.         
  85.         self.sb_text.config(command=self.text.yview)
  86.         
  87.         
  88.         
  89.         
  90.         mainloop()
复制代码

books_register.py
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Feb  8 21:14:34 2020

  4. @author: dlnb5
  5. """
  6. #利用tkinter实现登陆程序界面for账单
  7. from tkinter import *
  8. import tkinter.messagebox
  9. import webbrowser
  10. import pickle
  11. import os
  12. import os.path
  13. import json

  14. class Login:
  15.     def __init__(self):
  16.         print('您已载入登陆程序')
  17.         #首先进行相关文件处理
  18.         if os.path.exists('User_dict.pkl'):
  19.             file1 = open('User_dict.pkl','rb')
  20.             self.temp_dict = pickle.load(file1)
  21.             file1.close()
  22.         elif not os.path.exists('User_dict.pkl'):
  23.             self.temp_dict={'username':'password'}
  24.             file1 = open('User_dict.pkl','wb')
  25.             pickle.dump(self.temp_dict,file1)
  26.             file1.close()
  27.         self.judgeframe3 = 0

  28.         #然后生成图形界面
  29.         self.root = Tk()
  30.         self.root.title('登陆 by dlnb526')
  31.         self.labelframe1 = LabelFrame(self.root,text='欢迎!',padx=5,pady=5,\
  32.                                  labelanchor = N)
  33.         
  34.         self.labelframe1.grid(row=0,column=0,padx=10,pady=10)
  35.         self.label1 = Label(self.labelframe1,text = "欢迎来到本程序!\n注意本程序密码明文保存,注意隐私安全",padx=5,pady=5)
  36.         self.label1.grid(row = 0,column=0,padx=5,pady=5)
  37.         self.anoutME = Button(self.labelframe1,text = '关于我',command = self.about_me)
  38.         self.anoutME.grid(row=1,column=1)
  39.         
  40.         self.labelframe2 = LabelFrame(self.root,text="登录程序",padx=30,pady=30)
  41.         self.labelframe2.grid(row=0,column=1,padx=10,pady=10)
  42.         self.label2 = Label(self.labelframe2,text = "这是一个登录程序的演示!",padx=5,pady=5)
  43.         self.label2.grid(row = 0,column=1,padx=5,pady=5)
  44.         self.button1 = Button(self.labelframe2,text = '新建账户',command = self.newAccount)
  45.         self.button1.grid(row=1,column=1)
  46.         self.button2 = Button(self.labelframe2,text = '已有帐户登录',command = self.hadAccount)
  47.         self.button2.grid(row=1,column=2)
  48.         mainloop()
  49.         
  50. #---------------------------------新建账户后的行为----------------------------------------
  51.     def newAccount(self):
  52.         self.creatAccount()
  53.     def creatAccount(self):
  54.         if self.judgeframe3 == 1:
  55.             self.labelframe3.grid_forget()
  56.             self.judgeframe3 = 0
  57.         self.labelframe3 = LabelFrame(self.root,text="注册登录",padx=30,pady=30)
  58.         self.labelframe3.grid(row=2,column=1,padx=10,pady=10)
  59.         self.judgeframe3 = 1
  60.         self.label_username = Label(self.labelframe3,text = '用户名:',padx=5,pady=5)
  61.         self.label_username.grid(row=2,column=1)
  62.         self.label_password1 = Label(self.labelframe3,text = '请输入密码:',padx=5,pady=5)
  63.         self.label_password1.grid(row=3,column=1)
  64.         self.label_password2 = Label(self.labelframe3,text = '请再次输入密码:',padx=5,pady=5)
  65.         self.label_password2.grid(row=4,column=1)

  66.         self.entry_username = Entry(self.labelframe3)
  67.         self.entry_username.grid(row=2,column=2,padx=10,pady=5)
  68.         self.entry_password1 = Entry(self.labelframe3,show='*')
  69.         self.entry_password1.grid(row=3,column=2,padx=10,pady=5)
  70.         self.entry_password2 = Entry(self.labelframe3,show='*')
  71.         self.entry_password2.grid(row=4,column=2,padx=10,pady=5)
  72.         self.regist_button = Button(self.labelframe3,text = '注册',command = self.regist_new_Account)
  73.         self.regist_button.grid(row=5,column=2,padx=10,pady=5)

  74.     #点击注册后的行为
  75.     def regist_new_Account(self):
  76.         
  77.         self.user_name = self.entry_username.get()
  78.         self.password1 = self.entry_password1.get()
  79.         self.password2 = self.entry_password2.get()
  80.         if self.user_name in self.temp_dict:
  81.             self.label3 = Label(self.labelframe3,text = "账号已存在",padx=5,pady=5,fg='red')
  82.             self.label3.grid(row = 5,column=1,padx=5,pady=5)
  83.         else:
  84.             if self.password1==self.password2:
  85.                 self.password = self.password1
  86.                 if  self.password:
  87.                     self.dict1 = {self.user_name:self.password}
  88.                     self.temp_dict.update(self.dict1)
  89.                     file1 = open('User_dict.pkl','wb')
  90.                     pickle.dump(self.temp_dict,file1)
  91.                     file1.close()
  92.                     self.file_creat()
  93.                     self.label3 = Label(self.labelframe3,text = "注册成功!\n请返回登陆",padx=5,pady=5,fg='red')
  94.                     self.label3.grid(row = 5,column=1,padx=5,pady=5)
  95.                 else:
  96.                     self.label3 = Label(self.labelframe3,text = "密码不能为空!",padx=5,pady=5,fg='red')
  97.                     self.label3.grid(row = 5,column=1,padx=5,pady=5)
  98.                     
  99.             else:
  100.                 self.label3 = Label(self.labelframe3,text = "前后两次密码输入不一致",padx=5,pady=5,fg='red')
  101.                 self.label3.grid(row = 5,column=1,padx=5,pady=5)
  102.     def file_creat(self):
  103.         if os.path.exists('user_data'):

  104.             dict_list = [{"Total":0,"Time": '00000000000000',"Item":'BLANK',"Exp":0}]

  105.             with open('user_data\%s_file.json'%self.user_name,'w', encoding='utf-8') as file2:
  106.                 json.dump(dict_list, file2, indent=4)
  107.                
  108.                
  109.         if not os.path.exists('user_data'):
  110.             os.mkdir('user_data')
  111.             dict_list = [{"Total":0,"Time": '00000000000000',"Item":'BLANK',"Exp":0}]

  112.             with open('user_data\%s_file.json'%self.user_name,'w', encoding='utf-8') as file2:
  113.                 json.dump(dict_list, file2, indent=4)
  114.                
  115.             
  116. #------------------------------------点击登陆后的行为--------------------------------------------------               
  117.     def hadAccount(self):
  118.         if self.judgeframe3 == 1:
  119.             self.labelframe3.grid_forget()
  120.             self.judgeframe3 = 0
  121.         self.labelframe3 = LabelFrame(self.root,text="登录",padx=30,pady=50)
  122.         self.labelframe3.grid(row=2,column=1,padx=10,pady=10)
  123.         self.label_username0 = Label(self.labelframe3,text = '用户名:',padx=5,pady=5)
  124.         self.label_username0.grid(row=2,column=1)
  125.         self.label_password0 = Label(self.labelframe3,text = '请输入密码:',padx=5,pady=5)
  126.         self.label_password0.grid(row=3,column=1)
  127.         self.entry_username_0 = Entry(self.labelframe3)
  128.         self.entry_username_0.grid(row=2,column=2,padx=10,pady=5)
  129.         self.entry_password_0 = Entry(self.labelframe3,show='*')
  130.         self.entry_password_0.grid(row=3,column=2,padx=10,pady=5)
  131.         self.judgeframe3 = 1
  132.         self.regist_button = Button(self.labelframe3,text = '登录',command = self.check_login)
  133.         self.regist_button.grid(row=5,column=2,padx=10,pady=5)
  134.         
  135.         
  136.     def check_login(self):
  137.         self.user_name = self.entry_username_0.get()
  138.         self.input_password = self.entry_password_0.get()
  139.         if self.user_name in self.temp_dict:
  140.             if self.temp_dict[self.user_name] == self.input_password:
  141.                 self.label3 = Label(self.labelframe3,text = "登陆成功~\n正在加载程序",padx=5,pady=5,fg='red')
  142.                 self.label3.grid(row = 5,column=1,padx=5,pady=5)
  143.                 self.file_import()
  144.                 print('登陆成功!正在载入数据……')
  145.             else:
  146.                 self.label3 = Label(self.labelframe3,text = "密码错误!",padx=5,pady=5,fg='red')
  147.                 self.label3.grid(row = 5,column=1,padx=5,pady=5)
  148.         else:
  149.             self.label3 = Label(self.labelframe3,text = "用户名不存在!",padx=5,pady=5,fg='red')
  150.             self.label3.grid(row = 5,column=1,padx=5,pady=5)
  151.                      
  152.         
  153.         
  154.     def file_import(self):
  155.         try:
  156.             with open('user_data\%s_file.json'%self.user_name,'r') as file2:
  157.                 self.data1 = json.loads(file2.read())
  158.             print('数据加载成功')
  159.             #关闭窗口
  160.             self.root.destroy()
  161.             print('登陆成功,已经打开账本程序')
  162.         except:
  163.             tkinter.messagebox.showerror('错误','数据读取错误')
  164.         
  165.     def about_me(self):
  166.         webbrowser.open('https://fishc.com.cn/space-uid-783916.html')
  167.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 11:50:02 | 显示全部楼层

建议将源码放到帖子中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 12:05:23 | 显示全部楼层
不二如是 发表于 2020-2-10 11:50
建议将源码放到帖子中

好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 12:05:36 | 显示全部楼层
框架有了,继续改进功能、界面,加油o(∩_∩)o...哈哈!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 12:17:16 | 显示全部楼层
Yvonne! 发表于 2020-2-10 12:05
框架有了,继续改进功能、界面,加油o(∩_∩)o...哈哈!!!

嗯嗯嗯谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 13:46:20 From FishC Mobile | 显示全部楼层
感觉源码回复可见,好东西才不会沉底。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 15:40:52 | 显示全部楼层
hrp 发表于 2020-2-10 13:46
感觉源码回复可见,好东西才不会沉底。

谢谢你,对蓝奏云链接加了回复可见~不是啥好东西做的还很粗糙源码大家就随便参考吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 14:27:16 | 显示全部楼层
看看类似的程序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 17:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表