数据结构课程设计—西文图书管理系统

2025-02-21|版权声明|我要投稿

数据结构课程设计—西文图书管理系统(共2篇)(共2篇)

1.数据结构课程设计—西文图书管理系统 篇一

数据库设计.................................................................2 3.1 专门术语的定义...................................................2 3.1.1 系统中常用的术语(或使用频率较高的术语).........................2 3.1.2 表格定义及规范.................................................2 3.1.2.1数据约定.....................................................2 3.1.2.2表和表字段命名规范:.........................................3 3.2 数据设计.........................................................3 3.2.1 数据流程图设计.................................................3 3.2.2实体关系结构设计...............................................4 3.3安全保密设计.....................................................6 3.3.1 逻辑上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格与功能模块相关性分析.........................................7 3.5 表格定义.........................................................7 数据库设计

3.1 专门术语的定义

暂无

3.1.1 系统中常用的术语(或使用频率较高的术语)暂无

3.1.2 表格定义及规范 3.1.2.1数据约定

所有数据项都用英文、汉语拼音或缩写表示,数据库名称除外。

所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串;数值型的默认值为数值0;逻辑型的默认值为数值0;

其中:系统中所有逻辑型中数值0表示为“假”;数值1表示为“真”。datetime、smalldatetime类型的字段没有默认值,必须为NULL。当字段定义为字符串形时建议使用varchar而不用nvarchar。建议在大多数表中(如报销单,申请单),应都有以下字段: 字段名说明类型默认值 CreatorID创建者int CreatedTime创建时间DatetimeNULL 字符集采用 UTF-8,请注意字符的转换。

所有数据表第一个字段都是系统内部使用自动序列主键列,自增字段,不可空,名称为:id,确保不把此字段暴露给最终用户。

除特别说明外,所有字符串字段都采用varchar(50)类型,(无论汉字还是英文,都算一个字符)。

除特别说明外,所有小数的字段都采用 decimal(18,2)的形式表达。

除特别说明外,所有日期格式都采用 datetime 格式(根据需要提取时间格式); 除特别说明外,所有整形都采用 bigint 格式。除特别说明外,所有字段默认都设置为 null。3.1.2.2表和表字段命名规范:

命名规则约束的范围包括:数据库的命名、表的命名及字段的命名。数据库相关的命名规则采用与通常的编程的变量命名规则原则一致,具体要求如下: 1)字段名及表名为典型的名词结构; 2)中文名称要求语言精练、文法严谨;

3)望文知意、易懂易用,禁止采用如:A002这种命名;

4)主体采用拼音字母的首写字母拼写构成,基于惯常法可适度采用无词义歧义性的英文命名;

5)长度不少于3个字母,不大于12个字母;

6)在对于拼音首字母类似的字段和表,为区别,添加下划线和数字如男性人数:NXRS,女性人数:NXRS_2。

3.2 数据设计

绘制数据流程图的目的是为了方便开发人员与用户的交流,以及为系统的设计提供依据。数据流程图的绘制过程通常采用自顶向下,逐层分解,直到功能细化为止,形成若干层次的数据流程图。3.2.1 数据流程图设计

0层数据流图

1层数据流图

3.2.2实体关系结构设计

图书实体关系

读者实体关系

图书借阅关系实体

用户实体关系

图书类别实体关系

3.3安全保密设计

3.3.1 逻辑上的安全保密

1、系统对非法使用者的安全保密处理措施

2、系统对正常使用者的安全保密处理措施

3、系统对管理员的安全保密 3.3.2 物理上的安全保密

1、数据库系统异常时的还原处理措施

2、设备遭异常毁坏时的安全防护措施

3、数据参数做到及时更新,保证系统正常运行

3.4 表格与功能模块相关性分析

3.5 表格定义

a.图书信息表

b.读者信息表

c.借阅表

d.管理员_书籍

e.管理员_学生

2.数据结构课程设计—西文图书管理系统 篇二

static boolean isDelete = true;

static boolean isFind = true;

public static void main(String [] args)//主方法,程序从这里开始运行

throws IOException,NumberNotFoundException

