Python编程 综合性实验: Java源代码分析程序 (统计文件,行数,关键字)

本文档介绍了一个Python编程实验,旨在分析Java源代码,包括统计文件数量、大小、关键字出现次数以及代码行数等。实验详细规定了各项任务,并提供了代码实现的各个步骤。
摘要由CSDN通过智能技术生成

又重新对做过的课设用新的语言实现了一次,学到了很多知识…
这是上一次实现的[Java]综合性实验 Java源代码分析程序
分为三个部分
1.统计指定目录中文件的个数和总的大小
2.统计目录下Java源文件的关键字出现次数
3.统计Java源文件代码行数,注释行数,空白行数

实验要求如下:

一、题目:综合性实验 Java源代码分析程序
二、类型:综合型、探索型
三、目的:初步掌握运用面向对象方法编写应用程序,掌握类、对象、封装等;了解并应用Java语言的字符串处理、文本文件的读写
四、内容:
1.背景描述:
(1)Java语言共有50个关键字。
(2)Java源程序是以“.java”为扩展名的文本文件。
(3)可以考虑在Java源程序中的行共有3种:
代码行,可运行的Java源代码。例如:
int n = 10;
注释行,3种注释均可。例如:
/**
文档注释
/
/

多行注释
/
//单行注释
空行,既无代码,也无注释;
(4)特殊行的处理方法
如果有以下行尾单行注释的情况,将该行判定为代码行。
int number; //number表示人数
int n; /n表示数量/
如果有以下行尾多行注释的情况,第1行判定为代码行,第二行判定为注释行。
int number; /
number为整型
表示人数 */
假设被分析程序源码无其他特殊情况,如:
int /人数/ number;
2. 项目名和类名为JavaCodeAnalyzer,主类名等其他类名自行定义。
3. 实现功能:
(1) 程序运行时要求输入一个目录的名称。目录不存在或不是目录要提示错误并重新输入。
(2) 找出输入目录中所有的Java源程序文件(文件扩展名为“.java”), 并进行源程序文件进行分析。
需要分析的结果有:
目录中源程序文件个数
所有源程序文件总的字节数
所有源程序文件中代码行数、注释行数、空行数及总行数。说明:行以回车结束。
(3) 统计并按从多到少输出所有源程序文件中使用的Java关键字及其出现次数。
(4) 统计分析的结果除在屏幕显示外,还需要存储到一个文本文件中,文件内容应该如下:
目录名称:XXXXX(绝对路径方式)
共有源程序文件XX个,总的大小为:XXXXXX 字节
源程序文件总行数:xxxx,其中:
代码行数:xxx,占xx.xx%
注释行数:xxx,占xx.xx%
空白行数:xxx,占xx.xx%
源程序文件中使用过的关键字有(按使用次数降序排列):
关键字1:xx次
关键字2:xx次
关键字3:xx次
关键字4:xx次
关键字5:xx次
本次分析时间:年-月-日,时-分-秒
注意:统计关键字使用次数时,要排除注释中出现的关键字和字符串直接量中出现的关键字。

分成以下部分:
1.验证输入目录
2.递归搜索.java格式文件
3.计算.java文件个数和总大小
4.统计源文件的代码行数,注释行数等
5.统计源文件的关键字出现次数
6.将输出结果保存到文件(偷懒不实现,用file模块)
7.输出计算用时(偷懒不实现,用timeit模块)

代码实现

class JavaCodeAnalyzer:
    def __init__(self):
        self.filelist = []
        self.filepath = ""
        self.row_count = self.blank_count = self.note_count = self.code_count = 0
        self.keywords = {
   key: 0 for key in
                         ["abstract", "assert", "boolean", "break", "byte",
                          "case", "catch", "char", "class", "const",
                          "continue", "default", "do",<
简要的需求分析: 已经提供的数据:   <1> 班级学生名单:学生的学号和姓名已经分别存储在以学生所在班级命名的文本文件中,每行存储一个学生的学号和姓名,中间用一个空格分隔。例如:2010级网络工程1班.txt文件中存放该班学生名单。内容为:   201030720102 陈纯   201030720103 陈娟娟   201030720104 陈伟健   201030720105 陈伊纯   ……   <2> 开设课程保存在名为:course.txt的文本文件中,每行存放一门课程的名称,如:   面向对象程序设计   操作系统   数据库系统      实现以下功能,所有功能以图形用户界面完成。   <1> 新建课程考试成绩单,功能描述如下: 程序界面显示已经开设的课程(从course.txt中读取),用户选择本次输入的课程。 用户选择为哪个班输入成绩(即选择相应班的名单文件)。如果该班的成绩已经输入(已经存在对应成绩单文件),则提示无需输入。 程序提供界面为该班的每个学生输入考试成绩。 输入的成绩单以对象文件格式存储到文件中,文件命名为:班级-课程名.dat。例如:2010级网络工程1班-面向对象程序设计.dat。   <2> 打开课程考试成绩单,功能描述如下: 用户选择打开的成绩单文件,程序打开并读取成绩单文件内容,并显示在界面中。   <3> 修改课程考试成绩单,功能描述如下: 打开某班某课程的成绩单后,可以选择修改其中某个或某几个考试成绩,并保存。   <4> 课程考试成绩分析,功能描述如下: 即打开某班某课程的成绩单后,点击成绩分析按钮或菜单,显示如下分析内容: 最高分:XX分,最低分:XX分,平均分:XX分 不及格(分数<60):XX人,占XX.XX% 及格(60<=分数<70):XX人,占XX.XX% 中等(70<=分数<80):XX人,占XX.XX% 良好(80<=分数<90):XX人,占XX.XX% 优秀(90<=分数<100):XX人,占XX.XX%   <5> 成绩图形分析,功能描述如下:    显示考试成绩分布的饼图和柱形图。 想用上饼状图和柱状图请看: http://www.open-open.com/lib/view/open1365997415828.html
实现以下功能,所有功能以图形用户界面完成。 <1> 新建课程考试成绩单,功能描述如下: n 程序界面显示已经开设的课程(从course.txt中读取),用户选择本次输入的课程。 n 程序界面通过文件对话框要求用户选择为哪个班输入成绩(即选择相应班的名单文件)。如果该班的成绩已经输入(已经存在对应成绩单文件),则提示无需输入。 n 程序提供界面为该班的每个学生输入考试成绩。 n 输入的成绩单以对象文件格式存储到文件中(不能是文本文件),文件命名为:班级-课程名.dat。例如:2010级网络工程1班-面向对象程序设计.dat。 <2> 打开课程考试成绩单,功能描述如下: n 程序通过文件对话框要求用户选择打开的成绩单文件。 n 程序打开并读取成绩单文件内容,并显示在界面中。 <3> 修改课程考试成绩单,功能描述如下: n 完成第<2>功能后,即打开某班某课程的成绩单后。 n 可以选择修改其中某个或某几个考试成绩,并保存。 <4> 课程考试成绩分析,功能描述如下: n 完成第<2>功能后,即打开某班某课程的成绩单后。 n 点击成绩分析按钮或菜单,显示如下分析内容: u 最高分:XX分,最低分:XX分,平均分:XX分 u 不及格(分数<60):XX人,占XX.XX% u 及格(60<=分数<70):XX人,占XX.XX% u 中等(70<=分数<80):XX人,占XX.XX% u 良好(80<=分数<90):XX人,占XX.XX% u 优秀(90<=分数<100):XX人,占XX.XX% <5> 成绩图形分析,功能描述如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值