C语言课程设计
{
fread(&records->record[++rs.total_count],sizeof(Rec),1,fp); //record[0]
中并不存放记录数据,以后作为查找到前哨站
while(1) } fclose(fp); #ifdef DEBUG
printf(\
ShowRec();
#endif
//用一个死循环实现循环操作,只有选择退出的时候才退出
{
system(\
printf(\消费记录系统-------\\n\
printf(\打开\\n\ printf(\保存\\n\ printf(\更新\\n\ printf(\查找\\n\ printf(\排序\\n\ printf(\统计\\n\ printf(\退出\\n\ printf(\请输入操作序号:\ scanf(\
system(\ if(chioce>6||chioce<1)
break; else
calledit(chioce); //调用中间过程函数
} return 0;
}
void calledit(int chioce)
{
void UpdateRec(); void FindRec(); void SortRec(); switch(chioce)
{ case 1: ShowRec(); break; case 2: SaveRec(); break; case 3:
- 19 -
C语言课程设计
UpdateRec(); break; case 4: FindRec(); break; case 5: SortRec(); break; case 6: ShowTotal(); break; default: break;
} return ;
}
void UpdateRec()
{ int mc; while(1) {
printf(\插入\\n\ printf(\删除\\n\ printf(\修改\\n\ printf(\离开\\n\ printf(\请选择:\ scanf(\
if(mc==1) Insert(); else if(mc==2) DeleteByNum(); else if(mc==3) Modify(); else if(mc==0) break; else {
printf(\输入有误,请重试!\\n\
continue;
}
scanf(\
} }
- 20 -
C语言课程设计
void FindRec()
{ int mc; int i; while(1) {
printf(\按时间查找\\n\ printf(\按类型查找\\n\ printf(\按名称查找\\n\
printf(\离开\\n\ printf(\请选择:\ scanf(\
if(mc==1)
{
printf(\请输入时间(format:2011-12-31):\
scanf(\
if(strlen(found.times)!=10||found.times[4]!='-'||found.times[7]!='-') //简单的判
断一下日期是否符合格式要求
{
printf(\时间格式错误,请重试!\\n\
continue;
}
i=FindByTime(found.times);
if(i) { ShowI(i);
} } else if(mc==2)
{
printf(\请输入类型:\ scanf(\ i=FindByType(found.types);
if(i) { ShowI(i);
} } else if(mc==3)
{
printf(\请输入名称:\ scanf(\
- 21 -
C语言课程设计
i=FindByName(found.name); if(i) { ShowI(i);
} } else if(mc==0) break; else {
printf(\输入有误,请重试!\\n\
continue;
}
scanf(\ system(\
} }
void SortRec()
{ int mc; while(1) {
printf(\按时间排序\\n\ printf(\按类型排序\\n\ printf(\按金额排序\\n\
printf(\离开\\n\ printf(\请选择:\ scanf(\
if(mc==1) SortByTime(); else if(mc==2) SortByType(); else if(mc==3) SortBySum(); else if(mc==0) break; else {
printf(\输入有误,请重试!\\n\
continue;
}
scanf(\ system(\
}
- 22 -
C语言课程设计
Define.h文件代码:
#define MAX 100 //人为定义的一个上限 //#define DEBUG //控制调试信息的输出 typedef struct {
int num; //编号 char times[11]; //时间 char types[20]; //类别 char name[20]; //品名 double price; //单价 int quantity; //数量 double sum; //金额 }Rec;
typedef struct {
Rec record[MAX+1]; //可操作的记录总数 int total_count; //记录总数 }Rec_Con,*PRec_Con; union {
char times[11]; char types[20]; char name[20]; }found;
//下面三个变量都是全局变量 FILE *fp; //定义文件指针 Rec_Con rs;
PRec_Con records=&rs; //定义指针变量 int type_count=0; //记录里相关的类型数目 int year_count=0; //记录里相关的年数目 char *ptype[MAX+1]; //记录里相关的类型 char pyear[MAX+1][5]; //记录里相关的年 char tmp[5]; //取年份所用
char c; //使用频率很高的一个变量,后来好像又没声明用了,先放着吧
arc.h文件代码:
#include
void OpenFile(char * mode) //打开文件函数,以二进制append形式操作 {
if((fp=fopen(\
- 23 -