版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
车票管理系统(优质文档,可直接使用,可编辑,欢迎下载)
车票管理系统(优质文档,可直接使用,可编辑,欢迎下载)一、课程设计的内容车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次发车时间起点站终点站行车时间额定载量已定票人数18:00郫县广汉2453026:30郫县成都0.54040
37:00郫县成都0.54020410:00郫县成都0.5402…(一)功能要求:用c/c++设计一系统,能提供下列服务:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出"的提示信息)。
(3)查询路线:可按班次号查询,可按终点站查询
(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N—S图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1)需求分析:包括设计题目、设计要求以及系统功能需求分析;2)总体设计:包括系统总体设计框架和系统功能模块图;3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4)调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5)总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6)附录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题.目录TOC\o”1-3"\h\z\u第一章目的与要求5第二章总体设计6第三章详细设计9HYPERLINK\l”_Toc311754130"3.1功能模块设计9HYPERLINK\l”_Toc311754131"3.2数据结构设计11HYPERLINK\l”_Toc311754132"第四章调试分析12HYPERLINK\l”_Toc311754133”第五章总结14第六章附录15HYPERLINK\l”_Toc311754135"参考文献25第一章目的与要求编写目的:便于车站管理部门对汽车班次信息的统计和管理,提高车站部门的工作效率,能够更好的为市民服务,同时也便于旅客了解相关的信息,方便出行.要求:1。能够录入汽车班次信息,如班次号,发车时间,起点站,终点站,行车时间,额载量,已订票人数等。2。能够浏览班次信息,显示信息总和(如果已发出站的要要显示“已经开出”)。3.查询路线:可按班次号查询,可按终点站查询。4.售票功能:当查询出已定票人数小于额定载量且当前系统时间小于发车时间才能售票,自动更新已售票人数.5.退票功能:输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数.第二章总体设计1)系统总体设计框架车票管理系统车票管理系统录入班次信息浏览班次信息查询路线售票退票保存信息退出系统按班次查询按终点站查询录入班次信息浏览班次信息查询路线售票退票保存信息退出系统按班次查询按终点站查询2)主要功能流程图:录入班次信息功能流程图:按y继续录入班次信息录入成功输入错误录入班次输入发车时间输入行车时间输入起点站输入额定载量按任意键返回主菜单按y继续录入班次信息录入成功输入错误录入班次输入发车时间输入行车时间输入起点站输入额定载量按任意键返回主菜单按Y继续查找,按任意键返回主菜单按2终点站查询按1按班次查询进入查询界面浏览班次功能流程图:按Y继续查找,按任意键返回主菜单按2终点站查询按1按班次查询进入查询界面依据提示操作进入售票界面售票系统工作流程图:依据提示操作进入售票界面售票成功班次不存在票已售完车已发出继续售票按Y,返回主菜单按任意键售票成功班次不存在票已售完车已发出继续售票按Y,返回主菜单按任意键第三章详细设计3.1功能模块设计3.1。1售票函数while(选择的是“Y"){打印当前时间打印“班次发车时间起点站终点站行车时间额定载量已定票人数”for(){输出班次信息』提示输入车的班次}if(当查询出已定票人数小于额定载量且当前系统时间小于发车时间时){提示售票成功!订票人数加1;}IF(额定载量小于订票人数){提示票已售完!;}elseif(输入的班次号小于零){该车不存在!}elseif(当前系统时间晚于发车时间){提示车已发出!}提示继续售票按Y,按任意键返回主菜单!输入一个字符;}}3.1。2退票函数while(输入的是Y的时候){提示输入要退票的车次;输入一个字符;}if(输入的班次号存在和系统时间比发车时间晚){订票人数—1;提示退票成功!}elseif(输入的班次号小于零)提示该班次不存在!;)elseif(要退票的那辆车的发车时间早过现在系统时间){提示车已发出不能退票!;提示继续退票请按(Y),返回主菜单按任意键;输入一个字符;}}3.1。3菜单函数{打印“车票管理系统”;打印“系统时间”;打印“录入班次信息”;打印“查询班次信息”;打印“售票”;打印“退票”;打印“保存车次信;”;打印“退出系统”;打印“请选择(0-—6)”;打印“车票管理系统;得到一个字符;返回值;}structBuses{//定义汽车intnumber;structTimestime;charstart[30];charend[30];floattime_cost;intcarry_number;intbooK_number;};数据结构structBuses{//定义汽车intnumber;structTimestime;charstart[30];charend[30];floattime_cost;intcarry_number;intbooK_number;};数据结构2structTimesstructTimes{inthour;intmin;intsec;};数据结构1程序中涉及的数据过多,本人决定采用两个结构体处理数据.其中时间为一个数据结构体(即结构1),它又是汽车结构体(即结构2)的一个成员元素,这样处理数据容易些。第四章调试分析本人在写代码的过程中觉得难控制的是那个班次数.因为本系统提供了个录入信息功能,可以不定时的增加班次,即这个班次数是不确定的。而这个班次数又影响到查询函数,退票函数,售票函数等,另外还影响到一些功能小函数,如比较时间函数等。经过上网查找资料,我发现有一个巧妙的方法可以解决这个问题,即设定一个静态局部变量(即代码中的H),这样每当班次号改变之后这个H的值就和它的班次号一样大,这样就可以解决之前提到的问题了。另外,这个系统要有一个保存文件功能,由于本人对文件保存处理不清楚,设计过程中一直搞不明白。最后在网上查到了相关信息才可以弄出。以下是该程序运行的部分结果:主界面:信息录入图和浏览时刻表:查询售票图:退票图:保存信息图:第五章总结经历近几天的学习和锻炼,这个车票管理系统算是做出来了(不过我承认我是参考网上代码所得,我基本能看懂).它基本有前面提到过的功能,即录入班次信息,浏览班次信息,售票和退票,保存文件。有一个扩展功能,即可以退出系统(代码中的sys_exit()函数)。不过目前我发现它一个不足之出,就是不能对输入时间的格式起限制作用。如我可以输入26:30:00,它系统不会提示说输入错误提示再输入一个正确的时间。还有,就是整个代码条理不够清晰,只是用到一个主函数和调用其他函数,可读性差!我认为最好是能分模块化处理,分文件处理,这样条理性强,可读性高,再者修改也容易.不过由于本人水平有限,不能这样处理。经历这近几天的锻炼,我也比较满意自己的表现。在这过程中我查阅了很多书,学到了很多课堂上没有的东西。很多知识我之前不知道的现在大部分都知道了,不过理解不够深透,,导致在这近几天里碰了不少壁!近几天我觉得编程既是一项费时费力但也是有趣的事。说它费时费力是因为它繁琐,而有趣是因为我很享受一段段的小程序编成功之后的喜悦,苦尽干来啊。我觉得编程是一件快乐的差事,我想我今后会加把时间学习它,把它学好。第六章附录程序代码:#include”stdio。h"#include”time.h"#include"windows.h"#include"string.h”#include"dos.h”#include"stdlib.h”#include"ctype.h”#defineMax50//最大贮赌量#definenull0staticintH=0;structTimes{//定义时钟inthour;intmin;intsec;};structBuses{//定义汽车intnumber;structTimestime;charstart[30];charend[30];floattime_cost;intcarry_number;intbooK_number;};structBusesbus[Max];time_tnow=time(0);tm*tnow=localtime(&now);voidload();//载入车次信息voidlu(void);//声明录入函数voidchaxun(structBusesbus[]);//声明查询路线函数voidsave(structBusesbus[]);//声明保存函数intcaidan();//声明菜单录数voidliulan(structBusesbus[]);//声明浏览函数voidtuipiao(structBusesbus[]);//退票voidshoupiao(structBusesbus[]);//声明售票函数voidxitongtuichu();//声明退出函数//工具函数structBusescopy(structBusesb1,structBusesb2);//赋值voidsort_time(structBusesbus[]);//声明按时间发车的先后顺序排序intcompare_time(structTimest1,structTimest2);//时间比较函数intcompare_systime(structBusesbus,tm*T);//比较发车时间与当前系统时间的函数voidprint(structBusesbus);//声明输入出函数intnumber_search(structBusesbus[],intnum);//声明按班次查询函数intend_search(structBusesbus,charends[]);//声明按终点查询函数voidmain(){//主函数while(1){system(”cls");switch(caidan()){case1:lu();break;case2:liulan(bus);break;case3:chaxun(bus);break;case4:shoupiao(bus);break;case5:tuipiao(bus);break;case6:save(bus);break;case0:xitongtuichu();break;}}}intcompare_systime(structBusesbus,tm*T){//与系统时间的比较函数if(bus.time.hour>=T—〉tm_hour){return1;if(bus.time.min>=T—〉tm_min){return1;if(bus.time.sec>T—>tm_sec)return1;elsereturn0;}return0;}return0;}structBusescopy(structBusesb1,structBusesb2){b1。booK_number=b2.booK_number;b1。carry_number=b2。carry_number;strcpy(b1.end,b2。end);b1.number=b2.number;strcpy(b1.start,b2.start);b1。time。hour=b2.time.hour;b1.time。min=b2。time.min;b1.time.sec=b2.time。sec;b1.time_cost=b2。time_cost;returnb1;}voidliulan(structBusesbus[]){//浏览车次getchar();system(”cls");inti;printf("\n\t\t\t\t车辆时刻表\n");printf(”\t\t\t**************************\n");printf(”\t班次发车时间起点站终点站行车时间额定载量已定票人数”);printf("\n\t—-————-—-——-————--—-—--——-—-———————————-—-———————-—-\n”);sort_time(bus);for(i=0;i<H;i++){print(bus[i]);}printf(”\t——--——--—--—————-——-——-——--——-——-—————-———-—-\n”);printf(”\t\t\t\t%d条记录!\n",H);printf(”\t按任意键返回主菜单。。。");getchar();}intcompare_time(structTimest1,structTimest2){//比较时间大小if(t1.hour〉t2.hour){return1;if(t1.min〉=t2.min){return1;if(t1。sec〉=t2。sec)return1;elsereturn0;}return0;}return0;}voidsort_time(structBusesbus[]){//按发车时间排序inti,j,k;structBusesb={0};for(i=0;i〈H-1;i++){k=i;for(j=i+1;j<H;j++){if(compare_time(bus[i]。time,bus[j]。time)){k=j;if(k!=i){b=copy(b,bus[i]);bus[i]=copy(bus[i],bus[k]);bus[k]=copy(bus[k],b);}}}}}intnumber_search(structBusesbus[],intn){//按班次查询inti;for(i=0;i<H;i++){if(bus[i].number==n)returni;}return—1;}intend_search(structBusesbus,charends[]){//按终点站查询if(strcmp(bus.end,ends)==0)return1;elsereturn—1;}voidprint(structBusesbus){if(!compare_systime(bus,tnow))printf(”\t%-6d%-2d:%—2d:%—2d%6s%8s%8.1f%10d%10d(已发出)\n”,bus.number,bus。time.hour,bus。time.min,bus.time。sec,bus。start,bus.end,bus。time_cost,bus。carry_number,bus。booK_number);elseprintf("\t%—6d%—2d:%—2d:%—2d%6s%8s%8。1f%10d%10d\n",bus。number,bus。time.hour,bus.time。min,bus。time.sec,bus.start,bus.end,bus。time_cost,bus。carry_number,bus.booK_number);}intcaidan(){inta;system(”cls");//以下是菜单图案printf(”\n\n”);printf("\t\t车票管理系统\n");printf(”\t\t*****************(%d年%d月%d日)\n",1900+tnow-〉tm_year,tnow—〉tm_mon+1,tnow—>tm_mday);printf("\t\t|——————————-——————-—————|\n");printf(”\t\t|菜单|\n”);printf(”\t\t|——--——-——-———-————-———-—--———-—-——-———--|\n”);printf(”\t\t|(1)录入班次信息|\n”);printf(”\t\t|-———-——--—--———-———-——-——-—--—-—-————-—--—————|\n”);printf(”\t\t|(2)显示班次信息|\n”);printf("\t\t|-——--—--—--————————-—————-—-——-———--|\n");printf(”\t\t|(3)查询班次信息|\n");printf(”\t\t|——--—--———-————-———-—-——-———-—————————-—|\n");printf(”\t\t|(4)售票|\n”);printf("\t\t|--———-————-———-—————-————————-|\n”);printf(”\t\t|(5)退票|\n”);printf("\t\t|——————--—--—-—-———-——-—-——--—————————|\n”);printf("\t\t|(6)保存车次信息|\n”);printf(”\t\t|--——-———--———--—-—--——--———-——--—|\n");printf(”\t\t|(0)退出系统|\n");printf("\t\t|--——--———-————————-————————-|\n”);printf("\n\t\t请选择(0—6):”);scanf("%d",&a);return(a);}voidsave(structBusesbus[]){//保存函数体getchar();FILE*fp;inti;if((fp=fopen(”Bus_system",”wb”))==null){printf(”不能打开文件\n");return;}for(i=0;i〈H;i++)if(fwrite(&bus[i],sizeof(structBuses),1,fp)!=1)printf(”文件保存出错!\n”);fclose(fp);printf("文件保存成功!”);getchar();}voidlu(){//录入函数inti=H,f=1;charflag='Y';while(toupper(flag)=='Y’){system("cls");printf("\n\t\t车次信息录入\n请输入车的班次:");scanf("%d",&bus[i]。number);getchar();while(number_search(bus,bus[i].number)〉=0){printf("你输入的班次已存在请重新输入!:”);scanf("%d",&bus[i].number);getchar();}printf(”请输入时间如:(20:30:00):”);scanf(”%d:%d:%d",&bus[i]。time。hour,&bus[i]。time。min,&bus[i].time.sec);getchar();printf("请输入车的起点站:");scanf(”%s",bus[i].start);getchar();printf("请输入车的终点站:");scanf(”%s",bus[i]。end);getchar();printf(”请输入行车时间:");scanf("%f”,&bus[i].time_cost);getchar();printf("请输入车的额定载量:");scanf("%d”,&bus[i]。carry_number);getchar();bus[i].booK_number=0;H++;i++;printf(”信息录入成功!\n");printf(”继续录入请按(Y),返回主菜单按任意键...”);flag=getchar();}}voidchaxun(structBusesbus[]){//查询路线inta,i=0;intm=0;charflag=’Y’;while(toupper(flag)==’Y’){charend[30];system(”cls”);printf("\n按班次查询请按1\n终点站查询请按2\n请选择(1—2):”);scanf(”%d",&a);while(a!=1&&a!=2){printf(”注意只能选择1或2!\n请重新输入:”);scanf("%d”,&a);getchar();}switch(a){case1:{printf(”请输入车次号:");scanf(”%d”,&m);getchar();i=number_search(bus,m);if(i>=0){printf("\n\t\t\t\t车辆时刻表\n");printf(”\t\t\t**************************\n");printf(”\t班次发车时间起点站终点站行车时间额定载量已定票人数”);printf("\n\t--——-——--——-—————--——-——--—-——-—-—-—\n");print(bus[i]);printf(”\t—————————-—-————-———-——--——-———--———-————-\n");}elseprintf("\n\t\t\t没有你要查找的记录!\n”);}break;case2:{printf("请输入车的终点站:”);scanf(”%s",end);getchar();while(i〈H){if((m=end_search(bus[i],end))==1){printf(”\n\t\t\t\t车辆时刻表\n");printf("\t\t\t**************************\n");printf("\t班次发车时间起点站终点站行车时间额定载量已定票人数");printf("\n\t——--—--——--——-———-—--—-—-————-—--—-—--—--—-———-————-—-—\n");print(bus[i]);i++;}break;}for(i;i<H;i++){if(end_search(bus[i],end)==1)print(bus[i]);}if(m==1)printf(”\t-——--—--—————--——-—-——-——-——-—--————--———————-——-\n");}for(i=0;i<H;i++){if(end_search(bus[i],end)!=1)printf("\n\t\t\t没有到该站的车!\n");break;}}printf("\t\t继续查找请按(Y),返回主菜单按任意键。。.”);flag=getchar();}}voidshoupiao(structBusesbus[]){//售票函数inti,n;charflag='Y’;while(toupper(flag)=='Y’){system(”cls”);printf("\n\t\t\t\t车辆时刻表\n”);printf(”\t\t\t**************************当前时间(%d:%d:%d)\n”,tnow—>tm_hour,tnow—>tm_min,tnow->tm_sec);printf(”\t班次发车时间起点站终点站行车时间额定载量已定票人数”);printf("\n\t——--——--—-———--——-———-———--——--——-—--——--———-——-———\n");for(intj=0;j〈H;j++){print(bus[j]);}printf("\t—--—-———-——-—-—-———-————--—--——-—-—————--—-————————-\n”);printf(”\t请输入车的班次:");scanf(”%d”,&i);n=number_search(bus,i);getchar();if(n>=0&&bus[n].carry_number〉bus[n].booK_number&&compare_systime(bus[n],tnow)){printf("\n\t\t\t售票成功!\n”);bus[n].booK_number++;printf(”\t班次发车时间起点站终点站行车时间额定载量已定票人数");printf(”\n\t————————-———-——-—-—--—--——————-——————--———--—————-——-\n”);print(bus[n]);printf("\n\t--———-—-———--—--————————-———-——-—--—--——-——-\n”);}if(bus[n]。carry_number<=bus[n]。booK_number)printf("\n\t\t\t该次车的票已售完!\n”);elseif(n<0)printf("\n\t\t\t该次车不存在!\n");elseif(!compare_systime(bus[n],tnow))printf("\n\t\t\t该次已发出!\n”);printf(”\t\t继续售票请按(Y),返回主菜单按任意键。。.");flag=getchar();}}voidtuipiao(structBusesbus[]){//退票函数intn,i;charflag=’Y’;while(toupper(flag)=='Y’){system("cls");printf(”\n\n请输入车次:”);scanf("%d",&n);getchar();i=number_search(bus,n);if(i〉=0&&compare_systime(bus[i],tnow)){bus[i].booK_number--;printf(”\n\t\t\t退票成功!\n”);}elseif(i〈0)printf(”\n\t\t\t该车次不存在!\n");elseif(!compare_systime(bus[n],tnow))printf("\n\t\t\t车已发出不能退票!\n”);printf("\t继续退票请按(Y),返回主菜单按任意键..。");flag=getchar();}}voidload()//载入车次信息{FILE*fp;inti=0;while((fp=fopen("Bus_system","rb"))==NULL)//以rb形式打开文件return;for(i;!feof(fp);i++,H++){if(fread(&bus[H],sizeof(structBuses),1,fp)!=1){}if(feof(fp)){fclose(fp);return;}}fclose(fp);}voidxitongtuichu(){//退出函数system("cls");getchar();charflag=null;printf(”\n\n\t\t你确定要退出并保存信息吗?(Y/N)");flag=getchar();if(toupper(flag)==’Y'){save(bus);exit(0);}elseif(toupper(flag)=='N’)exit(0);elsereturn;}参考文献1、谭浩强编著,C程序设计1991年7月2、裘宗燕著,从问题到程序科学出版社,北京大学出版社,1999年4月。3、刘瑞挺主编,计算机二级教程,南开大学出版社,1996年10月。4、陈朔鹰等编著,C语言程序设计基础教程,兵器工业出版社,1994年9月5、姜仲秋等主编,C语言程序设计,南京大学出版社,1998年1月。6、《C程序设计(第二版)》,谭浩强编,清华大学出版社,1999年12月。7、《C语言程序设计题解与上机指导》,谭浩强编,清华大学出版社,2000年11月.8、《TurboC2.0实用大全》,常玉龙等编写,北京航空航天大学出版社,1994年9月。9、《C语言程序设计习题集(第二版)》,陈朔鹰陈英主编,人民邮电出版社,2003年2月.10、《C语言趣味程序百例精解》,陈朔鹰陈英主编,北京理工大学出版社,1996年.11、《C语言程序设计辅导与习题集》,田淑清等,中国铁道出版社,2000年1月。12、《C语言编程常见问题解答》,[美]PaulS。R。Chishohm等著,张芳妮吕波译,清华大学出版社,11996年12月。C#程序设计财务收支管理系统姓名杨宗坤学院信息与电气工程学院专业计算机科学与技术年级2021学号20212212694指导教师周树森2021年12月12财务收支管理系统杨宗坤(信息与电气工程学院,计算机科学与技术,2021级2班,20212212694)摘要:当今社会越来越朝着信息化和数字化方向发展,计算机的应用领域使我们的生活越来越方便和快捷,可以说我们的每个人生活都离不开计算机的帮助了。越来越多的个人应用软件成为了人们重要的助手,也在潜移默化的改变着我们的生活。财务管理系统是每一个单位管理财务收入和支出的不可缺少的一个管理信息系统,市场上的财务管理软件大多数都面向企业并价格昂贵,或是专门偏向于某一特殊领域,免费的财务管理软件更是少之又少,为了满足中小企业及个体经营者的需求,利用C#语言、ASP.NET、VisualStudio和数据库等开发软件和工具,设计开发了一个具有简单收支管理、登帐统计和查询等基本功能的财务管理系统,经过测试表明,系统可以较为稳定的实现这些基本功能.关键词:财务管理系统;ASP。NET;SQLServer;程序设计;Abstract:
Financial
management
is
an
important
work
of
the
company,
using
computer
to
manage
the
company
financial,
not
only
can
save
time
and
manpower,
more
fully,
effectively
grasp
the
basic
situation
of
corporate
finance,
timely
access
to
the
latest
accurate
data
and
information。This
system
is
for
the
user
to
provide
powerful
data
manipulation
functions,
friendly
interface,
simple
and
convenient
to
use,
based
on
(client
/
server)
mode,The
design
is
reasonable,
function
relatively
complete,
the
test
run
stability,
can
meet
the
need
of
the
work。Keywords:C#.net,Financial
management
system,SQLServer。1引言信息化的飞速发展,促使电脑和网络已经日益影响到了人们的日常和工作过程中,给我们带来了很大的方便,也使人们对电脑依赖性越来越强.各种各样的应用软件系统成为了人民的重要助手和有效工具,明显改变着人民的生活。随着网络的普及,通过手写的方式在纸张上记录一些收支的做法已经逐渐被淘汰,已逐渐被在电脑上记录自己的收支情况的做法所取代。通过VisualStudio2021工具的使用和面向对象C#语言等知识,对财务管理系统的设计慢慢了解,深入学习,从而达到熟练掌握。NET基本结构以及C#语言的基本知识和技能;基本掌握面向对象程序开发的基本思路和方法;根据课题的要求,给出解决问题的方案,通过分析问题、分解问题来解决问题,最终达到熟练掌握C#语言的运用和VisualStudio2021工具的使用。2系统分析2。1系统需求财务收支管理工作随着我国市场经济的发展,在各个企业的管理中扮演着越来越重要的角色,渐渐起到不可替代的核心作用。对于大型企业集团来说,财务管理显得更为重要,财务管理系统的建立将直接受到企业集团管理方式的影响,并直接影响企业的管理效率与经济效益。如何在现有经营环境下选择最佳的财务管理模式,使用最优的财务管理系统,实现企业的管理目标,适应企业信息化发展的需要,是一个值得研究和探讨的问题。Microsoft公司的C#是Windows应用程序开发工具,是目前广泛的、易学易用的面向对象的开发工具。Visual2021提供了大量的控件,并且这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。因此实现本系统Visual2021是一个相对较好的选择。关系型数据库的实现:SQLServer2021就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索.SQLServer2021的优点在于它能使用数据表示图或自定义窗体收集信息,并能对相关系的表进行视图连接,建立视图后可屏蔽一些数据使数据更为安全,并可以建立存储过程以便能够简化前台程序的编写。数据表示可以使数据库一目了然.另外,SQLServer2021用户设定自已的密码保护数据的安全性。SQLServer2021提供对各种数据的约束,使用户输入的数据符合正规的逻辑,并提供各种数据与数据之间的相关性连接,能够级联更新一些相关的数据,更特别的是提供了触发器功能。SQLServer2021是一种关系数据库工具,关系数据库是已开发的最通用的大型数据库之一,运行在服务企上更加安全。如上所述,SQLServer2021作为关系数据库开发具备了许多优点.(2)技术可行性随着国内软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。而这个系统尽管其在组织关系上存在着很大的复杂性,繁琐性,但是就整个系统的技术构成上来看,它还是属于一个数据库应用类的系统。其基本操作还是对存在数据库进行添加、删除、查询、修改等。所以就单纯的数据库应用来看,暂不存在太大的技术问题.(3)经济可行性对于整个系统而言,在系统未运行之前,初期投资比较大,花费相对而言比较多。各部门必须配置电脑、服务器、打印机、机及相关的网络设备,但是在整个系统投入运行之后,因为现在计算机已经普及了,相关的人员培训费可以减少很多.而同时又减少了数据的流通环节,不必要花费那么多的时间,也就是说最重要的是就是提高了效率,而又保证了各项数据的准确性,也避免了工作人员的流动造成的收据丢失等问题,适应了当前的发展形式。(4)管理可行性随着时代的发展,人员素质己逐步提高,不论是对于电脑系统的基本操作还是对于系统的维护都有了一定的基础。同时还可以配置专业的电脑维护人员来维护电脑,不必担心电脑故障问题.2.2用户需求企业管理模式的选择应当是在对整体发展战略、经营情况、企业类型和子公司进行系统分析的基础上进行的,同时企业应充分根据自身发展的需要设计财务管理模式。设计时必须应当遵循以下原则:1。安全性安全性分为系统内部安全、访问安全及与其他系统对接时的安全性。内部安全体现在系统数据库的安全以及非法数据屏蔽等,可通过防火墙、划分网段来防范非法程序对数据库的破坏,对数据库做计划,进行备份,对录入数据进行核查,对不满足条件的内容提示修改,对非法数据进行屏蔽。访问安全体现在对各个部门、各个用户按管理人员的安全策略进行分组管理、控制各组的访问权限以及信息的流向。与其他系统连接时,既要保证内部数据的安全,隔离内外部的信息通道,又要对外部信息资源进行访问控制。为保证整个系统的正常运行,必然要保证系统信息的绝对安全和可靠。2.实用性财务信息管理系统是一个工程项目,而不是研究或实验课题。系统建设的最终目的是服务于财务管理的需要,服务于企业在许可范围内对财务信息的需求。系统的建设应为应用服务.因此,系统的设计和建设应能满足需求并正确无误地高效地运行.3。灵活性系统应设计任意组合的模糊查询功能,提供多方面的查询,以满足各个时期的报表。对复杂数据结构应实现修改一表的数据即可自动修改相关表中的数据,删除一表的数据即可自动删除与之相关的其他表数据,保证数据库中无冗余数据。2。3系统功能通过用户需求分析,根据企业财务工作流程分析,本着模块划分的原则,把系统抽象为3个模块,分别文件系统、用户管理、财务管理。下面是各模块的功能:文件系统:显示登录信息,存储登陆日志,修改密码,退出系统.用户管理:显示用户列表,添加和修改用户,公司部门管理,角色管理,工作性质介绍.财务管理:账单列表,添加和修改账单,显示收支信息以及账单性质.3系统设计登陆3.1模块流程图登陆程序主窗口文件系统程序主窗口文件系统用户管理财务管理登陆日志修改密码员工信息部门管理账单列表登录信息收支明细账单性质采用结构化程序设计的思想,其有以下优点:(1)。自顶向下逐步求精的思想与人类求解复杂问题的思维规律相符,有助于软件系统的分析与设计.(2).采用先抽象后具体、先宏观后微观、先总体后细节的开发过程,使得程序的层次结构清楚,可读性好.(3).单入口、单出口的控制结构,可以保证程序的静态结构与其动态执行流程基本相似,程序的可维护性好.(4)。良好的模块化特性支持软件部件的重用。3.2模块功能说明1.登录窗口:验证用户后打开程序管理窗口;2.程序管理主窗口:为父窗体,在此窗体内显示财务管理及主要功能模块;3。程序管理子窗口:主窗口各模块下的子功能窗体;4。登陆信息修改窗口:对用户信息进行修改。4系统模块4.1登陆设计模块图1登陆界面本界面是用户登录系统的界面,当用户提交登录信息,对用户进行身份及权限判断,再转入不同的页面。当用户名或密码、权限输入错误,会提示错误。输入用户名或密码错误后会显示如下界面:图2登陆界面4。2主界面模块窗口设计图3主窗口该窗口为父窗体,可以在此窗口内显示财务管理系统三个主要模块信息.用户在登陆界面按了输入正确账号密码的登陆按钮就可以转到此界面。4。3登录信息窗口图4登录信息窗口该窗口为用户登陆信息显示窗口,能显示用户登陆的时间,员工账号,上次登陆时间等信息.4。4用户管理窗口图5用户列表窗口该窗口显示员工信息,部们编号,职位等信息。图6修改员工信息窗口该窗口可以修改员工用户各种信息。图7员工性质查询窗口该窗口可以查询员工的性质名称,类别以及显示工作性质列表。图8收支列表窗口该窗口显示公司以及各员工收支明细,包括收支人,时间地点,以及增删查改等操作。能够清楚的显示该公司的收支情况。图9财务性质管理窗口该窗口可以对公司财务收支性质信息进行管理。4.4修改用户密码窗口图10密码修改窗口该窗口可以修改用户密码.5核心代码描述5。1c#连接数据库的方式:(1)配置文件链接.利用VS.NET开发平台进行开发的时候将会经常遇到要和数据库打交道,存取数据。这就涉及到和数据库的连接问题,。NET开发平台为我们提供了一种简单的方式来定义和数据库连接的字符串。这就是在Web.Config文件中添加连接字符串.(2)代码连接.#是一个语言,ASP.NET是一个平台,上面支持用C#或者VB。NET写代码。连接Access,SQLServer,Oracle,还有Excel数据库。本程序采用第一种连接方式,下面是主要源代码:〈?xmlversion="1.0”encoding=”utf—8”?〉〈configuration〉<configSections></configSections〉〈connectionStrings〉<addname="ConnectionString”connectionString=”DataSource=OHU0SRPYXFXPE5O;InitialCatalog=MySystem;UserID=sa;Password=123456”providerName="System.Data.SqlClient"/></connectionStrings>〈/configuration〉其中,name的值ctionStrings代表字符串的名称,DataSource代表数据库的实例名,UserID和Password分别代表用户名和密码.如果有多个数据库的连接,还可以在<appSettings〉标签之下添加多个<add。.。..。。>节.这样只需在配置文件中定义一次就可以在之后的数据库存取中多次重复利用这个设置.5.2登陆界面主要代码namespaceWinForm{publicpartialclassFrmLogin:Form{MySystem.DAL.Employeedal=newMySystem。DAL。Employee();MySystem.Model。Employeemodel=newMySystem。Model.Employee();MySystem。DAL。EmployeeLoginLogdallog=newMySystem.DAL。EmployeeLoginLog();MySystem.Model。EmployeeLoginLogmodellog=newMySystem。Model.EmployeeLoginLog();publicFrmLogin(){InitializeComponent();}privatevoidFrmLogin_Load(objectsender,EventArgse){}privatevoidbtn_OK_Click(objectsender,EventArgse){publicstaticintExecuteNonQuery(stringsqlstr,paramsSqlParameter[]parameters){using(SqlConnectionconn=newSqlConnection(connStr)){using(SqlCommandcmd=newSqlCommand(sqlstr,conn)){try{conn。Open();if(parameters!=null){foreach(SqlParameterparainparameters){cmd.Parameters。Add(para);}}introws=cmd.ExecuteNonQuery();cmd。Parameters。Clear();returnrows;}catch(System。Data.SqlClient。SqlExceptione){throwe;}}在编程中经常需要给程序制作一个登陆界面,在用户打开程序后首先弹出登陆窗口,如果输入正确的用户名和密码,才能登陆成功进入正式的程序界面。5.3修改用户账号密码namespaceWinForm{publicpartialclassFrmUpdatePassword:Form{MySystem。DAL。Employeedal=newMySystem。DAL。Employee();MySystem.Model。Employeemodel=newMySystem.Model。Employee();publicintEid=0;publicFrmUpdatePassword(){InitializeComponent();}privatevoidFrmUpdatePassword_Load(objectsender,EventArgse){BindDataList();}privatevoidBindDataList(){model=dal.GetModel(Eid);if(model==null){btn_OK.Enabled=false;MessageBox。Show(”没有此员工信息","错误",MessageBoxButtons。OK,MessageBoxIcon.Error);}}publicboolCheckParams(){if(string.IsNullOrEmpty(txt_Password。Text。Trim())){MessageBox.Show(”请输入原密码");returntrue;}if(string。IsNullOrEmpty(txt_NewPassword.Text。Trim())){MessageBox.Show("请输密码”);returntrue;}if(string.IsNullOrEmpty(txt_NewPassword2.Text.Trim())){MessageBox。Show("请确认新码?”);returntrue;}if(!txt_NewPassword.Text。Trim()。Equals(txt_NewPassword2。Text.Trim())){MessageBox.Show(”两次输入新密码"returntrue;}returnfalse;}#endregionprivatevoidbtn_OK_Click(objectsender,EventArgse){boolb=CheckParams();if(b){return;}if(!string。Equals(txt_Password.Text.Trim(),model。LoginPassword。Trim(),StringComparison.Ordinal)){MessageBox.Show("原密码输入错误”);return;}model.LoginPassword=txt_NewPassword。Text.Trim();introws=dal.Update(model);if(rows>0){BindDataList();MessageBox.Show(”成功);}else{MessageBox。Show(”失败”);}}privatevoidbtn_Cancel_Click(objectsender,EventArgse){this.Hide();}}}5。3c#的三层架构usingSystem.Reflection;usingSystem。Runtime。CompilerServices;usingSystem.Runtime.InteropServices;[assembly:AssemblyTitle(”MySystem.DAL”)][assembly:AssemblyDescription("")][assembly:AssemblyConfiguration("”)][assembly:AssemblyCompany(”super8”)][assembly:AssemblyProduct(”MySystem.DAL”)][assembly:AssemblyCopyright(”Copyright©super82021")][assembly:AssemblyTrademark(”")][assembly:AssemblyCulture("")][assembly:ComVisible(false)][assembly:Guid(”e0d8d0ee-bd5b—4811-8268—30c6e0397bd4")][assembly:AssemblyVersion(”1。0。0。0”)][assembly:AssemblyFileVersion(”1。0。0.0")]DALDataAccessLayer数据访问层,这个层应该是负责程序与数据中心(除了数据库,还有存储数据的文件等)的交互,也就是将数据的增删改查的操作封装起来供其它层直接使用,这样一来,做此层的开发人员只需要关心数据,而不用关心业务逻辑;BLLBusinessLogicLayer业务逻辑层,这个层是负责程序的业务逻辑,也就是对程序具体功能模块和程序执行流程的实现。此层的开发人员只需要关心程序的业务逻辑,而不需要关心数据是哪里来的,是怎么取得的等问题;而DbHelp,这个也应该是包含在DAL里面的(注意是包含,而不是说DbHelp就是DAL),DbHelp一般是一个类,此类一般会提供数据库访问的通过属性和方法。简单的说,DAL需要做的是从数据源取数据和向数据源存数据,并将这些按需要分成不同的方法提供给其它层(如BLL);BLL需要做的是将程序的功能实现,需要数据的时候调用DAL提供的取数据方法,保存数据的时候调用DAL的存数据方法.代码中DAL主要是对数据库中的内容的操作,在这里就是向数据库中添加用户.BLL则主要是调用DAL层的操作,返回DAL层添加用户的结果(true或者false)。这样也就是在客户端与数据库中加了一个中间层,使得两层的依赖性减小。UI层则主要完成响应用户的需求,去调用BLL层实现的adduser方法,DAL层就是实实在在做这件事情的操作.6总结在设计这个课题的过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在.因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决.这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。其次,这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名计算机科学与技术专业的学生,这次课程设计是很有意义的.更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新世纪版选修4化学下册月考试卷含答案
- 2024版居间协议融资居间合同
- 二零二五年度虚拟现实游戏开发合同补充协议
- 2025年青岛版六三制新八年级化学下册阶段测试试卷
- 二零二五年度降水井工程安全管理与培训合同范本3篇
- 2025年沪教版八年级地理下册阶段测试试卷含答案
- 2025年粤人版八年级化学下册阶段测试试卷含答案
- 2025年华东师大版五年级数学上册阶段测试试卷含答案
- 2025年牛津译林版一年级语文上册月考试卷
- 2025年鲁科五四新版七年级地理上册月考试卷
- 班组安全培训试题含完整答案(各地真题)
- 《论语》中的人生智慧与自我管理学习通超星期末考试答案章节答案2024年
- 2022版义务教育物理课程标准
- 期末测试-2024-2025学年语文四年级上册统编版
- 全国国家版图知识竞赛题库及答案(中小学组)
- 初中语文《国学经典》校本教材
- 江西省外经贸融资担保有限公司招聘笔试题库2024
- 2024年国家公务员考试行政职业能力测验真题及答案
- 2024年便携式储能行业分析报告
- 2024-2025学年广东省广州市广州大附中初三3月教学质量监测考试数学试题(理甲卷)版含解析
- 科研伦理与学术规范期末考试试题
评论
0/150
提交评论