c语言 学生消费管理系统 课程设计.docx
- 文档编号:12916555
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:25
- 大小:174.21KB
c语言 学生消费管理系统 课程设计.docx
《c语言 学生消费管理系统 课程设计.docx》由会员分享,可在线阅读,更多相关《c语言 学生消费管理系统 课程设计.docx(25页珍藏版)》请在冰点文库上搜索。
c语言学生消费管理系统课程设计
摘要
WIN—TC是一个TC2WINDOWS平台开发工具。
其主要特色有:
(1)可以用来编辑、编译和运行C语言程序;
(2)在Windows下编辑C代码,可以利用WINDOWS支持剪贴版和鼠标的特点,使C语言程序编写从此变得简单;
(3)支持语法加亮功能,还可以设置不同的颜色和背景颜色;
(4)用户可以自由设置编辑风格,进行编译配置的设置;
(5)提供行标记数功能,可方便地找到某行代码;
(6)具有查找定位、替换的功能;
(7)内嵌了中文和英文两种不同的编译器版本,任由用户选择;
(8)系统提供ASCII码表,可以方便地进行查询。
利用它可以对管理系统工作中的大量数据进行有效的管理并满足数据检索的需要。
本系统就是通过WIN—TC开发的一个生活消费管理系统,进而来实现对生活消费信息准确、高效的管理和维护。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成消费管理的全过程,包括数据录入、数据查看、数据修改、数据查询、数据排序、数据删除等管理工作。
本文主要介绍了本课题的开发背景,以及所要完成的功能和开发过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:
消费管理系统,WIN-TC/C
1需求分析
随着社会经济的发展,大学生已经成为这个社会上一个很重要的团体,而他们的消费情况也越来越多的被更多的人关注,大学生自己也应当管理好自己的消费内容,让自己的消费更加合理化,提高自己生活的质量。
在这种情况下,就需要一个软件对大学生每月的消费情况作一个较为详细的统计,该系统可以实现由计算机代替人工执行吸血复杂而且较为繁琐的操作,从而使大学生们能够更为便捷地管理自己的消费,也为其他的一些调查研究提供了方便。
1.1数据需求分析
本系统的主要数据信息有大学生每个月的具体消费记录,包括:
吃饭消费,电话话费,买书花费,旅游花费,勤工俭学收入,节约费用,本月总花费.
1。
2功能需求分析
本系统主要实现对大学生每月的各项花费的信息进行管理,需要实现以下几个方面的管理功能:
(1)数据的录入,可根据用户的消费情况,录入一个月份的消费记录。
(2)数据的查看,可以查看到用户录入的全部月份的消费记录。
(3)数据的修改,可以根据用户的需要,修改某一月份的消费记录。
(4)数据的查询,可以根据用户的需要,查询到某一月份的消费记录。
(5)数据的排序,可以实现对某一月份的消费记录进行升序排列.
(6)数据的删除,可以根据用户的需要,删除用户不需要的某一月份的消费记录.
2系统总体设计
2.1系统模块划分
本系统主要是对大学生消费情况的管理,包括了有关数据的录入、查看、修改、查询、排序删除等功能。
整个系统分为以下几个模块。
1、主界面模块
本模块提供大学生消费系统的主菜单界面,供用户选择与执行各项管理工作。
2、录入模块
本模块用于录入用户的具体某一月份的各项消费记录,例如吃饭消费,电话话费,买书花费,旅游花费,勤工俭学收入,节约费用等。
3、查看模块
本模块用于用户查看自己已经录入的各项信息,包括用户每个月份的各项消费情况。
4、修改模块
本模块用于用户对自己已经录入的信息进行修改,修改具体某一月份的信息。
5、查询模块
本模块用于用户查询到自己已经录入的信息中某一月份的各项记录
6、排序模块
本模块用于对用户已经输入的某一月份的各项记录按数值进行升序排列。
7、删除模块
本模块用于用户对自己已经录入的数据进行删除。
2.2系统模块结构图
根据系统功能设计,对应的系统模块结构图如图1所示:
图1系统模块结构图
公共模块如图2所示:
图2公共模块结构图
3系统详细设计
3.1系统排序实现设计
这次的课程设计我所做的是排序模块.大学生消费管理系统的排序模块设计为用户提供排序功能的实现,在用户进入主模块,执行了录入数据后,便可对录入的数据进行排序.
进入主界面后,用户会看到如下页面:
············“我的大学"生活管理消费系统············
1.录入数据
2.查看数据
3.修改数据
4.查询数据
5.排序数据
6.删除数据
1.退出系统
请输入要进行的操作:
_
输入1后进行数据的录入,然后还会显示主页面,这时,用户可以选择5进行对数据的排序,关于排序的代码如下:
voidpaixu(Infor*a)
{
inti=0,j=0,flag=0,t;
pTypepx[8]={{0,0}};
charstr[8][14]={”记录月份",”吃饭消费","电话话费”,”买书花费",”旅游花费”,”勤工俭学收入","节约费用”,”本月总花费”};
for(;i<8;i++)
px[i]。
no=i;
px[0]。
data=a—>month;
px[1].data=a—〉cfxf;
px[2]。
data=a—〉dhhf;
px[3].data=a->mshf;
px[4].data=a—〉lyhf;
px[5].data=a->qgjxsr;
px[6]。
data=a—〉jyfy;
px[7]。
data=a—>byzhf;
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;j
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”);
}
3.2系统各个功能的实现
3。
2。
1数据录入界面设计
在主界面中输入“1",单击回车,将会看到如下界面:
由于DOS运行时无法截屏,所以将代码中的汉字改成了英文字母,然后运行,中文的意思如下:
请依次输入数据[说明:
中间以空格符隔开]
(记录月份 吃饭消费 电话消费 买书花费 旅游花费 勤工俭学收入 节约费用 本月总花费)
假设我们输入如下字符:
2300100140250200280800
单击回车,将看到在界面的下边有如下字符:
数据录入成功!
运行的结果如上图所示。
3。
2.2系统排序界面设计
进入主界面,输入“5”然后回车,你将会见到如下页面:
请正确输入要查询的月份:
如果您输入的月份在之前录入的时候并没有录入该月份的记录,则系统就会提示如下字符串:
没有符合条件的记录!
如下图:
如果您输入的月份在之前录入数据时已经录入了该月份的记录,则会对该月份的各项记录进行升序排列。
假设您输入2,而2月份的各项记录值如下:
记录月份 吃饭消费 电话消费 买书花费 旅游花费 勤工俭学收入 节约费用 本月总花费
2300100140250200280800
则会出现的排序结果为:
记录月份电话消费买书花费勤工俭学收入旅游花费节约费用 吃饭消费本月总花费
2100140200250280300800
3。
2。
3系统删除界面设计
在主界面中输入“6”,单击回车,将看到在主界面下有如下字符:
请正确输入要查询的月份:
请正确输入要查询的月份:
—————————--————-————-—-——-——-———
假设我们输入“2",即可看到如下字符串:
删除数据成功!
假如之前录入数据时没有录入2月份的记录,则系统会提示出:
没有符合条件的记录!
运行如下:
具体实现参照源程序。
3。
2.4退出系统
在主界面中输入“0”,连击两次回车,可看到如下字符串:
Pressanykeytocontinue···
然后敲击键盘任意键,即可退出.
具体实现见源程序。
3.3系统程序清单
#include h〉 #include h> #defineFilePath1"Myinfor。 dat” #defineFilePath2"Myinfor.txt" #defineStatusint #defineOK1 #defineError0 #defineNotFound2 typedefstruct{ intmonth; intcfxf; intdhhf; intmshf; intlyhf; intqgjxsr; intjyfy; intbyzhf; }Infor; typedefstruct{ intno; intdata; }pType; voidmenu(void); voidinput(Infor*newI); voidwriteinfor(Infor*newI); voidchangeFormat(void); Statussearch(Infor*a); voidpaixu(Infor*a); voidmodify(Infor*a,intmon); voiddelRecord(intmon); voidmain() { while (1) { menu(); } } voidmenu(void) { intitem; intmon; 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"); printf("请输入要进行的操作: "); scanf(”%d”,&item); }while(item>6||item<-1); switch(item) {case0: getchar(); getchar(); exit (1); break; case1: input(a); writeinfor(a); break; case2: changeFormat(); break; case3: 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—>month,a->cfxf,a—>dhhf,a->mshf,a-〉lyhf,a—>qgjxsr,a—〉jyfy,a->byzhf); input(a); modify(a,mon); } break; case4: 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—>month,a—>cfxf,a—〉dhhf,a—〉mshf,a—>lyhf,a—〉qgjxsr,a-〉jyfy,a—〉byzhf); } break; case5: item=search(a); if(item! =OK)printf("\n没有符合条件的记录! \n”); else paixu(a); break; case6: item=search(a); mon=a—〉month; if(item! =OK)printf("\n没有符合条件的记录! \n"); else { printf("----—--——--——---—-——-—-—----——--———--—-—-—-——-—--——-——----———-———-—————\n”); printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a—〉month,a—>cfxf,a—〉dhhf,a->mshf,a->lyhf,a-〉qgjxsr,a-〉jyfy,a-〉byzhf); delRecord(mon); } break; } free(a); } voidinput(Infor*newI) { printf("\n请依次输入数据[说明: 中间以空格符隔开]: \n(记录月份吃饭消费电话话费买书花费旅游花费勤工俭学收入节约费用本月总花费)\n”); scanf(”%d%d%d%d%d%d%d%d”,&newI—>month,&newI—>cfxf,&newI—〉dhhf,&newI->mshf,&newI-〉lyhf,&newI->qgjxsr,&newI—>jyfy,&newI-〉byzhf); fflush(stdin); } voidwriteinfor(Infor*newI) { FILE*fp; fp=fopen(FilePath1,”ab+”); if(fp==NULL) { printf(”无法创建文件: %s",FilePath1); exit(0); } fwrite(newI,sizeof(Infor),1,fp); fclose(fp); printf("数据录入成功! \n”); } voidchangeFormat(void) { FILE*fp1,*fp2; Infor*a; a=(Infor*)malloc(sizeof(Infor)); fp1=fopen(FilePath1,"rb+”); if(fp1==NULL) { printf("无法找到文件: %s\n",FilePath1); return; } fp2=fopen(FilePath2,"wt+"); if(fp2==NULL) { printf(”无法创建文件: %s\n”,FilePath2); return; } fputs("\n! @#¥%……&*(&……¥#@@? “我的大学”生活消费管理系统! @#¥%……&*(&……¥#@@! n\n”,fp2); fputs(”记录月份吃饭消费电话话费买书花费旅游花费勤工俭学收入节约费用本月总花费\n",fp2); fputs("----——--———-——---—-—---———----—--——--—-----—-——---—--—-—----———----——-—\n”,fp2); printf(”\n记录月份吃饭消费电话话费买书花费旅游花费勤工俭学收入节约费用本月总花费\n"); printf(”———-—-—-———-—---————————--———————--—---——-—-——----—-—-—-—-—--—-—————-—-\n”); rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(! feof(fp1)) { printf("%7d%8d%8d%8d%8d%8d%8d%8d\n”,a->month,a->cfxf,a->dhhf,a-〉mshf,a->lyhf,a-〉qgjxsr,a—〉jyfy,a-〉byzhf); fprintf(fp2,”%7d%8d%8d%8d%8d%8d%8d%8d\n”,a->month,a->cfxf,a->dhhf,a—>mshf,a—>lyhf,a—>qgjxsr,a-〉jyfy,a—>byzhf); fread(a,sizeof(Infor),1,fp1); } fputs("—-—--——--—-—-——-—-----——------——-——-—-——--—-—————-———-——----—-——-—-—--—\n”,fp2); fputs("关闭本程序继续原程序! \n",fp2); fclose(fp1); fclose(fp2); system(FilePath2); remove(FilePath2); } Statussearch(Infor*a) { FILE*fp1; intmon; intisfound=0; printf(”请正确输入要查询的月份: "); scanf("%d",&mon); fflush(stdin); fp1=fopen(FilePath1,"rb+”); if(fp1==NULL) { printf(”无法找到文件: %s\n",FilePath1); returnError; } 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) returnOK; else returnNotFound; } voidpaixu(Infor*a) { inti=0,j=0,flag=0,t; pTypepx[8]={{0,0}}; charstr[8][14]={"记录月份”,"吃饭消费",”电话话费”,”买书花费","旅游花费","勤工俭学收入","节约费用”,"本月总花费”}; for(;i<8;i++) px[i]。 no=i; px[0]。 data=a-〉month; px[1]。 data=a-〉cfxf; px[2].data=a-〉dhhf; px[3]。 data=a—>mshf; px[4]。 data=a-〉lyhf; px[5]。 data=a—>qgjxsr; px[6]。 data=a—>jyfy; px[7]。 data=a->byzhf; 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”); } voidmodify(Infor*a,intmon) { FILE*fp1,*fp2; Infor*b; b=(Infor*)malloc(sizeof(Infor)); fp1=fopen(FilePath1,"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(FilePath1); rename("temp.dat",FilePath1); printf("修改数据成功! \n"); changeFormat(); } voiddelRecord(intmon) { FILE*fp1,*fp2; Infor*b; b=(Infor*)malloc(sizeof(Infor)); fp1=fopen(FilePath1,”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(FilePath1); rename("temp。 dat”,FilePath1); printf(”删除数据成功! \n"); changeFo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言 学生消费管理系统 课程设计 语言 学生 消费 管理 系统