Автор: Пользователь скрыл имя, 19 Октября 2011 в 03:02, курсовая работа
Целью данной работы является создание эффективного программного обеспечения для внедрения в исходные тексты программ информации об авторских правах, что позволит исключить несанкционированное их использование.
Введение 4
1 Описание методов и средств решения задачи 6
1.1 Постановка задачи на курсовое проектирование 6
1.2 Общие аспекты проблемы авторского права 6
1.3 Современные методы защиты программного обеспечения 7
2 Методы внедрения водяных знаков 19
2.1 Исследование статистических свойств исполняемого кода 19
2.2 Предлагаемые методы внедрения водяных знаков 21
2.3 Оценка эффективности подстановок 24
3 Описание разработанного программного обеспечения 26
3.1 Общая структура 26
3.2 Проектирование базы данных 26
3.3 Описание основных компонентов 27
3.4 Описание алгоритма программы 30
4 Описание результатов работы 32
4.1 Описание главной формы программы 32
4.2 Описание результатов работы программы и выводы по ним 33
Заключение 35
Список использованных источников 36
Приложение А. Листинг программы 37
using System.Data.OleDb;
using System.IO;
namespace Kypca4_1
{
public partial class Form1 : Form
{
double[] x1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
double[] y100_MCK = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
double[] y100_MKM = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
string openfilename;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public void CreateChart2(ZedGraphControl zgc)
{
GraphPane myPane = zgc.GraphPane;
// Set the title and axis labels
myPane.XAxis.Title.Text = "Интервал";
myPane.YAxis.Title.Text = "Количество";
// Make a bar
BarItem bar = myPane.AddBar("Статистический
анализ до изменения", x1, y100_MCK,
Color.SteelBlue);
// Fill the bar with a color gradient
bar.Bar.Fill = new Fill(Color.FromArgb(100, 130, 255, 130), Color.FromArgb(100, 255, 255, 255),
Color.FromArgb(100, 130, 255, 130));
bar = myPane.AddBar("Статистический аанализ после изменения", x1, y100_MKM, Color.RoyalBlue);
// Fill the bar with a color gradient
bar.Bar.Fill = new Fill(Color.RoyalBlue, Color.White, Color.RoyalBlue);
// Get an image for the background (use your own filename here)
Image image = Bitmap.FromFile(@"qwerty.jpg")
// Fill the pane background with the image
TextureBrush texBrush = new TextureBrush(image);
myPane.Fill = new Fill(texBrush);
// Turn off the axis background fill
myPane.Chart.Fill.IsVisible = false;
// Hide the legend
myPane.Legend.IsVisible = true;
// Hide the title
myPane.Title.IsVisible = false;
// Set the colors to white show it shows up on a dark background
myPane.XAxis.Color = Color.White;
myPane.YAxis.Color = Color.White;
myPane.XAxis.Scale.FontSpec.
myPane.XAxis.Title.FontSpec.
myPane.YAxis.Scale.FontSpec.
myPane.YAxis.Title.FontSpec.
myPane.Chart.Border.Color = Color.White;
myPane.XAxis.MajorGrid.Color = Color.White;
myPane.YAxis.MajorGrid.Color = Color.White;
// Show the grid lines
myPane.XAxis.MajorGrid.
myPane.YAxis.MajorGrid.
myPane.YAxis.Scale.Max = 15;
// Set the cluster with to 100 user units
// this is necessary since the scale is not an ordinal type
myPane.BarSettings.
myPane.XAxis.Scale.Max = 20;
myPane.XAxis.Scale.Min = 0;
// Make it a stacked bar
myPane.BarSettings.Type = BarType.Stack;
// Calculate the Axis Scale Ranges
// zgc.AxisChange();
}
private void tabPage3_Click(object sender, EventArgs e)
{
}
private void textBox9_TextChanged(object sender, EventArgs e)
{
}
private void textBox8_TextChanged(object sender, EventArgs e)
{
}
private void label12_Click(object sender, EventArgs e)
{
}
private void textBox7_TextChanged(object sender, EventArgs e)
{
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
}
private void label13_Click(object sender, EventArgs e)
{
}
private void label11_Click(object sender, EventArgs e)
{
}
private void открытьФайлToolStripMenuItem_
{
openFileDialog1.ShowDialog();
openfilename = openFileDialog1.FileName;
richTextBox1.LoadFile(
richTextBox2.LoadFile(
OleDbConnection mycon = new OleDbConnection(@"Provider=
mycon.Open();
OleDbCommand mycom = new OleDbCommand();
mycom = new OleDbCommand("Delete * From Test1_count_start", mycon);
mycom.ExecuteNonQuery();
mycom = new OleDbCommand("Select * From Commands", mycon);
OleDbDataReader Reader = mycom.ExecuteReader();
OleDbCommand com = new OleDbCommand();
string tmpcom, tmpstr;
StreamReader SReader;
int count;
bool comm = false;
int i = 0;
while (Reader.Read())
{
tmpcom = Reader[1].ToString();
SReader = new StreamReader(openfilename);
count = 0;
while (!SReader.EndOfStream)
{
tmpstr = SReader.ReadLine();
if (tmpstr.IndexOf("//") >= 0) tmpstr = tmpstr.Remove(tmpstr.IndexOf("
if (tmpstr.IndexOf("/*") >= 0)
{
if (tmpstr.IndexOf("*/") >= 0)
{
comm = false;
tmpstr = tmpstr.Remove(tmpstr.IndexOf("
}
else comm = true;
}
if (comm)
if (tmpstr.IndexOf("*/") >= 0)
{
comm = false;
tmpstr = tmpstr.Remove(0, tmpstr.IndexOf("*/") + 1);
}
if (tmpstr.IndexOf(tmpcom) >= 0) count++;
}
com = new OleDbCommand("Insert Into Test1_count_start Values(" + Reader[0].ToString() + "," + count.ToString() + ");", mycon);
com.ExecuteNonQuery();
dataGridView1.RowCount++;
dataGridView1[0, i].Value = Reader[1].ToString();
dataGridView1[1, i].Value = count.ToString();
y100_MCK[i] = count;
i++;
//onsole.WriteLine(Reader[1].
}
mycon.Close();
}
private void сохранитьФайлToolStripMenuItem
{
saveFileDialog1.ShowDialog();
richTextBox2.SaveFile(
}
private void рассчитатьСтатистикуToolStripM
{
}
private void расчетToolStripMenuItem_Click(
{
OleDbConnection mycon = new OleDbConnection(@"Provider=
mycon.Open();
OleDbCommand mycom = new OleDbCommand();
mycom = new OleDbCommand("Delete * From Test1_count_end", mycon);
mycom.ExecuteNonQuery();
mycom = new OleDbCommand("Select * From Commands", mycon);
OleDbDataReader Reader = mycom.ExecuteReader();
OleDbCommand com = new OleDbCommand();
string tmpcom, tmpstr;
StreamReader SReader;
int count;
bool comm = false;
int i = 0, j = 0;
while (Reader.Read())
{
tmpcom = Reader[1].ToString();
SReader = new StreamReader(openfilename);
count = 0;
j = 0;
while (j < richTextBox2.Lines.Length)
{
tmpstr = richTextBox2.Lines[j];
if (tmpstr.IndexOf("//") >= 0) tmpstr = tmpstr.Remove(tmpstr.IndexOf("
if (tmpstr.IndexOf("/*") >= 0)
{
if (tmpstr.IndexOf("*/") >= 0)
{
comm = false;
tmpstr = tmpstr.Remove(tmpstr.IndexOf("
}
else comm = true;
}
if (comm)
if (tmpstr.IndexOf("*/") >= 0)
{
comm = false;
tmpstr = tmpstr.Remove(0, tmpstr.IndexOf("*/") + 1);
}
if (tmpstr.IndexOf(tmpcom) >= 0) count++;
j++;
}
com = new OleDbCommand("Insert Into Test1_count_end Values(" + Reader[0].ToString() + "," + count.ToString() + ");", mycon);