{

int choice=-1;

do{

LittleProgram lp = new LittleProgram();

System.out.println();

System.out.println(“t

#”);

System.out.println();

System.out.println(“tt通訊錄管理系统”);

System.out.println(“t

请用号码插入,查找,修改,删除数据”);

System.out.println();

System.out.println(“t

#n”);

System.out.print(“1.增加号码:n”+

“2.查找号码:n”+

“3.删除号码:n”+ “4.清除所有号码:n”+ “5.把号码全部打印到屏幕n”+ “6.把通讯录按号码排序n”+

“7.修改号码n”+

“8.统计通码讯录的总人数n”+

“9.关于作者n”+

“0.退出程序.n” +

“输入:”);

BufferedReader in =

//从终

new BufferedReader(//端接

new InputStreamReader(System.in));//收数

String inputLine = in.readLine();

//字选

choice= Integer.valueOf(inputLine).intValue();//项;

switch(choice)

{

case 1: {//1.增加号码

String str = lp.inputData();

lp.addData(str);

System.out.println(“增加号码成功.”);

timeOut(1);

}break;

case 2: {//2.查找号码

long find = 0;

System.out.print(“请输入你要查找的号码:”);

BufferedReader inn =

new BufferedReader(new InputStreamReader(System.in));

String inputLi = inn.readLine();

find = Integer.valueOf(inputLi).longValue();

lp.findData(find);

timeOut(2);

}break;

case 3: {//3.删除号码

long deleteNumber = 0;

System.out.print(“请输入你想删除号码:”);

BufferedReader bf =

new BufferedReader(new InputStreamReader(System.in));

String inputL = bf.readLine();

deleteNumber = Integer.valueOf(inputL).longValue();

lp.deleteData(deleteNumber);

if(isDelete)

System.out.println(“删除号码成功!”);

timeOut(1);

}break;

case 4: {

lp.clearData();//4.清除所有号码

timeOut(1);

}break;

case 5: {

print();//5.把号码全部打印到屏幕

timeOut(2);

}break;

case 6: {

lp.numSort();//6.把号码按号码排序

System.out.println(“按照号码从小到大排序成功!n”+

“排序后:n”);

print();

timeOut(2);

}break;

case 7: {

lp.rewrite();//7.修改号码

timeOut(2);

}break;

case 8: {

int count = lp.count();

System.out.println(“共有”+count+“个号码记录.”);

timeOut(2);

}break;

case 9: {

System.out.print(“tt李雪萍n”+

“tt安徽理工大學理學院n”+

“ttQQ:1154646392n”);

timeOut(4);

}break;

}}while(choice!= 0);

System.out.println(“Bye!^-^”);

System.exit(0);

}

public String inputData()//从终端接收数据的方法,返回字符串

throws IOException,NumberFormatException

{

System.out.print(“请依次输入 :号码 姓名 地址 生日n” +

“每项数据请用空格隔开:”);

String all = “";

try{

BufferedReader in =

//从终

new BufferedReader(//端接

new InputStreamReader(System.in));

//收数

String inputLine = in.readLine();

//据

StringTokenizer str =

new StringTokenizer(inputLine,” “);//接收的数据用空格隔开,这个类用来提取每个字符串

long num = Integer.valueOf(str.nextToken()).longValue();//号码

String name =(String)str.nextToken();

//姓名

String add =(String)str.nextToken();

// 地址

String birth =(String)str.nextToken();//出生年月

all = String.valueOf(num)+” , “+

name +” , “+

add +” , “+

String.valueOf(birth);//把所有的数据用” , “隔开然后在连起来放进字符串all

}catch(IOException e){}

catch(NumberFormatException e){}

return all;//返回字符串all

}

public void addData(String str)//增加号码的方法

throws IOException

{

String s1 =”“,s2=”“ ,s3= ”“;

File file = new File(”c:data.txt“);

if(file.exists())//如果文件data.txt存在 {

try{

BufferedReader in =

new BufferedReader(new FileReader(file));

while((s1=in.readLine())!=null)

s2+=s1+”n“;//把文件中的每行数据全部放进一个字符串s2

s2+=str+”n“;

//再把s2于形参str相连放进s2

BufferedReader in2 =

//把字符

new BufferedReader(//串s2也

new StringReader(s2));

//就是原

PrintWriter out =

//文件+

new PrintWriter(//形参str(新输入的一行数据)

new BufferedWriter(//重新写进data.txt

new FileWriter(file)));

//覆盖原来的数据

while((s3=in2.readLine())!= null)

{

out.println(s3);

}

out.close();

//System.out.println(”write data true.“);

}catch(IOException e){}

}else{

System.err.println(”File “data” Missing!“);

}

}

public void clearData()//清除data.txt的所有数据的方法

throws IOException

{

File file = new File(”c:data.txt“);

if(file.exists())//如果文件在{

try{

PrintWriter out =

new PrintWriter(new BufferedWriter(new FileWriter(file)));

out.print(”“);//在文件data.txt里写进一个空字符,所以清除了原来的内容

out.close();//关闭文件

System.out.println(”clear data true!“);

}catch(IOException e){}

}else{

System.err.println(”File “data” Missing!“);

}

}

public void deleteData(long deleteNumber)//删除某条号码数据

throws IOException,FileNotFoundException

