java课程设计通讯录系统Word格式.docx
《java课程设计通讯录系统Word格式.docx》由会员分享,可在线阅读,更多相关《java课程设计通讯录系统Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
![java课程设计通讯录系统Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/27/628dce84-e1ff-45f2-b28f-fb2c9a9e7d80/628dce84-e1ff-45f2-b28f-fb2c9a9e7d801.gif)
(4)查询功能:
主页面搜索栏可根据号码、姓名、分组等进行搜索
(5)退出程序:
点击菜单栏中的文件选项,选择关闭功能
图2-1功能结构图
第三章软件环境介绍
3.1开发环境
本次项目的软件环境基于开源软件的使用基础上开发的,所以使用的开发环境是:
前台使用JSP+CSS开发,后台使用JSP+MySQL做为基础,使用JavaBean对数据进行存取。
如图3-1所示:
图3-1前台与后台关系
3.2开发工具
①集成开发环境:
MyEclipse2014;
②服务器:
ApacheTomcat;
③数据库:
MySQL;
④数据库管理系统:
NavicatMySQL;
⑤JavaBean开发使用:
JDK
3.3MySql数据设计
表3-1数据表
字段名称
数据类型
说明
Number
Varchar
电话号码
Name
姓名
Partition
分组
QQnumber
QQ号码
Email
电子邮箱
第四章测试运行
程序运行界面
电话号码查询系统一共分为3部分,分别是菜单栏、查询栏、显示框。
菜单栏由“文件”、“编辑”、“视图”组成,“文件”菜单有关闭功能键,“编辑”菜单有新建、删除、修改功能键,“视图”菜单有顺序显示和分类显示。
如图4-1所示
图4-1运行界面
新建功能
选择编辑—新建功能,填写号码信息后点击确定后即可保存。
图4-2新增页面
修改功能
点击要修改的单元格所在的行,然后点击编辑修改键开始修改信息,点击确定后即可保存。
图4-3修改页面
顺序显示
手机号码按从小到大的顺序排列显示。
图4-4顺序显示页面
分组显示
按分组的类别显示,同分组的元素在一起。
图4-5分组显示页面
搜索功能
可以按照手机号码,姓名、分组等进行搜索。
图4-6搜索页面
第五章总结与分析
通过完成一个小程序,不仅发现了自己在java知识中的不足,对java更加了解,还能够增加自己的变成经验,增强对逻辑思维的运用能力。
在本次课程设计的过程中,详细阐述了整个网站的设计思路,并对各部分设计周期进行了详尽的分析,最终达成了一个完整的设计方案;
在文章的最后,还根据数据库系统的调试结果,提出了可以进一步改进的部分,以便在以后的学习工作中得到更好的完善。
以及在投入实际应用后网站可以更加稳定可靠的工作。
通过这段时间的课程设计,完成了“电话号码查询系统”的设计,更重要的是又复习了一遍JSP知识,看了许多关于JSP的书,不仅丰富了知识,而且从中学到了编程思想,相信通过这次课程设计,对以后的学习和程序设计会有很大的帮助。
第七章参考文献
[1]张志峰等,《JSP程序设计实训与案例教程》,清华大学出版社.2013
[2]荣钦科技,《JSP动态网站开发与实例》,清华大学出版社.2012
[3]黄梯云,《管理信息系统》,高等教育出版社.2013
[4]曾凡奇等:
《基于Internet的管理信息系统》,中国财政经济出版社,2011
[5]易荣华:
《管理信息系统》,高等教育出版社,2014
[6]张靖:
《管理信息系统》,高等教育出版社,2013
[7]张国锋:
《管理信息系统》,机械工业出版社,2012
第八章程序源代码
类PhoneNumber
publicclassPhoneNumber{
privateStringNumber;
privateStringName;
privateStringPartition;
privateStringQQNumber;
privateStringEmail;
publicPhoneNumber(){}
publicStringgetNumber(){
returnNumber;
}
publicStringgetName(){
returnName;
publicStringgetPartition(){
returnPartition;
publicStringgetQQNumber(){
returnQQNumber;
publicStringgetEmail(){
returnEmail;
publicStringgetPretreatment(intStyle){
StringKey=null;
switch(Style){
case1:
Key=getNumber();
break;
case2:
Key=getName();
case3:
Key=getPartition();
}
returnKey;
classNumberExceptionextendsException{
publicStringwarningString(){
return"
电话号码不符合编码规则!
"
;
publicbooleanisNumeric(Stringstr){
Patternpattern=("
[0-9]*"
);
return(str).matches();
publicbooleansetNumber(Stringnumber){
();
StringStr=(0,3);
try{
if(!
isNumeric(number))
thrownewNumberException();
catch(NumberExceptione){
(null,()+"
号码为:
+number);
returnfalse;
if(()!
=11)
catch(NumberExceptione){
intnum=(Str);
if(num<
130||num>
139)
{
num/=10;
if(num!
=15||num!
=18)
thrownewNumberException();
}
Number=number;
returntrue;
publicbooleansetName(Stringname){
Name=name;
returntrue;
publicbooleansetPartition(StringStr){
Partition=Str;
publicbooleansetQQNumber(Stringqqnumber){
QQNumber=qqnumber;
classEmailExceptionextendsException{
publicStringwarningString(){
电子邮箱格式错误!
publicbooleansetEmail(Stringemail){
StringStr=(()-4);
if(!
("
))
thrownewEmailException();
if(('
@'
)<
1)
Email=email;
catch(EmailExceptione){
(null,());
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
etPretreatment(Style);
if((Key))
((pt));
returntempPhoneNumberList;
publicbooleanaddNumber(PhoneNumberphoneNumber,intIndex){
if((phoneNumber))
thrownewOperatingException();
catch(OperatingExceptione){
for(intpt=0;
pt<
();
pt++)
if((pt).getNumber().equals()))
thrownewOperatingException();
if(Index>
=())
Index=();
(phoneNumber,Index);
publicbooleanremoveNumber(StringphoneNumber){
intIndex=0;
if((pt).getNumber().equals(phoneNumber))
Index=pt;
=())
(Index);
publicbooleanmodifyPhoneNumber(PhoneNumberphoneNumber){
if((pt).getNumber().equals())){
(pt);
(phoneNumber);
}
(phoneNumber))
publicVector<
PhoneNumber>
sortPhoneNumber(Vector<
phoneNumberList,StringKeyStr){
Vector<
tempPhoneNumberList=newVector<
(10,3);
for(intIndex=0;
Index<
Index++)
if((Index).getPartition().equals(KeyStr))
((Index));
rankVector(Vector<
phoneNumberList){
();
((0));
Index++){
intpt;
booleanflag=true;
for(pt=0;
pt++){
if((Index).getNumber()pareTo(pt).getNumber())<
0)
break;
for(inti=0;
i<
i++)
if((i).getNumber().equals(Index).getNumber()))
flag=false;
if(flag)
((Index),pt);
etMnemonic(MenuChar[0][Index]);
for(IndexI=0;
IndexI<
MenuItem[Index].length;
IndexI++){
Menu[Index].add(MenuItem[Index][IndexI]);
MenuItem[Index][IndexI].setMnemonic(MenuChar[Index+1][IndexI]);
MenuItem[Index][IndexI].setAccelerator("
ctrl"
+MenuChar[Index+1][IndexI]));
Menu[1].insertSeparator
(1);
Menu[2].insertSeparator
(1);
JPanelpanel=newJPanel();
JPanelpanel2=newJPanel();
textField=newJTextField(20);
(true);
String[]s={"
号码"
"
姓名"
分组"
};
combobox=newJComboBox(s);
button=newJButton("
搜索"
(newBoxLayout(panel,);
(combobox);
(textField);
(button);
(newBoxLayout(panel2,);
(View);
(panel);
(panel2);
(spane);
Stringpath="
FileReaderfr=newFileReader(path);
BufferedReaderreader=newBufferedReader(fr);
StringtempStr=newString();
tempStr=();
PhoneNumber[]phoneNumber=newPhoneNumber[5];
tempStr!
=null;
phoneNumber[pt]=newPhoneNumber();
Vector<
String>
rowData=newVector<
(5);
phoneNumber[pt].setNumber(tempStr);
(tempStr);
tempStr=();
phoneNumber[pt].setName(tempStr);
phoneNumber[pt].setPartition(tempStr);
phoneNumber[pt].setQQNumber(tempStr);
phoneNumber[pt].setEmail(tempStr);
(rowData);
phoneNumber[pt]);
();
catch(IOExceptione){
(null,e);
(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intStyle=()+1;
StringKeyStr=();
phoneNumberList=(KeyStr,Style);
intflag=()-1;
for(inti=0;
flag;
(()-1);
for(intpt=0;
pt++){
Vector<
(pt).getNumber());
(pt).getName());
(pt).getPartition());
(pt).getQQNumber());
(pt).getEmail());
(rowData);
();
});
MenuItem[0][0].addActionListener(newActionListener(){
JMenuItemItem=(JMenuItem)();
(0);
MenuItem[1][0].addActionListener(newActionListener(){
classJ_TableextendsJFrame{
publicDefaultTableModelm_data;
publicJTablem_view;
publicPhoneNumberphoneNumber;
publicJ_Table(){
super("
新建"
p