数据结构课程设计—西文图书管理系统(共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()
【数据结构课程设计—西文图书管理系统】推荐阅读:
数据结构课程设计新版10-05
数据结构课程设计安排01-23
数据结构课程设计教学大纲计科09-27
数据结构课程标准10-06
数据结构课程改革08-23
数据库技术课程设计08-10
机械原理课程设计原始数据11-26
网络数据库课程设计11-27