{

isDelete = true;

try{

DataMap mp = new DataMap();//生成一个自己编写的容器

long j=0;

String s1=”“,s2=”“,s3=”“;

BufferedReader in =

new BufferedReader(new FileReader(”c:data.txt“));

while((s1=in.readLine())!=null)

{

j=numberTokenizer(s1);

mp.put(j,s1);

}

try{

if(mp.containsKey(String.valueOf(deleteNumber).toString()))

{

mp.remove(deleteNumber);

}else

throw new NumberNotFoundException();

Collection c = mp.values();

Iterator iter = c.iterator();

while(iter.hasNext())

{

s1 =(String)iter.next();

s3 +=s1+”n“;

}

BufferedReader in2 =

new BufferedReader(new StringReader(s3));

PrintWriter out =

new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

//System.out.println(”delete No“+deleteNumber);

while((s1 = in2.readLine())!=null)

{

out.println(s1);

} out.close();}catch(NumberNotFoundException e){

isDelete = false;

System.out.println(deleteNumber+” no found :(“);

}

}catch(IOException e){}

}

public long numberTokenizer(String s)

throws IOException

{

StringTokenizer st =

new StringTokenizer(s,” “);

return Integer.valueOf((st.nextToken())).longValue();

}

public void findData(long find)//查找数据

throws IOException,NumberNotFoundException

{

isFind = true;

String s = ”“,findString =”“;long i;DataMap dm = new DataMap();BufferedReader in =

new BufferedReader(new FileReader(”c:data.txt“));

while((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

//in.close();

try{

if(dm.containsKey(String.valueOf(find).toString()))

{

findString = dm.get(find);

System.out.println(”学号“+find+”学生的资料是:“);

System.out.println(findString);

}else

throw new NumberNotFoundException();

}catch(NumberNotFoundException e){

System.out.println(find+” no found :(“);

isFind = false;

}

}

public static void print()//读取文本文件把数据打印到终端的方法

throws IOException

{

try{

BufferedReader in =

new BufferedReader(new FileReader(”c:data.txt“));

String read = ”“;

while((read = in.readLine())!=null)

System.out.println(read);

}catch(IOException e){}

}

public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能

{

double seconds = sec;

long t = System.currentTimeMillis()+(int)(seconds*1000);

while((System.currentTimeMillis())

;

}

public void numSort()//按学号排序

throws IOException

{

long i = 0;

String s = ”“;

try{

DataArrayList dal = new DataArrayList();

BufferedReader in =

new BufferedReader(new FileReader(”c:data.txt“));

while((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

Collections.sort(dal);

DataMap dm = new DataMap();

BufferedReader in2 =

new BufferedReader(new FileReader(”c:data.txt“));

while((s=in2.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

PrintWriter out =

new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

Iterator it = dal.iterator();

long temp = 0;

String tempStr = ”“;

while(it.hasNext())

{

temp = Integer.valueOf((String)it.next()).longValue();

tempStr = dm.get(temp);

out.println(tempStr);

}

out.close();

}catch(IOException e){}

}

public void rewrite()

throws IOException,NumberNotFoundException

{

try{

System.out.print(”请输入你要修改的学生号码:“);

BufferedReader in =

new BufferedReader(new InputStreamReader(System.in));

String inputLine = in.readLine();

long num = Integer.valueOf(inputLine).longValue();

findData(num);

if(isFind)

{ deleteData(num);System.out.print(”请重新输入该号码:“);String str = inputData();

addData(str);

System.out.println(”rewrite true!“);

}

}catch(IOException e){}

catch(NumberNotFoundException e){}

}

public int count()

throws IOException

{

DataArrayList dal = new DataArrayList();

try{

String s = ”“;

long i =0;

BufferedReader in =

new BufferedReader(new FileReader(”c:data.txt“));

while((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

}catch(IOException e){}

return dal.size();

} } /* *

* @author RangWei * TODO 这是个写的一个容器,继承公共类HashMap * 大概的功能就相当一个数组

*

*/ class DataMap extends HashMap//一个存储数据的Map

{

public void put(long i,String str)//把学号和数据放进这个Map

{

//以后一个学号(key)对应的是一个人的数据(value)

put(String.valueOf(i).toString(),str);

}

public void remove(long i)//接收学号,然后删除学号(key)和它对应的数据(value)

{

remove(String.valueOf(i).toString().toString());

}

public String get(long i)//接收一个学号,然后返回这个key对应的value

{

String s = String.valueOf(i).toString();

if(!containsKey(s))

{

System.err.println(”Not found Key: "+s);

}

return(String)get(s);

} } /*

*

* @author RangWei * * TODO 这个类继承ArrayList * 用来按数字排序,在用号码排序时要用到它

*

*/ class DataArrayList extends ArrayList {

public void add(long num)

{

String numToString = String.valueOf(num).toString();

add(numToString);

} } /* *

* @author RangWei * * TODO 增加的一个Exception,主要是在文件里没有要找

* 的号码就抛出

*

*/ class NumberNotFoundException extends Exception {

public NumberNotFoundException()

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:我的书架高一作文950字下一篇:转职能转作风转方式

付费复制
学术范例网10年专业运营,值得您的信赖

限时特价:7.99元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题