数据结构课程设计报告.docx
《数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告.docx(23页珍藏版)》请在冰点文库上搜索。
数据结构课程设计报告
班级:
____软件121_____________
姓名:
___________________
指导教师:
__________________
成绩:
__________________________
信息工程学院
2014年1月9日
题目1
1.需求分析
简单的员工管理系统
每一个员工的信息包括:
编号、姓名、性别、出生年月、学历、职务、电话、住址等,系统的功能包括:
(1)查询:
按特定条件查找员工。
(2)修改:
按编号对某个员工的某项信息进行修改
(3)排序:
按特定条件对所有员工的信息进行排序
(4)插入:
按编号删除已离职的员工的信息。
(5)删除:
按编号删除已离职的员工信息。
2.概要设计
java.io.Serializable//实现可比较和序列化接口
publicFriend(Stringname,Stringcode)//构造方法
publicintcompareTo(Friendf)//比较两个对象大小,实现Comparable接口
publicObject[]toArray()//将对象的两个成员变量保存在对象数组中
publicStaffManagementSystem(Stringfilename)//构造图形用户界面
publicStaffManagementSystem()//员工管理系统
privatevoidreadFromFile()//从指定文件中读取已有对象
privatevoidgetFamilyName()//JList添加其中所有姓氏
publicvoidvalueChanged(ListSelectionEvente)//列表框的选择事件处理方法
publicvoidactionPerformed(ActionEvente)//单击事件处理方法
publicvoidwindowClosing(WindowEvente)//关闭窗口事件处理方法
3.详细设计
//Friend.java
publicclassFriendimplementsjava.lang.Comparable,java.io.Serializable//实现可比较和序列化接口
{
privateStringname;//姓名
privateStringcode;//编号
this.name=name;
this.code=code;
}
publicStringgetName()//获得姓名
returnthis.name;
publicStringgetcode()//获得电话号码
returnthis.code;
publicStringtoString()
return"("+this.name+","+this.code+")";
{//指定排序次序
if(!
this.name.equals(f.name))
returnpareTo(f.name);//两人以姓名为序
else
returnpareTo(f.code);//同一人以电话号码为序
Object[]vars=newObject[2];
vars[0]=this.name;
vars[1]=this.code;
returnvars;
//StaffManagementSystem.java
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.table.*;
importjava.io.*;
publicclassStaffManagementSystemextendsJFrameimplementsListSelectionListener,ActionListener,WindowListener
privateStringfilename;//文件名
privateTreeSettbook;//使用一个树集合存储多个Friend对象
privateJListlist;//列表框
privateDefaultListModellistModel;//默认列表框模型
privateJTabletable;//表格组件
privateDefaultTableModeltableModel;//默认表格模型
privateJComboBoxcombobox_name;//姓名组合框
privateDefaultComboBoxModelcomboModel;//组合框模型,选择姓氏
privateJTextFieldtext_code;//编号文本行
super("员工管理系统");
this.setBounds(300,300,450,300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addWindowListener(this);//注册窗口事件监听器
JSplitPanesplit_h=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT);
//水平分割窗格
split_h.setDividerLocation(40);//设置垂直分隔条的位置
this.getContentPane().add(split_h);
//初始化一个容器,在容器上添加字符串组(无该语句则白屏)
JSplitPanesplit_v=newJSplitPane(JSplitPane.VERTICAL_SPLIT);
//垂直分割窗格
split_v.setDividerLocation(180);//设置水平分隔条的位置
this.filename=filename;
tbook=newTreeSet();
this.readFromFile();//从指定文件中读取已有对象信息
this.listModel=newDefaultListModel();//默认列表框模型
this.listModel.addElement("姓氏");
this.list=newJList(listModel);//创建列表框
this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置单选模式,默认为多选
this.list.addListSelectionListener(this);//列表框注册选择事件监听器
split_h.add(newJScrollPane(this.list));//添加在滚动窗格中
split_h.add(split_v);
String[]columns={"姓名","编号","性别","诞日","学历","职务","电话","住址"};//表格各列的中文标题
this.tableModel=newDefaultTableModel(columns,0);
//默认表格模型,指定列标题,0行
this.table=newJTable(tableModel);//创建空表格,有列标题
this.list.setSelectedIndex(0);//选中列表框第一项,执行valueChanged()方法
split_v.add(newJScrollPane(table));
//以下面板包括组合框、文本行和添加、删除、查找等按钮
JPanelfriendpanel=newJPanel(newGridLayout(2,1));
//将下框的内容分成2行1列
split_v.add(friendpanel);
JPanelpanels[]={newJPanel(),newJPanel()};
for(inti=0;ifriendpanel.add(panels[i]);panels[0].add(newJLabel(columns[0]));boModel=newDefaultComboBoxModel();//默认组合框模型combobox_name=newJComboBox(boModel);combobox_name.setEditable(true);panels[0].add(combobox_name);panels[0].add(newJLabel(columns[1]));this.text_code=newJTextField("1",12);//编号长度panels[0].add(text_code);this.getFamilyName();//列表框和组合框添加其中所有姓氏Stringbuttonstr[]={"添加","删除","按编号查找"};JButtonbuttons[]=newJButton[buttonstr.length];for(inti=0;i{buttons[i]=newJButton(buttonstr[i]);panels[1].add(buttons[i]);buttons[i].addActionListener(this);}this.setVisible(true);}publicStaffManagementSystem(){this("friends.dat");//指定默认文件名}privatevoidreadFromFile()//从指定文件中读取已有对象{try{FileInputStreamfin=newFileInputStream(this.filename);//文件字节输入流ObjectInputStreamobjin=newObjectInputStream(fin);//对象字节输入流while(true)//输入流未结束时try{tbook.add((Friend)objin.readObject());//读取一个对象添加到系统}catch(Exceptione)//捕获ClassNotFoundException和EOFException异常{break;}objin.close();//先关闭对象流fin.close();//再关闭文件流}catch(IOExceptionioe){}//指定文件不存在时,表格为空}privatevoidgetFamilyName()//JList添加其中所有姓氏{if(!tbook.isEmpty()){Iteratorit=tbook.iterator();//返回一个迭代器对象while(it.hasNext())//若有后继元素,使用迭代器遍历集合{Friendf=(Friend)it.next();//返回后继元素Stringfamilyname=f.getName().charAt(0)+"";//获得姓氏if(!this.listModel.contains(familyname)){this.listModel.addElement(familyname);//列表框模型添加不重复数据项boModel.addElement(familyname);//组合框模型添加不重复数据项}}}}publicvoidvalueChanged(ListSelectionEvente)//列表框的选择事件处理方法{Stringfamilyname=(String)list.getSelectedValue();//返回列表框选中数据项对象if(!tbook.isEmpty()&&familyname!=null&&familyname!="")//以选中姓氏更新表格{for(inti=this.tableModel.getRowCount()-1;i>=0;i--)//清空表格this.tableModel.removeRow(i);Iteratorit=tbook.iterator();while(it.hasNext())//在系统中查找指定姓氏{Friendf=(Friend)it.next();if(familyname=="姓氏"||f.getName().charAt(0)==familyname.charAt(0))this.tableModel.addRow(f.toArray());//表格添加一行,参数数组指定各列值}}}publicvoidactionPerformed(ActionEvente)//单击事件处理方法{if(e.getActionCommand().equals("添加"))//单击添加按钮{Stringname=(String)combobox_name.getSelectedItem();Stringcode=text_code.getText();Friendf=newFriend(name,code);if(!name.equals("")&&!tbook.contains(f))//不能插入姓名空串和重复对象{tbook.add(f);//添加对象,TreeSet不插入重复元素,没提示也不抛出异常Stringfamilyname=name.charAt(0)+"";//返回姓名的第一个字符if(list.getSelectedValue().equals(familyname))tableModel.addRow(f.toArray());else{if(!listModel.contains(familyname))//列表框中添加不重复元素{listModel.addElement(familyname);comboModel.addElement(familyname);}list.setSelectedValue(familyname,true);//设置列表框选中项}}elseJOptionPane.showMessageDialog(this,"不能添加姓名空串或重复对象"+f.toString());}if(e.getActionCommand().equals("删除")){if(tbook.isEmpty())JOptionPane.showMessageDialog(this,"表格空,不能删除数据项。");else{inti=table.getSelectedRow();//表格当前选中行号if(i==-1)JOptionPane.showMessageDialog(this,"请选择数据项。");else{Stringname=(String)table.getValueAt(i,0);intyes=JOptionPane.showConfirmDialog(null,"删除\""+name+"\"行?");//确认对话框包括Yes和No按钮if(yes==0)//单击确认对话框的Yes按钮{Stringcode=(String)table.getValueAt(i,1);tbook.remove(newFriend(name,code));//删除对象tableModel.removeRow(i);//表格中删除一行listModel.removeElement(name.charAt(0)+"");//列表框中删除指定姓氏comboModel.removeElement(name.charAt(0)+"");}}}}if(!tbook.isEmpty()&&e.getActionCommand().equals("按编号查找")){//查找编号,结果显示在表格中Friendfind=null;Iteratorit=tbook.iterator();while(find==null&&it.hasNext()){Friendf=(Friend)it.next();if(f.getcode().equals(text_code.getText()))//比较编号字符串find=f;}if(find!=null)//若查找成功{for(inti=tableModel.getRowCount()-1;i>=0;i--)//清空表格this.tableModel.removeRow(i);this.tableModel.addRow(find.toArray());}elseJOptionPane.showMessageDialog(this,"未查找到满足条件的数据!");}}publicvoidwindowClosing(WindowEvente)//关闭窗口事件处理方法{try//将其中所有对象写入指定文件{//指定文件不存在时,表格为空创建新文件FileOutputStreamfout=newFileOutputStream(this.filename);//文件字节输出流ObjectOutputStreamobjout=newObjectOutputStream(fout);//对象字节输出流if(!tbook.isEmpty()){Iteratorit=tbook.iterator();while(it.hasNext())objout.writeObject((Friend)it.next());//写入一个对象}objout.close();fout.close();}catch(IOExceptionioe){}}publicvoidwindowOpened(WindowEvente){}publicvoidwindowActivated(WindowEvente){}publicvoidwindowDeactivated(WindowEvente){}publicvoidwindowClosed(WindowEvente){}publicvoidwindowIconified(WindowEvente){}publicvoidwindowDeiconified(WindowEvente){}publicstaticvoidmain(Stringargs[]){newStaffManagementSystem();//默认文件名为"frindes.dat"}}4.调试分析(1)调试过程中问题:主要是一些框架结构的定义以及一些语法上的应用,通过查找API可以详细知道其意思,并应用到程序中。(2)需要的改进:A、实现检查电话号码的位数。B、增加员工管理系统的修改功能。C、双击表格一列,能够修改,响应事件保存修改内容。(3)经验和体会:这次编写的代码主要是修改别人的代码,在这个过程中虽然没有完全做到自己编写,但是也认真看了,说实话很多都不怎么懂,感觉好多要记忆的东西,比如一些框架的定义,操作动作的语法定义。经过这几天的练习,表示在编程方面还是要花上很多心思和时间的。5.测试结果题目21.需求分析求图的最短路径问题2.概要设计typedefstruct{}MGraph;//定义邻接矩阵结构体voidShortestPath_DIJ(MGraphG,intv0,PathMatrix&P,ShortPathTable&D)//说明最短路径结构intLocateVex(MGraphG,charu)//定位邻接矩阵各个顶点是否有误voidCreateMGraph(MGraph&G)//建立邻接矩阵3.详细设计#include#include#defineINT_MAX2147483647#defineINFINITYINT_MAX#defineFALSE0#defineTRUE1#defineNumVertices6//图中最大顶点个数typedefintPathMatrix[NumVertices][NumVertices];//最短路径数组typedefintShortPathTable[NumVertices];//最短路径长度typedefintAdjMatrix[NumVertices][NumVertices];typedefcharVertexType;typedefstruct{VertexTypevexs[NumVertices];AdjMatrixarcs;//邻接矩阵intvexnum,arcnum;}MGraph;intL
friendpanel.add(panels[i]);
panels[0].add(newJLabel(columns[0]));
boModel=newDefaultComboBoxModel();//默认组合框模型
combobox_name=newJComboBox(boModel);
combobox_name.setEditable(true);
panels[0].add(combobox_name);
panels[0].add(newJLabel(columns[1]));
this.text_code=newJTextField("1",12);//编号长度
panels[0].add(text_code);
this.getFamilyName();//列表框和组合框添加其中所有姓氏
Stringbuttonstr[]={"添加","删除","按编号查找"};
JButtonbuttons[]=newJButton[buttonstr.length];
for(inti=0;i{buttons[i]=newJButton(buttonstr[i]);panels[1].add(buttons[i]);buttons[i].addActionListener(this);}this.setVisible(true);}publicStaffManagementSystem(){this("friends.dat");//指定默认文件名}privatevoidreadFromFile()//从指定文件中读取已有对象{try{FileInputStreamfin=newFileInputStream(this.filename);//文件字节输入流ObjectInputStreamobjin=newObjectInputStream(fin);//对象字节输入流while(true)//输入流未结束时try{tbook.add((Friend)objin.readObject());//读取一个对象添加到系统}catch(Exceptione)//捕获ClassNotFoundException和EOFException异常{break;}objin.close();//先关闭对象流fin.close();//再关闭文件流}catch(IOExceptionioe){}//指定文件不存在时,表格为空}privatevoidgetFamilyName()//JList添加其中所有姓氏{if(!tbook.isEmpty()){Iteratorit=tbook.iterator();//返回一个迭代器对象while(it.hasNext())//若有后继元素,使用迭代器遍历集合{Friendf=(Friend)it.next();//返回后继元素Stringfamilyname=f.getName().charAt(0)+"";//获得姓氏if(!this.listModel.contains(familyname)){this.listModel.addElement(familyname);//列表框模型添加不重复数据项boModel.addElement(familyname);//组合框模型添加不重复数据项}}}}publicvoidvalueChanged(ListSelectionEvente)//列表框的选择事件处理方法{Stringfamilyname=(String)list.getSelectedValue();//返回列表框选中数据项对象if(!tbook.isEmpty()&&familyname!=null&&familyname!="")//以选中姓氏更新表格{for(inti=this.tableModel.getRowCount()-1;i>=0;i--)//清空表格this.tableModel.removeRow(i);Iteratorit=tbook.iterator();while(it.hasNext())//在系统中查找指定姓氏{Friendf=(Friend)it.next();if(familyname=="姓氏"||f.getName().charAt(0)==familyname.charAt(0))this.tableModel.addRow(f.toArray());//表格添加一行,参数数组指定各列值}}}publicvoidactionPerformed(ActionEvente)//单击事件处理方法{if(e.getActionCommand().equals("添加"))//单击添加按钮{Stringname=(String)combobox_name.getSelectedItem();Stringcode=text_code.getText();Friendf=newFriend(name,code);if(!name.equals("")&&!tbook.contains(f))//不能插入姓名空串和重复对象{tbook.add(f);//添加对象,TreeSet不插入重复元素,没提示也不抛出异常Stringfamilyname=name.charAt(0)+"";//返回姓名的第一个字符if(list.getSelectedValue().equals(familyname))tableModel.addRow(f.toArray());else{if(!listModel.contains(familyname))//列表框中添加不重复元素{listModel.addElement(familyname);comboModel.addElement(familyname);}list.setSelectedValue(familyname,true);//设置列表框选中项}}elseJOptionPane.showMessageDialog(this,"不能添加姓名空串或重复对象"+f.toString());}if(e.getActionCommand().equals("删除")){if(tbook.isEmpty())JOptionPane.showMessageDialog(this,"表格空,不能删除数据项。");else{inti=table.getSelectedRow();//表格当前选中行号if(i==-1)JOptionPane.showMessageDialog(this,"请选择数据项。");else{Stringname=(String)table.getValueAt(i,0);intyes=JOptionPane.showConfirmDialog(null,"删除\""+name+"\"行?");//确认对话框包括Yes和No按钮if(yes==0)//单击确认对话框的Yes按钮{Stringcode=(String)table.getValueAt(i,1);tbook.remove(newFriend(name,code));//删除对象tableModel.removeRow(i);//表格中删除一行listModel.removeElement(name.charAt(0)+"");//列表框中删除指定姓氏comboModel.removeElement(name.charAt(0)+"");}}}}if(!tbook.isEmpty()&&e.getActionCommand().equals("按编号查找")){//查找编号,结果显示在表格中Friendfind=null;Iteratorit=tbook.iterator();while(find==null&&it.hasNext()){Friendf=(Friend)it.next();if(f.getcode().equals(text_code.getText()))//比较编号字符串find=f;}if(find!=null)//若查找成功{for(inti=tableModel.getRowCount()-1;i>=0;i--)//清空表格this.tableModel.removeRow(i);this.tableModel.addRow(find.toArray());}elseJOptionPane.showMessageDialog(this,"未查找到满足条件的数据!");}}publicvoidwindowClosing(WindowEvente)//关闭窗口事件处理方法{try//将其中所有对象写入指定文件{//指定文件不存在时,表格为空创建新文件FileOutputStreamfout=newFileOutputStream(this.filename);//文件字节输出流ObjectOutputStreamobjout=newObjectOutputStream(fout);//对象字节输出流if(!tbook.isEmpty()){Iteratorit=tbook.iterator();while(it.hasNext())objout.writeObject((Friend)it.next());//写入一个对象}objout.close();fout.close();}catch(IOExceptionioe){}}publicvoidwindowOpened(WindowEvente){}publicvoidwindowActivated(WindowEvente){}publicvoidwindowDeactivated(WindowEvente){}publicvoidwindowClosed(WindowEvente){}publicvoidwindowIconified(WindowEvente){}publicvoidwindowDeiconified(WindowEvente){}publicstaticvoidmain(Stringargs[]){newStaffManagementSystem();//默认文件名为"frindes.dat"}}4.调试分析(1)调试过程中问题:主要是一些框架结构的定义以及一些语法上的应用,通过查找API可以详细知道其意思,并应用到程序中。(2)需要的改进:A、实现检查电话号码的位数。B、增加员工管理系统的修改功能。C、双击表格一列,能够修改,响应事件保存修改内容。(3)经验和体会:这次编写的代码主要是修改别人的代码,在这个过程中虽然没有完全做到自己编写,但是也认真看了,说实话很多都不怎么懂,感觉好多要记忆的东西,比如一些框架的定义,操作动作的语法定义。经过这几天的练习,表示在编程方面还是要花上很多心思和时间的。5.测试结果题目21.需求分析求图的最短路径问题2.概要设计typedefstruct{}MGraph;//定义邻接矩阵结构体voidShortestPath_DIJ(MGraphG,intv0,PathMatrix&P,ShortPathTable&D)//说明最短路径结构intLocateVex(MGraphG,charu)//定位邻接矩阵各个顶点是否有误voidCreateMGraph(MGraph&G)//建立邻接矩阵3.详细设计#include#include#defineINT_MAX2147483647#defineINFINITYINT_MAX#defineFALSE0#defineTRUE1#defineNumVertices6//图中最大顶点个数typedefintPathMatrix[NumVertices][NumVertices];//最短路径数组typedefintShortPathTable[NumVertices];//最短路径长度typedefintAdjMatrix[NumVertices][NumVertices];typedefcharVertexType;typedefstruct{VertexTypevexs[NumVertices];AdjMatrixarcs;//邻接矩阵intvexnum,arcnum;}MGraph;intL
buttons[i]=newJButton(buttonstr[i]);
panels[1].add(buttons[i]);
buttons[i].addActionListener(this);
this.setVisible(true);
publicStaffManagementSystem()
this("friends.dat");//指定默认文件名
try
FileInputStreamfin=newFileInputStream(this.filename);//文件字节输入流
ObjectInputStreamobjin=newObjectInputStream(fin);//对象字节输入流
while(true)//输入流未结束时
tbook.add((Friend)objin.readObject());//读取一个对象添加到系统
catch(Exceptione)//捕获ClassNotFoundException和EOFException异常
break;
objin.close();//先关闭对象流
fin.close();//再关闭文件流
catch(IOExceptionioe){}//指定文件不存在时,表格为空
tbook.isEmpty())
Iteratorit=tbook.iterator();//返回一个迭代器对象
while(it.hasNext())//若有后继元素,使用迭代器遍历集合
Friendf=(Friend)it.next();//返回后继元素
Stringfamilyname=f.getName().charAt(0)+"";//获得姓氏
this.listModel.contains(familyname))
this.listModel.addElement(familyname);//列表框模型添加不重复数据项
boModel.addElement(familyname);//组合框模型添加不重复数据项
Stringfamilyname=(String)list.getSelectedValue();
//返回列表框选中数据项对象
tbook.isEmpty()&&familyname!
=null&&familyname!
="")
//以选中姓氏更新表格
for(inti=this.tableModel.getRowCount()-1;i>=0;i--)//清空表格
this.tableModel.removeRow(i);
Iteratorit=tbook.iterator();
while(it.hasNext())//在系统中查找指定姓氏
Friendf=(Friend)it.next();
if(familyname=="姓氏"||f.getName().charAt(0)==familyname.charAt(0))
this.tableModel.addRow(f.toArray());//表格添加一行,参数数组指定各列值
if(e.getActionCommand().equals("添加"))//单击添加按钮
Stringname=(String)combobox_name.getSelectedItem();
Stringcode=text_code.getText();
Friendf=newFriend(name,code);
name.equals("")&&!
tbook.contains(f))
//不能插入姓名空串和重复对象
tbook.add(f);//添加对象,TreeSet不插入重复元素,没提示也不抛出异常
Stringfamilyname=name.charAt(0)+"";//返回姓名的第一个字符
if(list.getSelectedValue().equals(familyname))
tableModel.addRow(f.toArray());
listModel.contains(familyname))//列表框中添加不重复元素
listModel.addElement(familyname);
comboModel.addElement(familyname);
list.setSelectedValue(familyname,true);//设置列表框选中项
JOptionPane.showMessageDialog(this,"不能添加姓名空串或重复对象"+f.toString());
if(e.getActionCommand().equals("删除"))
if(tbook.isEmpty())
JOptionPane.showMessageDialog(this,"表格空,不能删除数据项。
");
inti=table.getSelectedRow();//表格当前选中行号
if(i==-1)
JOptionPane.showMessageDialog(this,"请选择数据项。
Stringname=(String)table.getValueAt(i,0);
intyes=JOptionPane.showConfirmDialog(null,"删除\""+name+"\"行?
//确认对话框包括Yes和No按钮
if(yes==0)//单击确认对话框的Yes按钮
Stringcode=(String)table.getValueAt(i,1);
tbook.remove(newFriend(name,code));//删除对象
tableModel.removeRow(i);//表格中删除一行
listModel.removeElement(name.charAt(0)+"");//列表框中删除指定姓氏
comboModel.removeElement(name.charAt(0)+"");
tbook.isEmpty()&&e.getActionCommand().equals("按编号查找"))
{//查找编号,结果显示在表格中
Friendfind=null;
while(find==null&&it.hasNext())
if(f.getcode().equals(text_code.getText()))//比较编号字符串
find=f;
if(find!
=null)//若查找成功
for(inti=tableModel.getRowCount()-1;i>=0;i--)//清空表格
this.tableModel.addRow(find.toArray());
elseJOptionPane.showMessageDialog(this,"未查找到满足条件的数据!
try//将其中所有对象写入指定文件
{//指定文件不存在时,表格为空创建新文件
FileOutputStreamfout=newFileOutputStream(this.filename);
//文件字节输出流
ObjectOutputStreamobjout=newObjectOutputStream(fout);
//对象字节输出流
while(it.hasNext())
objout.writeObject((Friend)it.next());//写入一个对象
objout.close();
fout.close();
catch(IOExceptionioe){}
publicvoidwindowOpened(WindowEvente){}
publicvoidwindowActivated(WindowEvente){}
publicvoidwindowDeactivated(WindowEvente){}
publicvoidwindowClosed(WindowEvente){}
publicvoidwindowIconified(WindowEvente){}
publicvoidwindowDeiconified(WindowEvente){}
publicstaticvoidmain(Stringargs[])
newStaffManagementSystem();//默认文件名为"frindes.dat"
4.调试分析
(1)调试过程中问题:
主要是一些框架结构的定义以及一些语法上的应用,通过查找API可以详细知道其意思,并应用到程序中。
(2)需要的改进:
A、实现检查电话号码的位数。
B、增加员工管理系统的修改功能。
C、双击表格一列,能够修改,响应事件保存修改内容。
(3)经验和体会:
这次编写的代码主要是修改别人的代码,在这个过程中虽然没有完全做到自己编写,但是也认真看了,说实话很多都不怎么懂,感觉好多要记忆的东西,比如一些框架的定义,操作动作的语法定义。
经过这几天的练习,表示在编程方面还是要花上很多心思和时间的。
5.测试结果
题目2
求图的最短路径问题
typedefstruct{}MGraph;//定义邻接矩阵结构体
voidShortestPath_DIJ(MGraphG,intv0,PathMatrix&P,ShortPathTable&D)//说明最短路径结构
intLocateVex(MGraphG,charu)//定位邻接矩阵各个顶点是否有误
voidCreateMGraph(MGraph&G)//建立邻接矩阵
#include
#defineINT_MAX2147483647
#defineINFINITYINT_MAX
#defineFALSE0
#defineTRUE1
#defineNumVertices6//图中最大顶点个数
typedefintPathMatrix[NumVertices][NumVertices];//最短路径数组
typedefintShortPathTable[NumVertices];//最短路径长度
typedefintAdjMatrix[NumVertices][NumVertices];
typedefcharVertexType;
typedefstruct{
VertexTypevexs[NumVertices];
AdjMatrixarcs;//邻接矩阵
intvexnum,arcnum;
}MGraph;
intL
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2