1、储户和管理员通过此登录系统进入各自的页面对信息进行操作。3用户登陆界面(void menu()以及管理员登录界面(void menu_1()通过界面来选择想要操作的内容。4. 储户信息录入函数,包括链表的建立和信息的保存(linklist creat()、save(linklist h) 实现储户信息以链表的形式录入并保存到文件中,即我们所说的记账。5. 储户信息读出函(Node *show() 实现的功能是按照账号和密码对储户所存储的信息从所存文件中读出。6储户信息的查询函数,包括按月份查询和按日期查询。(Node *search() 实现用户针对自己信息的查询,可以查询当月的账户信息,也可
2、以查询当天的账户信息。7. 储户信息插入函数,包括两个函数,一个是单纯实现插入功能,另一个是在此系统中实现的插入功能。(linklist insert()、Insert(linklist h) 实现储户信息插到原信息并且显示出来的功能。8. 信息修改函数,包括两个函数,一个是单纯实现修改,另一个是在此系统中实现对信息的修改功能(linklist recr(linklist h)、void Recr() 通过该函数管理员可以对储户的数据信息进行修改。9. 信息排序函数,包括两个函数,一个是单纯实现排序,另一个是在此系统中实现对信息的排序。(在此只举按月份查询的例子linklist sort_mo
3、n(linklist head)、void Sort_M() 该函数实现的功能是对储户信息中各个项目按一定的顺序进行排序(默认为升序)。10. 信息删除函数,包括两个函数,一个是单纯实现修改功能,另一个是在此系统上实现对信息修改的功能。(linklist recr(linklist h)、void Recr() 该函数可以对储户过期的信息进行删除操作。11. 储户密码修改函数 (int res() 可以实现对储户的密码进行修改;12. 显示函数 (Node *print(linklist h) 实现的是显示目前所有的有效储户记录信息。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运
4、行当中循环执行所有的功能,并根据需要终止程序的执行。四、详细设计1.功能函数的调用关系图2、功能函数流程(1)信息录入函数(2)、信息查询函数(3)、信息修改函数(4)信息删除函数(5)信息插入函数(6)信息排序函数3、重点设计及其代码1、链表的创建 linklist creat()/链表创建 linklist head; Node *r,*p; int x; head=(linklist)malloc(sizeof(Node);/尾插法 head-next=NULL; r=head; do p=(Node *)malloc(sizeof(Node); printf(请输入账户编号 :n);
5、scanf(%s,p-num);请输入月份:%d,&p-Date.mon);请输入日期:Date.day);请输入进账数目:%finacc);请输入出账数目:outacc); r-next=p; r=p;是否继续录入?/利用x来判断是否再次录入 flushall();x); while(x); r- return head;2、信息保存于文件 void save(linklist h) / 储户信息保存 FILE *fp; Node *j; if(fp=fopen(D:/account.txt,wt)=NULL) 文件打开失败!按任意键退出! getch(); exit(1); for(j=h
6、-next;j!=NULL;j=j-next) fprintf(fp,%s %d %d %f %fn,j-num,j-Date.mon,j-Date.day,j-inacc,j- fclose(fp); printf(文件保存成功!按任意键返回 getch();3、信息从文件中读出 linklist head; Node *r,*s; int n;rt读出文件出错! exit(1); while(!feof(fp) s=(Node *)malloc(sizeof(Node); fscanf(fp,s-num,&s-Date.mon,&Date.day,&inacc,&next=s; r=s;n
7、文件中信息已经正确读出!4、信息显示Node *print(linklist h)/储户信息显示 Node *q;账户信息为: 账户编号 月份 日期 进账 出账n for(q=h-q!q=q-t%st%dt%dt%ft%fn,q-num,q-Date.mon,q-Date.day,q-inacc,q- return h;5、信息查询 Node *h,*p; int date,x; h=show(); p=h- *n 1 按月份查询 n 2 按日期查询 n请输入1or2 n scanf( switch(x) case 1:printf(请输入您要查询的月份:date); while(p!=NUL
8、L) if(p-Date.mon=date) return p; else p=p- case 2:请输入您要查询的日期:Date.day=date) return NULL;5、信息插入 FILE *fp; fp=fopen(at+ if(fp=NULL)插入失败!插入成功!6、信息修改 char num20; int inf; float acc; Node *p;请输入您要修改的账户信息编号: flushall();,num); if(p=NULL)信息为空,无法修改! while(p! if(strcmp(p-num,num)=0) printf( *n 1 修改月份n 2 修改日期n
9、 3 修改进账数目n 4 修改出账数目n *n请按1-4选择n scanf( switch(x) case 1:请输入新月份: scanf(inf); p-Date.mon=inf; return h; break; case 2:请输入新日期:Date.day=inf; case 3:请输入您修改后的进账数目:acc);inacc=acc; case 4:请输入您修改后的出账数目:outacc=acc; p=p-7、信息排序,在此仅拿按照月份排序举例。Node *pri, *mid, *tai, *p; p=head- while(p != NULL) mid = head- if(head
10、-Date.mon next-Date.mon)next = mid- mid-next = head; head = mid; pri=head; mid=head- tai=mid- while(mid-next! if(mid-Date.montai- pri-next=mid-next=tai- tai-next=mid; pri=pri- mid=pri- p=p-8、信息删除 Node *q,*r; q=p- r=p; if(q=NULL) return 0;请输入需要删除的账户编号: while(q! if(strcmp(q-next=q- free(q); return p;
11、r=q; q=q- return p;9. 密码修改 char pkey20; char nkey20; char rnkey20; char name20;/key.txt请输入您的注册名:,name); fprintf(fp,请输入原始密码:,pkey);请输入修改后密码:,nkey);文件打开失败,按任意键推出!请再次输入修改后密码:,rnkey);%sn修改密码成功!按任意键返回n请选择1:重新登录,0:退出系统 system(cls if(x) char n_name10; char n_key20; n * n 欢迎登录银行个人账户管理系统 n * n 请输入您的姓名:,n_nam
12、e); 请输入您的密码:,n_key); fscanf(fp,/从文件中读出,若和输入的相同则修改成功,若不相同,则修改失败! if(strcmp(rnkey,n_key)=0&strcmp(name,n_name)=0)成功登录! menu(); return 1; else输入密码错误! return 0; Return0;五测试数据及运行结果一、用户登录数据演示1.直接登录的情况下注册的情况下2.用户登录成功后可进入选择界面3.数据录入4.信息显示5.信息查询,分按月份查询和按日期查询查询月份,5月按日期查询6.修改密码修改密码后重新登录7.退出二、管理员登录数据演示进入管理员界面1.
13、显示用户的信息2. 对用户信息进行追加,也就是插入3.对用户信息进行排序,按月份排序 按日期排序 按进账数目进行排序 按出账数目进行排序4. 信息删除 5.信息修改,分为修改月份 修改日期 修改进账数目 修改出账数目错误数据演示:1.用户名或密码错误时2.查询输入错误数据时3. 所删除的信息不存在时六、调试情况,设计技巧及体会1. 这个系统是第一次做,对于一些基本功能的需求都可以实现,这也加强了我对C语言这学期所学到的知识的理解和应用,果然要讲理论知识应用到实际中是一件很有挑战性的事。对于这个系统我觉得做的特别粗糙,作为一个课件来演示的话还可以,但是真正应用到实际生活中缺陷很大,比如没有设置余
14、额查询系统,这是这个系统最大的缺陷,由于我的有些知识还未掌握熟练,所以没有做这个系统,很是遗憾。2. 本次课设,我感受很多。深刻地懂得了理论联系实际的重要性。在课设过程中,我发现了自己有很多欠缺的地方,比如:涉及的相关知识不全面,知识学得不够透彻,在课设时就会遇到重重困难,它启示着我在以后的学习中要精益求精,对有用的知识要做到深入研究。在本次课程设计中,要感谢老师对我的指导,对于一些自己无法修正的错误通过老师的讲解让我对于C语言的理解更加透彻,也体会到细节决定成败,一个很小的错误可能导致整个程序无法运行。同时要十分感谢两个同学,杨文鹏和冯鹏飞同学,对我的帮助特别大,尤其是杨文鹏同学教会我函数功
15、能放到系统中如何实现的方法,给我打通了一条写C语言程序的思路,让我将学来的知识能够灵活运用,还有冯鹏飞同学为我耐心讲解链表的插入方法,以及帮我改正一些语法和逻辑上的错误,这些都是我通过这次课程设计而收获到的宝贵财富。通过这次课程设计,我发现用一些字母下划线等组合起来的小小程序可以实现强大的功能是一件特别让人惊喜的事情,提升了我对C语言学习的兴趣,在以后的学习中,我相信自己会更加努力,彻底学好C语言这门课程。七、参考文献 C程序设计实例教程金林樵主编 机械工业出版社C程序设计(第三版)谭浩强 清华大学出版社 C语言课程设计案例精编郭翠英 中国水利水电出版社八、附录(源代码)#includestr
16、ing.h#includeconio.hstdlib.h/*int load();/登录系统void menu();/用户登录菜单void menu_1();/管理员登陆菜单linklist creat();/链表创建void save(linklist h);/ 储户信息保存Node *show();/储户信息的读出Node *print(linklist h);/储户信息显示Node *search();/进行信息查询/linklist insert();/插入系统/void Insert()/大插入,完成功能的实现res();/密码修改系统功能linklist recr();/信息修改系统功能void Recr();/信息修改系统功能实现过程/linklist sort(linklist head)/排序/void Sort();/大排序Node *del(Node *p);/信息删除系统功能void Del();/信息删除系统功能实现过程*/struct date int mon; int day;typedef struct basic_inf struct date Date; float ina
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1