资源描述
*******************
实践教学
*******************
兰州理工大学
计算机及通信学院
2011年秋季学期
面向对象课程设计
题 目:中小企业账务处理系统设计及实现
专业班级: 计算机科学及技术4班
姓 名: 马真
学 号: 10240436
指导教师: 朱红蕾
成 绩:_______________
目 录
摘 要 I
序 言 II
一、系统分析 1
1.1编写目 1
1.2项目背景 1
1.3功能概述 1
1.4数据字典 3
1.5功能需求 3
1.6属性 4
1.7其他需求 4
二、系统总体设计 4
2.1应用背景 4
2.2定义 4
2.3程序描述 5
2.3.1功能 5
2.3.2性能 5
2.3.3输入项目 5
2.3.4输出项目 5
2.3.5程序逻辑 5
设计总结 11
参考文献 12
致 谢 13
29 / 34
摘 要
本软件是简单实用公共软件。考虑到系统构架简单,且主要实现主要模块,提供清晰设计框架,本文档在先做出概要设计前提下,然后在概要设计基础上进行扩展和详细描述,完成主要模块详细设计。该系统包括该系统界面友好,操作简便,能完成添加企业账务,企业账务明细修改,企业账务删除等功能,开发本系统总体任务是实现财务管理自动化和系统化,帮助管理人员更好更高效完成财务管理工作。
关键词:中小企业,账务管理,信息管理;
序 言
一个企业账务管理是公司各项管理中最为重要,也是最为繁琐部分。公司账务管理主要包括以下几方面内容:企业账务添加,其中包括进账信息及其、明细出账信息及其明细;企业账务明细修改;企业账务明细删除;账务资料查询,如按照账务流水号查询,按照日期查询等。还有就是账务汇总、也是最重要部分,可以按照各种方式汇总,如按照流水账号汇总.按照日期汇总.按照流水号和日期汇总等。实现账务管理规范化和自动化是十分必要。我们这个系统开发就是为了这一需求而开发。
这是一个相对较小管理软件,因此对操作系统及运行环境要求并不明显,主要是软件开发及运行要有相关数据库支持。
在开发工作前期,必须要有严格数据库建立过程,这体现在,要提前完成数据采集及整理,之后在保证数据准确性基础上实施数据录入工作,并且最终完成数据库要根据操作权限支持增加、删除、修改、查询等功能。在此基础上才可进一步实现软件开发工作。
一.系统分析
我设计账务管理系统是一个相对较小应用系统,所以对原有设备影响不太明显,一般而言,我们日常所使用操作设备足以运行这个软件。而且,使用这个管理系统会使用户和原来相比节省很多时间,使工作更高效。由于用户通过使用此系统会更快完成工作,所以整个开发环境会因系统使用节省很多人力、物力,从而进入更有效工作运行状态。经分析可知开发这个项目经费预算并不高昂;再者,通过使用此软件会节省人力物力方面开支,换句话说,就等于挽回了相当一部分经费支出,所以说对经费支出影响是乐观。
1.1编写目
随着社会经济快速发展,账务管理已经成为企业管理重要一部分,因为账务管理及经济或财富保值增值有关,是企业财富决策,企业生存、发展、获利总目标离不开财务筹资、投资以及对资金运用管理。其次,账务管理目标是制定生产目标、销售目标等一系列目标基础和前提,这使得账务管理在企业管理中处于一个核心地位,账务管理目标将从根本上反映企业总目标。所以确定一个合理账务管理目标对企业长远发展有着极为重要意义。
1.2项目背景
(1) 项目名称:账务管理系统
(2) 用户: 中小型企业
1.3功能概述
本系统可分为系统管理模块、进出账务模块、账务资料模块以及账目汇总模块.
各个模块功能描述:
系统管理模块:系统管理部分包括数据库备份和恢复以及用户管理,包括添加新用户和更改当前用户密码以及退出系统。
进出账务模块:进出账务模块用来添加进账资料、进账明细、出账资料及出账明细。
账务资料模块:账务资料模块用来对账务资料进行管理,包括增加账务明细、修改账务
明细、删除账务明细,以及账务资料查询,包括按流水号查询和按日期查询。
账目汇总模块:账务汇总模块用来按照各种要求汇总账目,包括按照账目汇总、按照日期汇总、按照客户汇总、按照账目+日期汇总、按照日期+客户汇总等。
系统结构图如图所示:
添加入账信息
进出账务管理
财务管理系统
添加出账信息
添加明细账务
修改明细账务
账务信息管理
删除明细账务
按流水号查询
账务信息查询
按日期查询
按账目汇总
按日期汇总
账务信息汇总
按客户汇总
按账目日期汇总
按日期客户汇总
图3.1 系统结构图
1.4 数据字典
下面给出是本系统主要数据元素数据字典卡片:
1.帐目名称
名字:帐目名称
别名:无
描叙:业务帐目名
格式:字符串
位置:财务信息表
2.管理员姓名
名字:管理员姓名
别名:姓名
描叙:管理员的姓名。
书写形式:姓+名字
格式:字符串
位置:管理员信息表
1.5功能需求
本系统开发主要是为了方便企业对账务方面管理,使企业在账务方管理方面更加安全、公开、透明和快捷。
本系统主要功能:进出账务管理、账务信息管理、账务信息查询以及账目汇总。
账务管理是为实现企业目标服务,并受账务管理内容制约。基本任务是依法合理筹资并有效利用企业各项资产,最终提高效益。企业账务管理任务有以下几个方面:
1 依法合理筹集资金,满足企业资金需要量。
2 有效地分配和使用企业资金,提高资金利用效率。
3 分配企业收益,协调各方面经济关系。
4 实行账务监督,维护财经法规。
1.6属性
易操作,页面中重要部分带有详细说明,采用严格用户注册模块,确保系统安全性,需要管理员定期为数据库备份,能在不同操作系统中运行。
1.7其他需求
用户能方便对系统进行设置以及一些具体操作。
当系统出现故障是,能够提供友好信息,并对问题进行记录,保证不丢失数据;
管理员通过修改服务器代码和数据库解决等。
二、系统总体设计
2.1背景
a.名称:账务管理系统。
用户:中小型企业
b.本项目及其他软件或其他系统关系:工作于Windows 2000以上所有系统。
2.2 定义
程序流程图:又叫程序框图,它是历史最悠久使用最为广泛描述工程设计方法,然而它也是用得最混乱一种方法。
2.3程序描述
2.3.1功能
账务基本信息和财务更新信息录入、修改、查询、删除模块,财务更新信息录入、修改、查询、删除模块,以及系统维护功能。
2.3.2性能
此系统开发时为了加快公司内部账务计算和管理。
2.3.3输入项目
查询时:输入要进行查询条件
修改时:输入要进行修改数据
添加时:在对应数据界面输入要输入财务项目信息
用户注册时:输入用户注册信息
2.3.4输出项目
查询时:输出用户查询信息
修改时:输出修改是否成功
添加时:输出信息添加是否成功
用户注册时:输出注册是否成功
2.3.5程序逻辑
1)用户登陆模块程序流程(如图5.1)
开始
输入用户信息
信息审查
密码正确
用户不存在
密码不正确
结 束
n>3
n+1->n
1->n
F
账号是存在
T
F
T
T
F
图5.1用户登陆模块程序流程
2)数据查询程序流程图(如图5.2)
开 始
选择查询的方式
输入查询条件
输出查询结果
结 束
数据信息汇总
图5.2数据查询程序流程图
3)注册程序流程图(如图5.3)
开 始
输入用户信息
2次密码一致
注册成功
结 束
用户存在
账号成在
T
F
图5.3注册程序流程图
4)用户密码修改(如图5.4)
开 始
输入信息
两次新密码的一致性
修改成功
结 束
输入不正确
判断账号和密码的正确性
图5.4用户密码修改
。
2.3.6接口
1.存储设备接口:用于系统备份及恢复。
2.用户接口:用于输入数据命令接口,提示用户是否执行将要处理操以便得到确认。
3.数据库访问接口:为系统工作基础、信息支持。
4.查询接口:为用户提供直接界面。
设计总结
通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计基本目,在于通过理论及实际结合、人及人沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要高素质复合型人才。
作为整个学习体系有机组成部分,课程设计虽然时间紧迫,但并不具有绝对独立意义。它一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到系统化理论知识,尝试性地应用于实际设计工作,并从理论高度对设计工作现代化提出一些有针对性建议和设想。检验学习成果,看一看课堂学习及实际工作到底有多大距离,并通过综合分析,找出学习中存在不足,以便为完善学习计划,改变学习内容及方法提供实践依据。
对我们计算机专业学生来说,实际能力培养至关重要,而这种实际能力培养单靠课堂教学是远远不够,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况及实际需要差距,并在以后学习期间及时补充相关知识,为求职及正式工作做好充分知识、能力准备,从而缩短从校园走向社会心理转型期。
课程设计达到了专业学习预期目。在一个星期课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要是通过对软件开发流程了解,进一步激发了我们对专业知识兴趣,并能够结合实际存在问题在专业领域内进行更深入学习。
参考文献
[1]初小璐.完全掌握SQL Server 2000 [M] 机械工业出版社,2004
[2]Jeraod V.Post.数据库管理系统(英文版.第三版)[美]清华大学出版社,2006.1
[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998.1
[4]谢希仁.计算机网络(第二版)[M].北京:电子工业出版社,2003.6
[5]戴志诚,赵国峰.JSP信息化系统建设案例[M].北京:人民邮电出版社,2006.12
[6]成晓静,毕靖.网页设计三剑客完全学习手册[M].北京:中国电力出版社,2004.11
[7]赵强.精通JSP编程[M].北京:电子工业出版社,2006.3
[8]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2002.2
致 谢
在财务管理系统开发过程中,我首先要感谢所有帮助过我老师和同学,没有他们大力支持和帮助,我系统开发将不会如此顺利完成,在系统开发过程中,他们提出了许多宝贵意见,对系统开发有着至关重要性。我还要感谢同学们向我们提出一些珍贵建议,使我系统变得更加完善。 另外,还要感谢张其文老师对我指导,没有他灌输理论知识和实践指导,我不可能开发出这个系统。
附录:源代码
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <windows.h>
//文件保存路径
#define "Myinfor.dat"
#define "Myinfor.txt"
//查询用声明
#define Status int
#define OK 1
#define Error 0
#define NotFound 2
typedef struct {
int jczwgl;//进出账务管理
int zwxxgl;//账务信息管理
int zwxxcx;//账务信息查询
int zwxxhz;//账务信息汇总
} Infor;
typedef struct {// 查询用自定义数据类型
int no;
int data;
}pType;
void menu(void); //菜单
void input(Infor *newI); //接收键盘输入
void writeinfor(Infor *newI);//向文件内写入内容
void changeFormat(void );//将dat格式文件转换为txt文件
Status search(Infor *a);//查询函数[返回查询结果及查询状态]
void paixu(Infor *a);//对查询据结果排序
void modify(Infor *a,int mon);//修改数据
void delRecord(int mon);//删除数据
void main()
{
while(1)
{
menu();
}
}
void menu(void)
{
int item;
int mon;
Infor *a;
a=(Infor *)malloc(sizeof(Infor));
do{
printf("\n…………中小企业账务管理系统设计…………\n\n");
printf("\t\t1.录 入 数 据。\n");
printf("\t\t2.查 看 数 据。\n");
printf("\t\t3.修 改 数 据。\n");
printf("\t\t4.查 询 数 据。\n");
printf("\t\t5.排 序 数 据。\n");
printf("\t\t6.删 除 数 据。\n");
printf("\t\t0.退 出 系 统。\n\n");
printf("请输入要进行操作: " );
scanf("%d",&item);
}while(item>6 || item<-1);
switch(item)
{ //退出程序
case 0: getchar();//保存界面
getchar();
exit(1);
break;
//录入数据
case 1: input(a);
writeinfor(a);
break;
//查看数据
case 2: changeFormat();
break;
//修改数据
case 3: item=search(a);
mon=a->month;
if (item!=OK) printf("\n没有符合条件记录!\n");
else
{
printf("\n进出账务管理 账务信息管理 账务信息查询 账务信息汇总\n");
printf("----------------------------------------------------------------------- \n");
printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->jczwgl,a->zwxxgl,a->zwxxcx,a->zwxxhz);
input(a);
modify(a,mon);
}
break;
//查询数据
case 4: item=search(a);
if (item!=OK) printf("\n没有符合条件记录!\n");
else{
printf("\n进出账务管理 账务信息管理 账务信息查询 账务信息汇总 \n");
printf("----------------------------------------------------------------------- \n");
printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->jczwgl,a->zwxxgl,a->zwxxcx,a->zwxxhz);
}
break;
//排序数据
case 5: item=search(a);
if (item!=OK) printf("\n没有找到符合排序条件记录!\n");
else
paixu(a);
break;
//删除数据
case 6:
item=search(a);
mon=a->month;
if (item!=OK) printf("\n没有符合条件记录!\n");
else
{
printf("\n进出账务管理 账务信息管理 账务信息查询 账务信息汇总 \n");
printf("----------------------------------------------------------------------- \n");
printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->jczwgl,a->zwxxgl,a->zwxxcx,a->zwxxhz);
delRecord(mon);
}
break;
}
free(a);//释放内存空间
}
void input(Infor *newI)//接收从键盘输入数据
{
printf("\n请依次输入数据[说明:中间以空格符隔开]:\n(进出账务管理 账务信息管理 账务信息查询 账务信息汇总)\n");
scanf("%d%d%d%d%d%d%d%d",&newI->jczwgl,&newI->zwxxgl,&newI->zwxxcx,&newI->zwxxhz);
fflush(stdin);
}
void writeinfor(Infor *newI)//向文件内写入内容
{
FILE *fp;
fp=fopen(,"ab+");
if(fp==NULL)
{
printf("无法创建文件:%s",);
exit(0);
}
fwrite(newI,sizeof(Infor),1,fp);//这里可以做特别处理可防止存在同一月份有2条以上记录问题。这里就不写了。
fclose(fp);
printf("数据录入成功!\n");
}
void changeFormat(void) //暂时只能操作一行文件有待改进
{
FILE *fp1,*fp2;
Infor *a;
a=(Infor *)malloc(sizeof(Infor));
fp1=fopen(,"rb+");
if(fp1==NULL)
{
printf("无法找到文件:%s\n",);
return ; //返回主函数
}
fp2=fopen(,"wt+");
if(fp2==NULL)
{
printf("无法创建文件:%s\n",);
return ; //返回主函数
}
fputs(" \n……………………………………中小企业账务管理系统……………………………………\n\n",fp2);
fputs("\n进出账务管理 账务信息管理 账务信息查询 账务信息汇总 \n",fp2);
fputs("----------------------------------------------------------------------- \n",fp2);
printf("\n进出账务管理 账务信息管理 账务信息查询 账务信息汇总 \n");
printf("----------------------------------------------------------------------- \n");
rewind(fp1);
fread(a,sizeof(Infor),1,fp1);
while(!feof(fp1))//从原文件[.dat]中读数据写入显示文件[.txt]中
{
printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->jczwgl,a->zwxxgl,a->zwxxcx,a->zwxxhz);
fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8d\n",a->jczwgl,a->zwxxgl,a->zwxxcx,a->zwxxhz);
fread(a,sizeof(Infor),1,fp1);
}
fputs("----------------------------------------------------------------------- \n",fp2);
fputs("关闭本程序继续原程序!\n",fp2);
fclose(fp1);
fclose(fp2);
system(); //调用打开转换文本文件
remove();//删除文本文件文件
}
Status search(Infor *a)
{
FILE *fp1;
int mon;
int isfound=0;
printf("请正确输入要查询月份:");
scanf("%d",&mon);
fflush(stdin); //清除缓冲区
fp1=fopen(,"rb+");
if(fp1==NULL)
{
printf("无法找到文件:%s\n",);
return Error; //返回主函数
}
rewind(fp1);
fread(a,sizeof(Infor),1,fp1);
while(!feof(fp1))//查询操作
{
if(a->month==mon)
{
isfound=1;
break;
}
else
{
isfound=0;
}
fread(a,sizeof(Infor),1,fp1);
}
fclose(fp1);
if(isfound)
return OK;
else
return NotFound;
}
void paixu(Infor *a)
{
int i=0,j=0,flag=0,t;
pType px[8]={{0,0}};
char str[8][10]={"进出账务管理","账务信息管理","账务信息查询","账务信息汇总"};
for(;i<8;i++)
px[i].no=i;
px[0].data=a->jczwgl;
px[1].data=a->zwxxgl;
px[2].data=a->zwxxcx;
px[3].data=a->zwxxhz;
for(i=1;i<8;i++)//冒泡排序
{
flag=0;
for(j=0;j<8-i;j++)
if(px[j].data>px[j+1].data)
{
t=px[j].data;
px[j].data=px[j+1].data;
px[j+1].data=t;
t=px[j].no;
px[j].no=px[j+1].no;
px[j+1].no=t;
flag=1;
}
//输出结果
if(flag==0) break;
}
printf("\n");
for(i=0;i<8;i++)
{
printf(" %s",str[px[i].no]);
}
printf("\n----------------------------------------------------------------------- \n");
for(i=0;i<8;i++)
{
printf("%8d ",px[i].data);
}
printf("\n");
}
void modify(Infor *a,int mon)//修改数据
{
FILE *fp1,*fp2;
Infor *b;
b=(Infor *)malloc(sizeof(Infor));
fp1=fopen(,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Infor),1,fp1);
while (!feof(fp1))//重写数据
{
if(b->month==mon)
{
fwrite(a,sizeof(Infor),1,fp2);//修改数据
}
else
{
fwrite(b,sizeof(Infor),1,fp2);
}
fread(b,sizeof(Infor),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(); //删除源文件
rename("temp.dat",);//重命名中间文件
printf("修改数据成功!\n" );
changeFormat(); //显示数据
}
void delRecord(int mon) //删除数据
{
FILE *fp1,*fp2;
Infor *b;
b=(Infor *)malloc(sizeof(Infor));
fp1=fopen(,"rt");
fp2=fopen("temp.dat","wt+");
rewind(fp1);
fread(b,sizeof(Infor),1,fp1);
while (!feof(fp1)) //重写数据
{
if(b->month!=mon)
fwrite(b,sizeof(Infor),1,fp2);
fread(b,sizeof(Infor),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(); //删除源文件
rename("temp.dat",);//重命名中间文件
printf("删除数据成功!\n" );
changeFormat(); //显示数据
}
展开阅读全文