精华内容
下载资源
问答
  • C语言程序设计 课程设计报告

    千次阅读 多人点赞 2020-06-17 17:39:14
    C语言程序设计课程设计报告 一、 系统简介 学生成绩管理系统简介:一个简易的学生成绩管理系统,它包括并可以实现:“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、...

    C语言程序设计课程设计报告

    一、 系统简介

    学生成绩管理系统简介:一个简易的学生成绩管理系统,它包括并可以实现:“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、退出系统 ”等功能,此系统需要使用者准确录入学生信息,已达到高效的工作需求。

    二、 设计要求
    本次课程设计要求用C语言编程实现一个小型的学生成绩管理系统,每个结构的数据可以包括学号、姓名、平时成绩、作业成绩和期末成绩等。
    程序采用简单菜单驱动方式,屏幕上显示菜单如下:
    1— 录入并保存学生信息
    2— 打印学生信息
    3— 读取学生信息
    4— 查找学生信息显示
    5— 删除学生信息
    6— 修改学生信息
    7— 排序学生信息
    8— 退出系统
    由两个同学组成一组分工合作完成本次课程设计。本人的主要工作包括如下内容:
    1-录入并保存学生信息
    2-读取学生信息
    3-查找学生信息显示
    4-删除学生信息

    三、 程序流程图
    (此部分要求画出系统的主要功能图,自己所负责具体功能模块的流程图)

    在这里插入图片描述

    四、 程序源代码
    (要求程序中要有注释,培养规范化编程习惯)
    部分代码参考

    	#include<stdio.h>
    	#include<conio.h>//getch的头文件
    	#include<stdlib.h>//system的头文件 
    	#include<string.h>
    	//定义一个学生 
    	typedef struct TagStudent
    	{ 
    	    int Num;//学号 
    		char Name[20];//姓名 
    		float Ascore;//平时成绩 
    		float Hscore;//作业成绩 
    	    float Tscore;//考试成绩
    		float total;//总成绩 
    	    struct TagStudent *next;//next指针变量 ,指向结构体变量 
    	}Student;
    
    	Student *head=NULL;
    	void Menu();
    	void InputStudent();
    	void PrintStudent();
    	void ReadStudent(); 
    	void SearchStudent();
    	void DeleteStudent();
    	void ChangStudent();
    	void SortStudent();
    	void sortStrArr(Student *list, int n);
    	
    	int main()
    	{
    		Menu();
    		while(1)
    		{   
    			//	读取一个字符 
    		char ch=getch(); 
    			//打印菜单 
    			if (ch!= '2')
    			{
    				system("cls");
    				Menu();
    				
    			} 
    			switch(ch)
    			 {
    				case '1'://录入学生信息 
    					InputStudent();
    					break;	
    				case '2'://打印学生信息
    					PrintStudent(); 
    					break;
    				case '3'://浏览学生信息
    					ReadStudent(); 
    						break;
    				case '4'://查找学生信息 
    					SearchStudent();
    					break;
    				case '5'://删除学生信息 
    					DeleteStudent();
    					break;	
    				case '6'://修改学生信息 
    					ChangStudent();
    					break;	
    				case '7'://排序学生信息 
    				    SortStudent();
    					break;	
    				case '0'://退出系统 
    					printf("欢迎下次使用."); 
    					return 0;
    					break;				
    			}			
    		}
    		return 0;
    	} 
    
    	void Menu()
    	{
    		
    			printf("========欢迎使用学生成绩管理系统=======\n");//\t表示制表符
    			printf("***************************************\n");
    			printf("*\t    请选择功能列表            *\n");     
    			printf("***************************************\n");
    			printf("*\t    1.录入并保存学生信息      *\n");
    			printf("*\t    2.打印学生信息            *\n");
    			printf("*\t    3.读取学生信息            *\n");	
    			printf("*\t    4.查找学生信息            *\n");	
    			printf("*\t    5.删除学生信息            *\n");
    			printf("*\t    6.修改学生信息            *\n");
    			printf("*\t    7.排序学生信息            *\n");
    			printf("*\t    0.退出系统                *\n");
    			printf("***************************************\n");
    		
    	
    			
    	}
    
    //创建一个保存链表
    
    	Student *savestudent(Student *p)
    	{
    		Student *head=p;
    		FILE *fp=fopen("E:\\student.txt","w");
    		if(fp==NULL)
    		{
    			printf("打开文件失败\n");
    			return NULL;
    		}
    		//写入数据 
    		while(head!=NULL)
    		{
    			fprintf(fp,"%d %s %.2f  %.2f  %.2f\n",head->Num,
    													head->Name,
    													head->Ascore,
    													head->Hscore,
    													head->Tscore);	
    			head=head->next; 
    		}
    		fclose(fp);	
    		return p;
    	}
    
    //录入学生信息
    
    void InputStudent()
    	{		
    	
    		Student* p=head;//当前节点 
    		//找到尾节点 
    		while(head!=NULL&&p->next!=NULL)
    		{
    			p=p->next; 
    		}
    		//定一个新节点
    		Student *NewNode=(Student*)malloc(sizeof(Student));
    		NewNode->next=NULL;
    	
    		if(head==NULL)
    		{
    			head=NewNode;
    		}
    		else{
    			p->next=NewNode; 
    		}
    		printf("\n请输入学生信息\n ");
    		//输入新的学元数据 
    		printf("         学号:");
    		scanf("%d", &NewNode->Num);
    		printf("         姓名:");
    		scanf("%s", NewNode->Name);
    		printf("     平时成绩:");
    		scanf("%f", &NewNode->Ascore);
    		printf("     作业成绩:");
    		scanf("%f", &NewNode->Hscore);
    		printf("     考试成绩:");
    		scanf("%f", &NewNode->Tscore);
    		FILE *fp=fopen("E:\\student.txt","a");
    		if(fp==NULL)
    		{
    			printf("打开文件失败\n");
    			return ;
    		}
    		//写入数据 
    		while(p!=NULL)
    		{
    			fprintf(fp,"%d %s %.2f  %.2f  %.2f\n",p->Num,
    												p->Name,
    												p->Ascore,
    												p->Hscore,
    												p->Tscore);	
    			p=p->next; 
    		}
    		fclose(fp);		
    		printf("学生信息录取并保存成功!\n");
    	}
    
    // 创建生成链表并返回 
    Student *createLine(FILE *fp)
    {
    	Student *head, *p1, *p2;
    	p1 = p2 = (Student*) malloc(sizeof(Student));//开辟一个新单元 
    	head = p1;
    	
    	while(!feof(fp))//feof(fp)文件未结束输出0 
    	{
    		fscanf(fp,"%d%s%f%f%f\n",&p1->Num,
    								p1->Name,
    								&p1->Ascore,
    							    &p1->Hscore,
    							 	&p1->Tscore);
    		p2 = p1;
    		p1 = (Student*) malloc(sizeof(Student));
    		p2->next = p1;
    		
    	}
    	if (head->Name[0] == '\0') head = NULL;
    	else p2->next = NULL;
    	return head;
    }
    
    // 从文件读取数据并生成返回链表 ,从文件中获取数据生成链表并返回链表的头指针 
    
    	Student *readFiles()
    	{
    		Student *head;
    		FILE *fp = fopen("E:\\student.txt", "r");
    	    if(fp == NULL)
    	    {
    	        printf("打开文件失败!");
    	        return NULL;
    	    }
    	    head = createLine(fp);
    		fclose(fp);
    		return head;
    	} 
    	
    	//读取学生信息
    	void ReadStudent()
    	{ //打开文件
    	 
    	 Student *p = readFiles();
    	printf("学号\t姓名\t平时成绩\t作业成绩\t考试成绩\n");
    	 while(p!=NULL) 
    		{
    			printf("%d   \t%s    \t%.2f      \t%.2f      \t%.2f      \n", 
    		 												p->Num,
    														p->Name,
    														p->Ascore,
    														p->Hscore,
    														p->Tscore);				
    			p=p->next;
    		}
    	}
    	//查找学生信息
    	void SearchStudent()
    	{
    		Student *p = readFiles();
    		char searchname[10];//空的字符数组; 
    		printf("\n请输入你要查找的学生名字:");
    		scanf("%s",searchname); 
    		while(strcmp(p->Name,searchname)!=0)
    		{
    			if(p->next==NULL)
    			{
    				printf("没有此学生的信息\n");
    				return ;
    			}
    			p=p->next;	 
    		}
    		printf(" 学号:\t姓名:\t平时成绩:\t作业成绩:\t考试成绩:\n");
    		printf("  %d   \t%s       %.2f          %.2f           %.2f      \n", 
    		p->Num,
    		p->Name,
    		p->Ascore,
    		p->Hscore,
    		p->Tscore);            
    	}
    

    五、 运行结果及分析
    (要求有程序运行结果截图和相应的分析)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    六、 设计总结
    (详述本次调试程序所取得的经验。如果程序未能通过,应分析其原因。)
    学生成绩管理系统是一个十分强大的管理系统,起初刚开始做课程设计时,以为这个课设不会有多难,不过是把多个函数组合起来就好了,但是,经过这两星期的编程,发现要完整把程序按照要求编出来是一件很不容易的事情。在学习中,也对C语言有更加的了解。在整个编程过程中,可以说遇到了很多难题,在书和同学的
    帮助下最后解决了这些问题,,我觉编写程序需要很大的耐心,当然细心也很需要,在编程的过程中有很多错误都是自己的粗心造成的,。这次的课程设计也是一次很好的对自我的检查,使我受益匪浅!
    参考资料

    1. C程序设计(第四版),谭浩强,清华大学出版社,2010年
    2. C程序设计(第四版)学习辅导,谭浩强,清华大学出版社,2010年
      完整代码和报告见链接:https://download.csdn.net/download/qq_45772158/12530461
    展开全文
  • C语言程序设计课程自评汇报 辽宁对外经贸职业学院 7月 C语言程序设计课程自评汇报 C语言程序设计是我院信息管理专业计算机应用专业电子商务专业一门主干课程其中信息管理专业是辽宁省试点专业几年来在院各级领导关心...
  • 完全的C语言课程设计,WORD版,可以直接打印出来就可以交!还附带程序清单,直接可以拿到程序里面就可以运行!非常的好!
  • 本文档是C语言的期末课程设计报告,内容为商品订购系统
  • C语言程序设计课程设计(服装销售管理系统)

    千次阅读 多人点赞 2019-08-01 18:13:10
    C语言程序设计课程设计) 《服装销售管理系统》 在大一学习完学校要求的C语言程序设计课程设计之后,在学期末有着一个课程设计,就是在练习之前课上的理论知识之后,将上课学习到的这些付诸实践,完成一个数据...

    C语言程序设计(课程设计)

    《服装销售管理系统》

    在大一学习完学校要求的C语言程序设计的课程设计之后,在学期末有着一个课程设计,就是在练习之前课上的理论知识之后,将上课学习到的这些付诸实践,完成一个数据信息管理系统。由于之前粗略使用C写过图书管理系统,所以这次选择了服装管理系统,用来接触一些较新的东西。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h> 
    #include <windows.h>
    #define KEY 0x86
    
    typedef struct Adm* List1;
    typedef struct Clo* List2;
    typedef struct Vip* List3;
    struct Adm//管理员信息包括  名字  密码 
    {
    	char nam[20],password[20];
    	struct Adm* next;
    };
    struct Clo//服装信息包括   品牌 名字 编号 尺寸 颜色 价格 总数 
    {
    	char brand[20],nam[20],size[20],color[20];
    	float price;
    	int amount,num;
    	struct Clo* next;
    };
    struct Vip//会员信息包括    姓名 电话 积分 
    {
    	char nam[20],phone[20];
    	float score; 
    	int num;          //会员号自动分配 
    	struct Vip* next;
    };
    void enter0();                      //登陆界面 
    void Vis_window();                  //游客界面 
    void Adm_enter();                   //管理员录入
    void Adm_change();                  //管理员修改  
    void Adm_load();                    //管理员登录 1  
    void Adm_manage();                  //管理员管理界面 2                
    void Clo_manage();                  //服装管理界面 3 
    void Clo_add();                     //服装添加 
    void Clo_find();                    //服装信息查询 
    void Clo_finding();                 //当前条件下深度查询 
    void Clo_change();                  //服装信息改变  
    int Clo_stat();                     //服装种类数目统计 
    void Vip_manage();                  //会员管理界面 4                
    void Vip_enter();                   //会员信息录入
    int Vip_stat();                     //会员数统计 
    void Vip_find();                    //会员信息查询
    void Vip_finding();                 //当前条件下深查 
    void Sale_system();                 //销售系统管理界面 5 
    void Sale_list();                   //所有服装显示 
    void Sale_window();                 //销售窗口 
    int Sale_stat();                    //销售服装种类数 
    void Use_history();                 //使用记录 
    void Data_sort();                   //本次销售排序 
    
    void Pro_bar()///进度条程序 
    {
    	system("cls");
    	char arr[50] = {'\0'};
    	const char *p = "|/-\\";
    	memset(arr,0,sizeof(arr));
    	int n = 50,i = 0;
    	while(i<=n)
    	{
    		arr[i]= '=';
    		printf("\t\t\t\t[%-50s][%d%%][%c]\r",arr,i*2,p[i%4]);
    		fflush(stdout);
    		i++;
    		usleep(20000);
        }
    	printf("\n");
    }
    void Mas_int()///关于 
    {
    	MessageBox(NULL, TEXT("名称:服装销售系统\n学校:****大学\n作者:****"), TEXT("关于"), MB_OK);
     } 
    void enter()///进入界面 
    {
    	Pro_bar();
    	system("cls");
    	int x0;
    	char name[20];
    	printf("\t\t\t\t  ***************程序主界面*****************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     1.管理员界面@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********      2.游客界面@_@    ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     3.退出该程序@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************** 0.关于 **\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x0);
    	switch (x0)
    	{
    		case 0:
    			Mas_int(); 
    			enter();
    			break;
    		case 1:
    			enter0();
    			break;
    		case 2:
    			Vis_window();
    			break;
    		case 3:
    			Pro_bar(); 
    			system("cls");
    			exit(0);
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回当前\n") ;
    		    getch();
    			system("cls"); 
    			enter();
        }
    } 
    void Vis_window()///游客进入窗口 
    {
    	system("cls");
    	int x0;
    	char name[20];
    	printf("\t\t\t\t  ****************游客界面******************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  *********     1.服装查找@_@    ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  *********     2.服装购买@_@    ***********\n");
    	printf("\n"); 
    	printf("\t\t\t\t  *********     3.返回上层@_@    ***********\n");
    	printf("\n"); 
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x0);
    	switch (x0)
    	{
    		case 1:
    			Clo_find(x0);
    			break;
    		case 2:
    			Sale_window();
    			break;
    		case 3:
    			enter(); 
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			enter();
    	}
    }
    void enter0()///第一界面   登录界面 
    {
    	system("cls");
    	int x0;
    	char name[20];
    	printf("\t\t\t\t  **************管理员主界面****************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     1.添加管理员@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     2.管理员修改@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     3.管理员登录@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     4.返回上一层@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x0);
    	switch (x0)
    	{
    		case 1:
    			Adm_enter();
    			break;
    		case 2:
    			Adm_change();
    			break;
    		case 3:
    			Adm_load();
    			break;
    		case 4:
    			enter(); 
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			enter0();
    	}
    }
    void Adm_enter()///管理员录入 
    {
    	system("cls");
    	FILE *fp;
    	int i,j=0,m;
    	char nam[20],nam0[20],psword[20],psword0[20];
    	fp = fopen("Adm_list.txt","r");
    	if(fp == NULL)
    	{
    		j=1;
    		fp = fopen("Adm_list.txt","a");
    	} 
    	fclose(fp);
    	printf("\t\t\t\t  输入管理员名:");
    	scanf("%s",nam);
    	if(j==0);
    	{
    		fp = fopen("Adm_list.txt","r");
    		while(!feof(fp))
    		{
    			fscanf(fp," %s %s\n",nam0,psword0);
    			{
    				if (!strcmp(nam0,nam))
    				{
    					printf("\t\t\t\t  已存在该管理员,无需重复录入!\n");
    					printf("\t\t\t\t  任意键返回上层!");
    					getch();
    					fclose(fp);
    					enter0(); 
    				}
    			}
    		}
    	}
    	fp = fopen("Adm_list.txt","a");
    	printf("\t\t\t\t  输入密码:"); 
    	for(i=0; ;i++)
    	{
    		m=0;
    		psword0[i]=getch();
    		if(psword0[i]=='\r')
    		{
    			psword0[i]='\0';
    			break;
    		}
    		if(psword0[i]=='\b')
    		{
    			m=1;
    			psword0[i]='\0';
    			psword0[i-1]='\0';
    			i = i-2;
    			printf("\b \b");
    		}
    		if(m==0) printf("*");
    	}
    	printf("\n\t\t\t\t  请再次输入密码:");
    	for(i=0; ;i++)
    	{
    		m=0;
    		psword[i]=getch();
    		if(psword[i]=='\r')
    		{
    			psword[i]='\0';
    			break;
    		}
    		if(psword[i]=='\b')
    		{
    			m=1;
    			psword[i]='\0';
    			psword[i-1]='\0';
    			i = i-2;
    			printf("\b \b");
    		}
    		if(m==0) printf("*");
    	}
    	if(!strcmp(psword0,psword))
    	{
    		for (i=0;i<strlen(psword);i++)
    		{
    			psword0[i] = psword[i]^KEY;
    			
    		}
    		fprintf(fp," %s %s\n",nam,psword0);
    		printf("\n\t\t\t\t  录入成功,任意键返回上层!");
    	}
    	else
    	{
    		printf("\n\t\t\t\t  录入失败,密码不一致,任意键返回上层:");		
    	}
    	getch(); 
    	fclose(fp);
    	enter0(); 
    }
    void Adm_load()///管理员登录 
    {
    	system("cls");
    	FILE *fp;
    	char nam[20],nam0[20],psword[20],psword0[20];
    	int flag = 0,i,j;
    	fp = fopen("Adm_list.txt","r");
    	if (fp == NULL)
    	{
    		printf("\t\t\t\t  尚未创建管理员,任意键创建并录入.");
    		Adm_enter();
    	 } 
    	printf("\t\t\t\t  输入登录管理员名称:");
    	scanf("%s",nam0);
    	while(!feof(fp))
    	{
    		fscanf(fp, " %s %s\n",nam,psword);
    		if (!strcmp(nam,nam0))
    		{
    			flag = 1;
    			printf("\t\t\t\t  输入密码:");
    			for(i=0; ;i++)
    			{
    				j=0;
    				psword0[i]=getch();
    				if(psword0[i]=='\r')
    				{
    					psword0[i]='\0';
    					break;
    				}
    				if(psword0[i]=='\b')
    				{
    					j=1;
    					psword0[i]='\0';
    					psword0[i-1]='\0';
    					i = i-2;
    					printf("\b \b");
    				}
    				if(j==0) printf("*");
    			}
    			for(i=0;i<strlen(psword);i++)
    			{
    				psword[i] = psword[i]^KEY;
    			}
    			if(!strcmp(psword,psword0))
    			{
    				Adm_manage();                           //进入管理员管理界面 
    			}
    			else
    			{
    				printf("\n\t\t\t\t  密码错误,任意键返回上层:");
    				getch(); 
    				enter0();
    				break;
    			}
    		}
    	}
    	if (flag==0)
    	{
    		printf("\t\t\t\t  该管理员未录入,任意键返回上层!");
    		getch();
    		enter0(); 
    	}
    }
    void Adm_change()///管理员修改 
    {
    	system("cls");
    	printf("\t\t\t\t  *************管理员修改界面***************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  ********     1.管理员删除@_@    **********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********   2.管理员密码修改@_@  **********\n");
    	printf("\n");
    	printf("\t\t\t\t  ********      3.返回上层@_@     **********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	int x;
    	scanf("%d",&x); 
    	system("cls");
    	FILE *fp;
    	List1 head,p1,p2;
    	char i,nam[20],psword[20];
    	int j,l=0,m;
    	fp = fopen("Adm_list.txt","r");
    	if (fp == NULL)
    	{
    		printf("\t\t\t\t  尚未录入管理员!\n\t\t\t\t  任意键返回上层");
    		getch();
    		enter0(); 
    	}
    	p1 = head = (List1)malloc(sizeof(struct Adm));
    	p1->next = NULL;
    	while(!feof(fp))
    	{
    		p2 = (List1)malloc(sizeof(struct Adm));
    		fscanf(fp," %s %s\n",p2->nam,p2->password);
    		p1->next=p2;
    		p2->next=NULL;
    		p1=p2;		
    	}
    	fclose(fp);
    	if (x==1) 
    	{
    		fp = fopen("Adm_list.txt","w");
    		p2 = head->next;
    		printf("\t\t\t\t  要更改的管理员姓名为:");
    		scanf("%s",nam);
    		while(p2)
    		{
    			m=0;
    			if(!strcmp(p2->nam,nam))
    			{
    				l=1;
    				printf("\t\t\t\t  是否删除该管理员?\n");
    				printf("\t\t\t\t  回车删除,任意键返回!");
    				i=getch();
    				if (i==13)
    				{
    					m=1;
    					p1 = p2;
    					p2 = p2->next;
    					free(p1);
    				}
    			}
    			fprintf(fp," %s %s\n",p2->nam,p2->password);
    			p2 = p2->next;
    		}
    		fclose(fp);
    	}
    	else if(x==2)
    	{
    		fp = fopen("Adm_list.txt","w");
    		p2 = head->next;
    		printf("\t\t\t\t  要更改的管理员姓名为:");
    		scanf("%s",nam);
    		while(p2)
    		{
    			if(!strcmp(p2->nam,nam))
    			{
    				l=1;
    				printf("\n\t\t\t\t  存在该管理员,继续输入将覆盖原密码");
    				for(j=0; ;j++)
    				{
    					psword[j]=getch();
    					if(psword[j]=='\r')
    					{
    						psword[j]='\0';
    						break;
    					}
    					printf("*");
    				}
    				strcpy(p2->password,psword);
    			}
    			fprintf(fp," %s %s\n",p2->nam,p2->password);
    			p2 = p2->next;
    		}
    		fclose(fp);
    	}
    	else if(x==3)
    	{
    		enter0();
    	 } 
    	else if(x!=1 && x!=2 && x!=3)
    	{
    		printf("\n\t\t\t\t  按键未被定义,任意键返回!");
    		getch();
    		enter0(); 
    	}
    	if(l==0)
    	{
    		printf("\n\t\t\t\t  该管理员未被录入!\n\t\t\t\t  任意键返回上层"); 
    		getch();
    		enter0();
    	}
    	printf("\n\t\t\t\t  操作完成,任意键返回上层!");
    	getch();
    	enter0();
    }
    void Adm_manage()///第二界面   管理员管理界面 
    {
    	system("cls");
    	int x1;
    	printf("\t\t\t\t  **************管理员管理界面**************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     1.服装管理@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     2.会员管理@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     3.售卖系统@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     4.返回上层@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x1);
    	switch (x1)
    	{
    		case 1:
    			Clo_manage();
    			break;
    		case 2:
    			Vip_manage();
    			break;
    		case 3:
    			Sale_system();
    			break;
    		case 4:
    			enter0();
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			Adm_manage();
    	}
    }
    void Clo_manage()///第三界面   服装管理界面 
    {
    	system("cls");
    	int x1;
    	printf("\t\t\t\t  ****************服装管理界面**************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     1.服装添加@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     2.服装查询@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     3.服装修改@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     4.返回上层@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x1);
    	switch (x1)
    	{
    		case 1:
    			Clo_add();
    			break;
    		case 2:
    			Clo_find(x1);
    			break;
    		case 3:
    			Clo_change();
    			break;
    		case 4:
    			Adm_manage();
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			Clo_manage();
    	}
    } 
    void Clo_add()///服装添加函数 
    {
    	system("cls");
    	FILE *fp;
    	char i=13;
    	int n; 
    	List2 head,p1,p2;
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	fp = fopen("Clo_list.txt","a");
    	n = Clo_stat();
    	printf("\t\t\t\t  请按照以下格式录入服装信息:\n");
    	while(i==13)
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		printf("\t\t\t\t  品牌    名称     尺寸     颜色     价格     总数\n\t\t\t\t  ");
    		scanf("%s %s %s %s %f %d",p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		p2->num = n;
    		p1->next = p2;
    		p2->next = NULL;
    		p1 = p2; 
    		printf("\t\t\t\t  是否继续输入?回车继续输入,任意键返回上层!\n");
    		i=getch();
    		n++;
    	}
    	p2 = head->next;
    	while(p2)
    	{
    		fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    		p2 = p2->next;
    	}
    	fclose(fp);
    	Clo_manage();
     } 
    void Clo_find(int u)///服装查找函数 
    {
    	system("cls");
    	Sale_list(); 
    	FILE *fp;
    	List2 head,p1,p2;
        char key1[20];
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	fp = fopen("Clo_list.txt","r");
    	if (fp == NULL )
    	{
    		printf("\t\t\t\t  尚未创建服装目录,任意键返回!");
    		getch(); 
    		Clo_manage();
    	}
    	while(!feof(fp))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		p1->next=p2;
    		p2->next=NULL;
    		p1=p2;
    	}
    	fclose(fp);
    	printf("\t\t\t\t  输入查询条件,可选择 名字 品牌 尺寸 颜色或者关键字\n\t\t\t\t  ");
    	scanf("%s",key1);
    	Clo_finding(key1,head,u);	
    } 
    void Clo_finding(char* key,List2 headold,int u)///多条件查找 
    {
    	system("cls");
    	char i,keyy[20];
    	int j=0;
    	List2 p,head,p1,p2;
    	p = headold->next;
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	while (p)
    	{
    		if(!strcmp(p->size,key) ||!strcmp(p->color,key) ||!strcmp(p->brand,key) ||!strcmp(p->nam,key) ||strstr(p->nam,key) ||strstr(p->brand,key))
    		{
    			j=1;
    			printf("\n\t\t\t\t  *********************************************************************\n");
    			printf("\n\t\t\t\t  编号      品牌           名称      尺寸      颜色      价格      总数\n");
    			printf("\t\t\t\t  %-10d%-15s%-10s%-10s%-10s%-10.2f%-10d\n",p->num,p->brand,p->nam,p->size,p->color,p->price,p->amount);
    			p2 = (List2)malloc(sizeof(struct Clo));
    			strcpy(p2->brand,p->brand);
    			strcpy(p2->nam,p->nam);
    			strcpy(p2->size,p->size);
    			strcpy(p2->color,p->color);
    			p2->num = p->num;
    			p2->price = p->price;
    			p2->amount = p->amount;
    			p2->next = NULL;
    			p1->next = p2;
    			p1 = p2;
    			p2=p2->next;
    		}
    		p=p->next;
    	}
    	if(j==0)
    	{
    		printf("\t\t\t\t  无对应服装,任意键返回上层!");
    		getch();
    		if(u==2)
    		Clo_manage(); 
    		else
    		Vis_window();
    	}
    	printf("\n\t\t\t\t  是否继续查询,回车在当前条件下继续查询,任意键返回上层\n\t\t\t\t  ");
    	i = getch();
    	if (i==13)
    	{
    		printf("输入查询条件,可选择 名字 编号 尺寸 颜色\n\t\t\t\t  ");
    		scanf("%s",keyy);
    		Clo_finding(keyy,head,u);
    	} 
    	if(u==2)
    	Clo_manage(); 
    	else
    	Vis_window();
    	
    }
    void Clo_change()///服装修改函数
    {
    	system("cls");
    	printf("\t\t\t\t  **************服装修改界面****************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     1.服装删除@_@    **********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********   2.服装数据修改@_@  **********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     3.返回上层@_@    **********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	int x,y,m,l;
    	scanf("%d",&x); 
    	system("cls");
    	FILE *fp;
    	fp = fopen("Clo_list.txt","r");
    	List2 head,p1,p2;
    	char i,key[20];
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;	
    	while(!feof(fp))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		p1->next=p2;
    		p2->next=NULL;
    		p1=p2;
    	}	
    	if (x==1) 
    	{
    		fp = fopen("Clo_list.txt","w");
    		p2 = head->next;
    		printf("\t\t\t\t  要更改的服装姓名为:");
    		printf("\t\t\t\t  如果遗忘相关信息可先返回上层查找!\n回车返回上层,任意键继续!");
    		i = getch();
    		if (i==13) Clo_manage();
    		scanf("%s",key);
    		while(p2)
    		{
    			m=0;
    			if(!strcmp(p2->nam,key))
    			{
    				l=1;
    				printf("\t\t\t\t  是否删除该服装相关信息?\n");
    				printf("\t\t\t\t  回车删除,任意键返回!");
    				i=getch();
    				if (i==13)
    				{
    					m=1;
    					p1 = p2;
    					p2 = p2->next;
    					free(p1);
    				}
    			}
    			fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    			p2 = p2->next;
    		}
    		fclose(fp);
    	}
    	else if(x==2)
    	{
    		fp = fopen("Clo_list.txt","w");
    		p2 = head->next;
    		printf("\t\t\t\t  要更改的服装姓名为:");
    		printf("\t\t\t\t  如果遗忘相关信息可先返回上层查找!\n回车返回上层,任意键继续!");
    		i = getch();
    		if (i==13) Clo_manage();
    		scanf("%s",key);
    		while(p2)
    		{
    			if(!strcmp(p2->nam,key))
    			{
    				l=1;
    				printf("\t\t\t\t  目前该服装信息为:\n");
    				printf("\t\t\t\t    编号    品牌    名称     尺寸     颜色     价格     总数\n");
    				printf("\t\t\t\t   %-10d%-10s%-10s %-10s %-10s %-10f %-10d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    				printf("\n\t\t\t\t  存在该服装,输入欲更改的条目编号\n");
    				printf("\t\t\t\t  ps:其中 价格只能输入数字,总数只能输入整形数字\n");
    				printf("\t\t\t\t  可改条目有1.名字 2.品牌 3.尺寸 4.颜色 5.价格 6.总数\n");
    				scanf("%d",&y);
    				printf("\t\t\t\t  输入改后数据:");
    				scanf("%s",key);
    				switch(y)
    				{
    					case 1:
    						printf("\t\t\t\t  数据变化为%s -> %s",p2->nam,key);
    						strcpy(p2->nam,key);
    						break;
    					case 2:
    						printf("\t\t\t\t  数据变化为%s -> %s",p2->brand,key);
    						strcpy(p2->brand,key);
    						break;
    					case 3:
    						printf("\t\t\t\t  数据变化为%s -> %s",p2->size,key);
    						strcpy(p2->size,key);
    						break;
    					case 4:
    						printf("\t\t\t\t  数据变化为%s -> %s",p2->color,key);
    						strcpy(p2->color,key);
    						break;
    					case 5:
    						y = atoi(key);
    						printf("\t\t\t\t  数据变化为%f -> %f",p2->price,y);
    						p2->price = y;
    						break;
    					case 6:
    						y = atoi(key);
    						printf("\t\t\t\t  数据变化为%d -> %d",p2->amount,y);
    						p2->amount = y;
    						break;
    					default :
    					    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    					    getch();
    						system("cls"); 
    						Clo_manage();						 
    				}
    			}
    			fprintf(fp," %d %s %s %s %s %f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    			p2 = p2->next;
    		}
    		fclose(fp);
    	}
    	else if(x==3)
    	{
    		Clo_manage(); 		
    	}
    	else if(x!=1 && x!=2 && x!=3)
    	{
    		printf("\t\t\t\t  操作未被定义,任意键返回!");
    		getch();
    		Clo_manage(); 
    	}
    	if(l==0)
    	{
    		printf("\t\t\t\t  该服装未被录入!\n\t\t\t\t  任意键返回上层"); 
    		getch();
    		Clo_manage();
    	}
    	printf("\t\t\t\t  操作完成,任意键返回上层!");
    	getch();
    	Clo_manage();
    } 
    int Clo_stat()///服装种类数统计
    {
    	FILE *fp;
    	fp = fopen("Clo_list.txt","r");
    	char nam[20],size[20],color[20],brand[20];
    	int amount,sum=0,num;
    	float price;
    	while(!feof(fp))
    	{
    		fscanf(fp," %d %s %s %s %s %f %d",&num,brand,nam,size,color,&price,&amount);
    		sum++;
    	} 
    	fclose(fp);
    	return sum;
    } 
    void Vip_manage()///第四界面   会员管理界面 
    {
    	system("cls");
    	int x1;
    	printf("\t\t\t\t  ****************会员管理界面**************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     1.会员录入@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     2.信息查询@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  **********     3.返回上层@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x1);
    	switch (x1)
    	{
    		case 1:
    			Vip_enter();
    			break;
    		case 2:
    			Vip_find();
    			break;
    		case 3:
    			Adm_manage();
    			break;
    		default :
    		    printf("\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			Adm_manage();
    	}
    }
    void Vip_enter()///会员录入 
    {
    	system("cls");
    	FILE *fp;
    	int i=0,j=0,k=0,num=0;
    	char nam[20]={"********"},nam0[20],phone[20]={"***********"},phone0[20],num0[20];
    	float price=0,l=0;
    	fp = fopen("Vip_list.txt","r");
    	if(fp == NULL)
    	{
    		j=1;
    		fp = fopen("Vip_list.txt","a");
    		fprintf(fp," %d %s %s %f\n",num,nam,phone,price);
    	} 
    	fclose(fp);
    	printf("\t\t\t\t  输入会员名:");
    	scanf("%s",nam);
    	if(j==0);
    	{
    		fp = fopen("Vip_list.txt","r");
    		while(!feof(fp))
    		{
    			fscanf(fp," %d %s %s %f\n",&num,nam0,phone0,&price);
    			{
    				if (!strcmp(nam0,nam))
    				{
    					i=1;
    					printf("\t\t\t\t  已存在该会员名,请继续输入手机号确认是否为同一人\n");
    					printf("\t\t\t\t  输入手机号:\n\t\t\t\t  ");
    					scanf("%s",phone);
    					if(!strcmp(phone0,phone))
    					{
    						printf("\t\t\t\t  该会员已存在!任意键返回上层!");
    						getch();
    						Vip_manage(); 
    					} 
    					break;
    				}
    			}
    		}
    	}
    	if (i==0)
    	{
    		printf("\t\t\t\t  输入手机号:");
    		scanf("%s",phone);
    		printf("\t\t\t\t  请再次输入手机号:");
    		scanf("%s",phone0); 
    		if (strcmp(phone,phone0))
    		{
    			printf("\t\t\t\t  两次手机号码输入不一致,任意键返回上层!");
    			getch();
    			Vip_manage();
    		}
    	}
    	num = Vip_stat();
    	fp = fopen("Vip_list.txt","a");
    	fprintf(fp," %d %s %s %f\n",num,nam,phone,l);
    	fclose(fp);
    	printf("\n\t\t\t\t  录入成功,任意键返回上层!");
    	getch();
    	Vip_manage(); 
     } 
    int Vip_stat()///会员数统计 
    {
    	FILE *fp;
    	fp = fopen("Vip_list.txt","r");
    	int sum=0,n;
    	float price;
    	if (fp == NULL)
    	{
    		sum = 0;
    		return sum;
    	}
    	char nam[20],phone[20];
    	while(!feof(fp))
    	{
    		fscanf(fp," %d %s %s %f\n",&n,nam,phone,&price);
    		sum++;
    	}
    	fclose(fp);
    	return sum;
     } 
    void Vip_find()///会员信息查询 
    {
    	system("cls");
    	FILE *fp;
    	List3 head,p1,p2;
        char key1[20];
    	p1 = head = (List3)malloc(sizeof(struct Vip));
    	head->next = NULL;
    	fp = fopen("Vip_list.txt","r");
    	if (fp == NULL )
    	{
    		printf("\t\t\t\t  尚未创建会员目录,任意键返回!");
    		getch(); 
    		Vip_manage();
    	}
    	while(!feof(fp))
    	{
    		p2 = (List3)malloc(sizeof(struct Vip));
    		fscanf(fp," %d %s %s %f\n",&p2->num,p2->nam,p2->phone,&p2->score);
    		p1->next=p2;
    		p2->next=NULL;
    		p1=p2;
    	}
    	fclose(fp);
    	printf("\t\t\t\t  输入查询条件,可输入姓名或手机号\n\t\t\t\t  ");
    	scanf("%s",key1);
    	Vip_finding(key1,head);	
    }
    void Vip_use(char *key,float money)///购买时使用 
    {
    	FILE *fp;
    	int i,j=0,flag = 0;
    	List3 head,p1,p2;
    	fp = fopen("Vip_list.txt","r");
    	p1 = head = (List3)malloc(sizeof(struct Vip));
    	head->next=NULL;
    	while(!feof(fp))
    	{
    		p2 = (List3)malloc(sizeof(struct Vip));
    		fscanf(fp," %d %s %s %f\n",&p2->num,p2->nam,p2->phone,&p2->score);
    		p1->next=p2;
    		p2->next=NULL;
    		p1 = p2;
    	}
    	fclose(fp);
    	fp = fopen("Vip_list.txt","w");
    	p2 = head->next;
    	while (p2)
    	{
    		i = 0; 
    		if(!strcmp(p2->phone,key))
    		{
    			i=1;
    			flag = 1;
    			fprintf(fp," %d %s %s %f\n",p2->num,p2->nam,p2->phone,money); 
    		}
    		if(i==0)
    		{
    			fprintf(fp," %d %s %s %f\n",p2->num,p2->nam,p2->phone,p2->score); 
    		}
    		p2 = p2->next;
    	}
    	fclose(fp);
    	if(flag == 0)
    	{
    		printf("\t\t\t\t  会员未被录入,请录入后下次使用!\n"); 
    	}
    	printf("\t\t\t\t  积分成功!"); 
    }
    void Vip_finding(char *key,List3 headold)///当前条件深度查询 
    {
    	system("cls");
    	char i,keyy[20];
    	int j=0;
    	List3 p,head,p1,p2;
    	p = headold->next;
    	p1 = head = (List3)malloc(sizeof(struct Vip));
    	head->next = NULL;
    	while (p)
    	{
    		if(!strcmp(p->nam,key) ||!strcmp(p->phone,key))
    		{
    			j=1;
    			printf("\t\t\t\t  编号      姓名       手机号码    积分\n");
    			printf("\t\t\t\t  ----------------------------------------\n");
    			printf("\t\t\t\t  %-10d%-10s %-10s %-10.2f\n",p->num,p->nam,p->phone,p->score);
    			p2 = (List3)malloc(sizeof(struct Vip));
    			p2->num = p->num;
    			strcpy(p2->nam,p->nam);
    			strcpy(p2->phone,p->phone);
    			p2->score = p->score;
    			p2->next = NULL;
    			p1->next = p2;
    			p1 = p2;
    			p2=p2->next;
    		}
    		p=p->next;
    	}
    	if(j==0)
    	{
    		printf("\t\t\t\t  无对应会员,任意键返回上层!");
    		getch();
    		Vip_find(); 
    	}
    	printf("\n\t\t\t\t  是否继续查询,回车在当前条件下继续查询,任意键返回上层\n");
    	i = getch();
    	if (i==13)
    	{
    		printf("\t\t\t\t  输入查询条件,可选择 名字 编号 尺寸 颜色\n");
    		scanf("%s",keyy);
    		Vip_finding(keyy,head);
    	} 
    	Vip_manage(); 
     } 
    void Sale_system()///第五界面   销售管理界面 
    {
    	system("cls");
    	int x4;
    	printf("\t\t\t\t  ****************销售管理界面**************\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\n");
    	printf("\t\t\t\t  ***********    1.使用记录@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ***********  2.销售产品排序@_@ ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ***********    3.返回上层@_@   ***********\n");
    	printf("\n");
    	printf("\t\t\t\t  ******************************************\n");
    	printf("\t\t\t\t  ") ;
    	scanf("%d",&x4);
    	switch (x4)
    	{
    		case 1:
    			Use_history();
    			break;
    		case 2:
    			Data_sort();
    			break;
    		case 3:
    			Adm_manage();
    			break;
    		default :
    		    printf("\n\t\t\t\t  未被定义,按任意键返回上层\n") ;
    		    getch();
    			system("cls"); 
    			Adm_manage();
    	}
    }
    void Sale_list()///所有服装的罗列
    {
    	FILE *fp;
    	printf("\t\t\t\t  当前店铺所有服装信息有:\n") ;
    	printf("\t\t\t\t ***********************************************************************\n");
    	printf("\t\t\t\t *编号      品牌           名称      尺寸      颜色      价格      总数*\n");
    	fp = fopen("Clo_list.txt","r");
    	List2 head,p1,p2;
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head ->next = NULL;
    	while(!feof(fp))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		p1->next=p2;
    		p2->next=NULL;
    		p1=p2;
    	}	
    	p2 = head->next;
    	while(p2)
    	{
    		printf("\t\t\t\t *---------------------------------------------------------------------*\n");
    		printf("\t\t\t\t *%-10d%-15s%-10s%-10s%-10s%-10.2f%-4d*\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    		p2 = p2->next;
    	}
    	fclose(fp);
    	printf("\t\t\t\t ***********************************************************************\n");
    } 
    void Sale_window()///销售窗口 
    {
    	system("cls");
    	Sale_list();
    	FILE *fp1,*fp2;
    	char key[20],j,brand[20],nam[20];
    	int many,i,num,flag=0;
    	float money;
    	List2 head,p1,p2;
    	fp1 = fopen("Clo_list.txt","r");
    	if(fp1 == NULL)
    	{
    		printf("\n\t\t\t\t  暂无服装可销售,任意键返回!");
    		getch();
    		Sale_system(); 
    	}
    	fp2 = fopen("Sale_history.txt","a");
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	while (!feof(fp1))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp1," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		p2->next = NULL;
    		p1->next = p2;
    		p1 = p2;
    	}
    	fclose(fp1);
    	printf("\t\t\t\t  输入欲购买服装编号、名称、颜色或品牌:(也可输入名字或品牌关键字)");
    	scanf("%s",key);
    	p2 = head->next;
    	while(p2)
    	{
    		flag = 0;
    		if(!strcmp(p2->nam,key) || !strcmp(p2->color,key) || !strcmp(p2->brand,key) ||strstr(p2->brand,key)||strstr(p2->color,key)||strstr(p2->nam,key)||atoi(key) == p2->num)
    		{
    			fp1 = fopen("Clo_list.txt","w"); 
    			break;
    		}
    		else
    		{
    			flag = 1;
    		}
    		p2 = p2->next;	
    	}
    	if(flag == 1)
    	{
    		printf("\t\t\t\t  查无此服装类型,请重新输入查找条件:");
    		getch();
    		Sale_window(); 
    	}
    	p2 = head->next;
    	while(p2)
    	{
    		i=0;
    		if(!strcmp(p2->nam,key) || !strcmp(p2->color,key) || !strcmp(p2->brand,key) || strstr(p2->nam,key) ||strstr(p2->brand,key) ||atoi(key) == p2->num)
    		{
    			printf("\t\t\t\t  该服装信息为:\n\t\t\t\t  编号      品牌           名称      尺寸      颜色      价格      总数\n");
    			printf("\t\t\t\t  %-10d%-15s%-10s%-10s%-10s%-10.2f%-10d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    			printf("\t\t\t\t  是否购买?\n\t\t\t\t  回车购买,任意键继续检索该编号、名、称颜色或品牌的服装!\n");
    			j = getch();
    			if(j==13)		
    			{
    				i=1;
    				printf("\t\t\t\t  输入购买数量:");
    				scanf("%d",&many);
    				p2->amount = p2->amount-many;
    				while(p2->amount<0)
    				{
    					printf("\t\t\t\t  库存不足,请减少购买数量");
    					p2->amount = p2->amount+many;
    					scanf("%d",&many);
    					if(p2->amount-many<0)
    					{
    						printf("\t\t\t\t  不好意思,该服装暂时缺货。\n\t\t\t\t  将返回上层!");
    						getch();
    						Sale_window(); 
    						break;
    					}
    					p2->amount = p2->amount-many;
    				}
    				money = many*p2->price; 
    				fprintf(fp2," %d %s %s %s %s %.2f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,money,many);	
    				printf("\t\t\t\t  是否使用会员进行积分?\n\t\t\t\t  回车使用,任意键跳过.");
    				j = getch();
    				{
    					if(j==13)
    					{
    						printf("\n\t\t\t\t  输入电话号码:"); 
    						scanf("%s",key);
    						Vip_use(key,money);
    					}
    				} 		
    			}		 
    		}
    		fprintf(fp1," %d %s %s %s %s %.2f %d\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    		if(p2->next==NULL)
    		{
    			printf("\n\t\t\t\t  检索完毕,无更多相关信息,\n\n\t\t\t\t  回车重新进行购买,任意键返回!\n\t\t\t\t  "); 
    		}
    		p2 = p2->next;	
    	}
    	fclose(fp1);
    	fclose(fp2);
    	j = getch();
    	if(j==13)
    	{
    		Sale_window();
    	} 
    	Vis_window();
    }
    void Use_history()///使用历史 
    {
    	FILE *fp1;
    	int i=0,j=1,sum=0,n=Clo_stat();
    	float in_all=0;
    	struct Clo sale_data[n];
    	List2 head, p1 , p2;
    	p1 = head =(List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	fp1 = fopen("Sale_history.txt","r");
    	printf("\t\t\t\t  当前销售出的服装及其信息为:\n");
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格      总数     *\n"); 
    	while(!feof(fp1))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp1," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",p2->num,p2->brand,p2->nam,p2->size,p2->color,p2->price,p2->amount);
    		printf("\t\t\t\t *----------------------------------------------------------------------*\n");
    		sum+=p2->amount;
    		in_all+=p2->price;
    		p2->next = NULL;
    		p1->next = p2;
    		p1 = p2;
    	}
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t  总销售量为%d,总销售额为%.2f ",sum,in_all);
    	fclose(fp1);
    	for (i=0;i<n;i++)
    	{
    		sale_data[i].num = 0;
    		sale_data[i].price = 0;
    		sale_data[i].amount = 0;
    		strcpy(sale_data[i].nam,"******");
    		strcpy(sale_data[i].size,"******");
    	}
    	p2 = head->next;
    	while(p2)
    	{
    		for(i=0;i<n;i++)
    		{
    			if(!strcmp(sale_data[i].nam,"******"))
    			{
    				strcpy(sale_data[i].nam,p2->nam);
    				strcpy(sale_data[i].brand,p2->brand);
    				strcpy(sale_data[i].color,p2->color);
    				strcpy(sale_data[i].size,p2->size);
    				sale_data[i].num = p2->num;
    				break;
    			}	
    			if(!strcmp(sale_data[i].nam,p2->nam))	
    			{
    				if(p2->num==sale_data[i].num)
    				{
    					strcpy(sale_data[i].nam,p2->nam);
    					strcpy(sale_data[i].brand,p2->brand);
    					strcpy(sale_data[i].color,p2->color);
    					strcpy(sale_data[i].size,p2->size);
    					sale_data[i].num = p2->num;
    					break;
    				}
    				else
    				{
    					strcpy(sale_data[i+j].nam,p2->nam);
    					strcpy(sale_data[i+j].brand,p2->brand);
    					strcpy(sale_data[i+j].color,p2->color);
    					strcpy(sale_data[i+j].size,p2->size);
    					sale_data[i+j].num = p2->num;
    					j++;
    					break;
    				}
    			}			
    		}
    		p2 = p2->next;
    	}
    	p2 = head->next;
    	while(p2)
    	{
    		for(i=0;i<n;i++)
    		{
    			
    			if((p2->num==sale_data[i].num))
    			{
    				sale_data[i].price+=p2->price;
    				sale_data[i].amount+=p2->amount;
    			}
    		}
    		p2 = p2->next;
    	}
    	system("cls"); 
    	fp1 = fopen("Sale_clear.txt","w");
    	printf("\n\t\t\t\t  每种服装销售状况为:\n");
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格      总数     *\n");
    	for (i=0;i<n;i++)
    	{
    		if(!strcmp(sale_data[i].nam,"******"))
    		{
    			break;
    		}
    		fprintf(fp1," %d %s %s %s %s %.2f %d\n",sale_data[i].num,sale_data[i].brand,sale_data[i].nam,sale_data[i].size,sale_data[i].color,sale_data[i].price,sale_data[i].amount);
    		printf("\t\t\t\t *----------------------------------------------------------------------*\n");
    		printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",sale_data[i].num,sale_data[i].brand,sale_data[i].nam,sale_data[i].size,sale_data[i].color,sale_data[i].price,sale_data[i].amount);
    	}
    	fclose(fp1);
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t  任意键返回上层!");
    	getch();
    	Sale_system();
    }
    int Sale_stat()///记录销售服装种类数 
    {
    	FILE *fp;
    	fp = fopen("Sale_clear.txt","r");
    	char nam[20],brand[20],size[20],color[20];
    	int amount,sum=0,num;
    	float price;
    	while(!feof(fp))
    	{
    		fscanf(fp," %d %s %s %s %s %f %d\n",&num,brand,nam,size,color,&price,&amount);
    		sum++;
    	} 
    	fclose(fp);
    	return sum;
    }
    void Data_sort()///数据排序 
    {
    	system("cls"); 
    	FILE *fp;
    	fp = fopen("Sale_clear.txt","r");
    	int i=0,j,k,n = Sale_stat();
    	List2 head,p1,p2,l,group[n];
    	p1 = head = (List2)malloc(sizeof(struct Clo));
    	head->next = NULL;
    	while(!feof(fp))
    	{
    		p2 = (List2)malloc(sizeof(struct Clo));
    		group[i] = (List2)malloc(sizeof(struct Clo));
    		fscanf(fp," %d %s %s %s %s %f %d\n",&p2->num,p2->brand,p2->nam,p2->size,p2->color,&p2->price,&p2->amount);
    		group[i] = p2;
    		p2->next = NULL;
    		p1->next = p2;
    		p1 = p2;
    		i++;
    	}
    	fclose(fp);
    	printf("\t\t\t\t  按价格收入排序有:\n");
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); 
    	for (j=0;j<n;j++)
    	{
    		for (k=0;k<n-1-j;k++)
    		{
    			if( group[k]->price < group[k+1]->price )
    			{
    				l = (List2)malloc(sizeof(struct Clo));
    				l=group[k+1];
    				group[k+1]=group[k];
    				group[k]=l;
    			}
    		}		
    	} 
    	for(i=0;i<n;i++)
    	{
    		printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);
    	} 
    	printf("\t\t\t\t ************************************************************************\n\n");
    	printf("\t\t\t\t  按销量排序为:\n");
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); 
    	l = (List2)malloc(sizeof(struct Clo));
    	for (j=0;j<n;j++)
    	{
    		for (k=0;k<n-1-j;k++)
    		{
    			if( (group[k]->amount) < (group[k+1]->amount) )
    			{
    				l=group[k+1];
    				group[k+1]=group[k];
    				group[k]=l;
    			}
    		}		
    	}  
    	for(i=0;i<n;i++)
    	{
    		printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);
    	} 
    	printf("\t\t\t\t ************************************************************************\n\n");
    	printf("\t\t\t\t  销量最高的服装信息为:\n");
    	printf("\t\t\t\t ************************************************************************\n");
    	printf("\t\t\t\t *编号      品牌       名称      尺寸      颜色      价格     总数      *\n"); 
    	for (i=0;i<3;i++)
    	{
    		printf("\t\t\t\t *%-10d%-10s%-10s%-10s%-10s%-10.2f%-10d*\n",group[i]->num,group[i]->brand,group[i]->nam,group[i]->size,group[i]->color,group[i]->price,group[i]->amount);	
    	}
    	printf("\t\t\t\t ************************************************************************\n\n");
    	printf("\t\t\t\t  任意键返回上层!");
    	getch();
    	Sale_system();	
    }
    main()
    { 
    	system("color 3F");
    	enter();
    }
    

    这是全部代码,有需要流程图之类的可以私聊我这个小萌新的哈。

    展开全文
  • C语言程序设计课程总结

    千次阅读 2019-01-04 22:19:57
    转眼间,C语言学习已过去了一学期。通过这一学期的学习,已经可以解决一些简单的实际问题了,但是距离真正的编程还是有很大距离的。C语言精髓之处也只是简单了解了一下,指针和数组的强大还没有真切体会到。 以下是...
       转眼间,C语言学习已过去了一学期。通过这一学期的学习,已经可以解决一些简单的实际问题了,但是距离真正的编程还是有很大距离的。C语言精髓之处也只是简单了解了一下,指针和数组的强大还没有真切体会到。
      以下是对一学期学习成果的总结
    

    一. C语言的基本语句
    #include
    using namespace std;
    int main ()
    {

        return 0;
    

    }
    这串代码会出现在所有C程序中。
    二. 关键字(计算机认识的词)
    auto :声明自动变量
    break:跳出当前循环
    case:开关语句分支
    char :声明字符型变量或函数返回值类型
    const :声明只读变量
    continue:结束当前循环,开始下一轮循环
    default:开关语句中的“默认”分支
    do :循环语句的循环体
    double :声明双精度浮点型变量或函数返回值类型
    else :条件语句否定分支(与 if 连用)
    float:声明浮点型变量或函数返回值类型
    for:一种循环语句
    goto:无条件跳转语句
    if:条件语句
    int: 声明整型变量或函数
    long :声明长整型变量或函数返回值类型
    return :子程序返回语句(可以带参数,也可不带参数)
    short :声明短整型变量或函数
    signed:声明有符号类型变量或函数
    sizeof:计算数据类型或变量长度(即所占字节数)
    switch :用于开关语句
    unsigned:声明无符号类型变量或函数
    void :声明函数无返回值或无参数,声明无类型指针
    while :循环语句的循环条件
    各种运算符号
    三.运算符(计算机能够理解的运算种类)
    1 算术运算符
    用于各类数值运算。包括加(+)、减(-)、乘()、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。
    2.关系运算符
    用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
    3.逻辑运算符
    用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
    4.位操作运算符
    参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
    5.赋值运算符
    用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,
    =,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
    6.条件运算符
    这是一个三目运算符,用于条件求值(??
    7.指针运算符
    用于取内容(*)和取地址(&)二种运算
    8.求字节数运算符
    用于计算数据类型所占的字节数(sizeof)。
    四.逻辑结构(计算机运算方式)
    1.顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句;
    2.选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;
    3.循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次;
    以上就是一个完整C程序的基本组成部分,其实还有其他的基础内容,只不过还没有学过,因此没有做总结。
    五.数组(同类型的数据的容器)
    许多同类型数据的集合就是数组,数组的使用与普通数据并没有太大区别,并且通过数组中的脚标可以对数组内的数据进行操作。
    六.指针(直指计算机的存储空间)
    指针赋予了程序员近乎上帝般的能力,有了指针,程序员可以根据自己的需要直接更改数据的存储位置及数据本身,即操控数据。
    当指针与数组结合,程序员可以直接接触计算机本身,从根本上操控计算机。
    C很简单,几十条关键词,十几种运算符,三种逻辑结构而已;C很难,计算机是死的,很多时候会钻牛角尖,而且错误难找,因为程序员需要对问题进行透彻的分析,理清其涉及的所有细节,预测可能发生的所有意外与非意外的情况,列出解决方案的所有步骤,以及对解决方案进行尽量全面的测试。而这些正是编程难的地方。任何一点遗漏都会成为bug,轻则导致挨骂,重则导致经济损失甚至危害安全。
    C的魅力越发吸引人,期待下学期对它的深入学习。

    展开全文
  • 本次课程设计使用C语言制作程序来实现图书的登记,删除,查询,浏览以及读者的借阅,还书,会员登录,修改密码等功能。程序中涉及到数据链表和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等...

    C课程设计——图书管理系统

    1、题目意义

    图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用C语言制作程序来实现图书的登记,删除,查询,浏览以及读者的借阅,还书,会员登录,修改密码等功能。程序中涉及到数据链表和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。

    2、设计思想

    ①新建账号密码,然后通过二者的匹配登录系统,这样可以保证是本校同学才能使用,另外还可以修改密码。
    ②添加图书的基本信息,如 书号,书名,作者,出版社,类别,进库量;
    ③删除图书,通过图书的书名进行删除;
    ④图书查询,通过图书的书号,书名,作者或者类别进行检索;
    ⑤浏览图书的库存,将所有数目展示出来;
    ⑥借书登记,先判断是否有这本数,然后进行借书人学号,姓名,归还截止期限,借书书名进行登记
    ⑦还书情况查看。
    ⑧借阅情况查看。
    ⑨会员登录,通过数据文件中的已注册的账号密码来登录到图书管理系统。
    ⑩修改密码

    3.总设计框架图

    在这里插入图片描述

    4.代码展示

    在这里插入图片描述
    在这里插入图片描述

    #include <stdio.h>
    #include <stdlib.h>//其中包含system函数
    #include <conio.h>//定义了通过控制台进行 数据输入 和数据输出的函数,如getch函数。
    #include <string.h>//定义字符数组
    #include <math.h>
    #define LEN sizeof(struct book)//有关图书信息的结构体
    #define LEN1 sizeof(struct reader)//有关读者信息的结构体
    #define LEN2 sizeof(struct land)//有关登录系统的结构体
    
    
    struct book//图书信息
    {
    	char num[20],nam[20],aut[20],pub[20],cat[20];
    	int  many;
    	float price;
    	struct book*next;
    };
    
    struct reader//读者借阅信息
    {
    	int jnum;
    	char jnam[20],time[20],tsnam[20];
    	struct reader *next;
    };
    struct land//登录信息
    {
    	int zhanghao;
    	char password[20];
    	struct land*next;
    };
    
    
    
    int tjzs();//统计library文本个数函数
    void xg(int,char[] );
    void mainmenu();//显示主菜单
    void tsmenu();//显示图书信息菜单
    void jmenu();//显示借阅信息菜单
    void lmenu();//显示登录菜单
    
    void main1();// 主菜单功能
    void tsmain();//图书菜单功能
    void cxts();//查询图书
    void zjts();//增加图书
    void scts();//删除图书
    void llts();//浏览图书
    
    void jmain();//读者借阅信息
    void js();//借书
    void hs();//还书
    void cxjs();//查询借书
    void lljs();// 浏览借书情况
    
    void land();//登录功能系统
    int xinjian(int,char[] );//创建账号密码
    void xgmm();//修改密码
    void lmain();//登录界面函数
    
    
    int tjzs()//统计图书文本个数
    {
    FILE *fp;
    int txcl=0,n;
    float tprice=0;
    char tname[20]={'\0'},tauthor[20]={'\0'},tchuban[20]={'\0'},tkind[20]={'\0'},tshuhao[20]={'\0'};
    fp=fopen("library.txt","r");//打开文件
    for (n=0;!feof(fp);n++)//逐个读文件
    fscanf(fp,"%s%s%s%s%s%d%f",tshuhao,tname,tauthor,tchuban,tkind,&txcl,&tprice);
    n--;
    fclose(fp);//关闭文件
    return (n);//返回个数
    }
    
    
    int tjdzzs()//统计文读者本个数函数
    
    {
    FILE *fp;
    int zhenghao=0,n;
    char mingzi[20]={'\0'},riqi[20]={'\0'},zname[20]={'\0'};
    fp=fopen("reader.txt","r");//打开文件
    for (n=0;!feof(fp);n++)//逐个读文件
    fscanf(fp,"%d%s%s%s ",&zhenghao,&mingzi,&riqi,&zname);
    n--;
    fclose(fp);//关闭文件
    return (n);//返回个数
    }
    
    
    int tjzs3()//统计账号密码文本个数
    {
    FILE *fp;
    int zhao=0,n;
    char mm[20]={'\0'};
    fp=fopen("land.txt","r");//打开文件
    for (n=0;!feof(fp);n++)//逐个读文件
    fscanf(fp,"%d %s",&zhao,mm);
    n--;
    fclose(fp);//关闭文件
    return (n);//返回个数
    }
    
    
    void mainmenu()//主菜单
    {
    system ("cls");
    
    printf("**************************************************");
    
    printf("\n\n 1.图书系统\n\n");
    
    printf("\n\n 2.借阅系统\n\n");
    
    printf("\n\n 3.退出系统\n\n");
    
    printf("\n\n 请按键选择,回车确定\n");
    
    printf("*************************************************\n");
    
    return ;
    }
    
    
    void tsmenu() //图书馆信息菜单
    {
    system ("cls");
    
    printf("****************************************************");
    
    printf("\n 1.增加图书\n\n");
    
    printf("\n 2.删除图书\n\n");
    
    printf("\n 3.查询图书\n\n");
    
    printf("\n 4.库存浏览\n\n");
    
    printf("\n 5.返回上一层\n\n");
    
    printf("\n 请按键选择,回车确定\n");
    
    printf("***************************************************\n");
    
    return ;
    
    }
    
    
    void main1()
    {
    	void tsmian();
    	void jmain();
    	char choose;
    	mainmenu();
    	scanf(" %c",&choose);
    	switch(choose)//功能函数
      {
    	  case'1':
    	    tsmain();
    	    break;
    	  case'2':
    	  	jmain();
    	  	break;
    	  case'3':
    	  	system("cls");
        getch();
      	exit(0);
      	system ("cls");
    	break;
      }
    }
    
    
    void tsmain()
    {
    	void zjts();
    	void scts();
    	void ctts();
    	void llts();
    	char choose;
    	tsmenu();
    	scanf(" %c",&choose);
    	for(;;)
    	{
    		switch(choose)
    	{
    	case'1':
    		zjts();
    		break;
    	case'2':
    		scts();
    		break;
    	case'3':
    		cxts();
    		break;
    	case'4':
    		llts();
    		break;
    	case'5':
    		main1();
    		break;
    	}
        }
    }
    
    
    void zjts()//增加图书
    {
    	FILE*fp;
    	char i;
    	int many=0;
        float price=0;
        char  nam[20]={'\0'},aut[20]={'\0'},cat[20]={'\0'},pub[20]={'\0'},num[20]={'\0'};
        system ("cls");
    
        if ((fp=fopen("library.txt","r"))==NULL)//if语句:打开图书馆文件,不存在此文件则新建
    	{
          fp=fopen("library.txt","w");
          fclose(fp);
        }
    	fp=fopen("library.txt","a");
    	
    	printf("\n请按以下格式输入图书信息:\n书号 书名 作者 出版社 类别 进库量 单价");
    	
    	for(;i!=27;)//为了实现输入一次后按esc退出
    	{
    		printf("请输入:\n");
    		scanf("%s%s%s%s%s%d%f",num,nam,aut,pub,cat,&many,&price);
    		fprintf(fp,"%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",num,nam,aut,pub,cat,many,price);
    	    printf("继续输入请按回车,结束输入请按Esc\n");
            i=getch();//暂停程序当i接收后继续下一条指令
            for (;i!=13&&i!=27;)//保证只能是CR和ESC才能退出循环,输入其他字符无用,暂停程序,按'CR'继续。
            i=getch();
         }
    
    	fclose(fp);
        printf("\n保存成功,按任意键返回上一层!");
        getch();
    	tsmain();//返回上一层
    }
    
    void scts()//删除图书
    {
    	   struct book *head=NULL;
           struct book *p,*p1,*p2;
           int tmany=0,n=0,j,k;
           float tprice=0;
           char  tnam[20]={'\0'},taut[20]={'\0'},tcat[20]={'\0'},tpub[20]={'\0'},tnum[20]={'\0'};
    	   char jjnam[20]={'\0'};
    	   char i;
           FILE *fp;
           if ((fp=fopen("library.txt","r"))==NULL)//打开文件
           {
    	       system ("cls");
               printf("\n记录文件不存在!按任意键返回");
               getch();
               tsmain();
           }
    
    	   else//实现删除的功能
    	   {
    	      system ("cls");
    	      printf("\n请输入你要删除的书名:");//输入删除图书书名
              scanf("%s",jjnam);
              printf("\n确认删除请回车,取消请按Esc\n");
              i=getch();
              for(;i!=13&&i!=27;)
              i=getch();
              if (i==27)
              tsmain();
    	      fp=fopen("library.txt","r");
    		 j=tjzs();
    
    	   for (k=0;k<j;k++)
           {
    	       fscanf(fp,"%s%s%s%s%s%d%f",tnum,tnam,taut,tpub,tcat,&tmany,&tprice);
               if (strcmp(jjnam,tnam))//比较名字,将不同名字的信息复制到链表
              {
    	          n++;//相同返回值为0不执行if语句继续循环,不同则执行直到将所有不同的书名建立成链表
    	            if (n==1)//建立链表
                    {
    		          p1=p2=(struct book*)malloc(LEN);
                      head=p1;
    				}
                    else
    			    {
    			      p2->next=p1;
    				  p2=p1;
                      p1=(struct book*)malloc(LEN);//新建链表
                    }
    
                    strcpy(p1->num,tnum);//复制书号
                    strcpy(p1->nam,tnam);//复制书名
                    strcpy(p1->aut,taut);//复制作者名字
                    strcpy(p1->pub,tpub);//复制出版社
                    strcpy(p1->cat,tcat);//复制类别
                    p1->many=tmany;//复制个数
                    p1->price=tprice;//复制单价
               }
           }
                 if (n==0)//如果图书只有一项且这一项刚好和要删除的相同
    			 {
    			 head=NULL;
    			 }
    			 else//建立链表的最后剩余一个储存空间,所以封底
    			 {
    			 p2->next=p1;
    			 p1->next=NULL;
    			 fclose(fp);
    			 }
        }
    
       fp=fopen("library.txt","w");//清空文件,只写打开,然后关闭
       fclose(fp);
       fp=fopen("library.txt","a");//追加文件
       p=head;
    
       for (;p!=NULL;)//把链表内容覆盖到文件
       {
       	   fprintf(fp,"%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",p->num,p->nam,p->aut,p->pub,p->cat,p->many,p->price);
       	   p=p->next;
       }
       fclose(fp);
       system ("cls");
       printf("\n删除成功 \n按任意键返回上一层\n");
       getch();//返回上一层
       tsmain();
    }
    
    
    void cxts()//查询图书
    {
    	   FILE *fp;
           int k=0,many=0,m=0,n=0;
    	   float price=0;
           char  nam[20]={'\0'},aut[20]={'\0'},cat[20]={'\0'},pub[20]={'\0'},num[20]={'\0'};
           char i;
           char chazhao[20]={'\0'};
           if ((fp=fopen("library.txt","r"))==NULL)//打开文件
           {
    	       system ("cls");
               printf("\n记录文件不存在!按任意键返回");
      		   getch();
    		   tsmain();
           }
    	   system("cls");
           printf("请输入书号,书名,作者或类别查询:\n");
           scanf("%s",chazhao);
           system ("cls");
           m=tjzs();
    
    	   for (n=0;n<m;n++)
    	   {
    	    fscanf(fp,"%s%s%s%s%s%d%f",num,nam,aut,pub,cat,&many,&price);
            if(!strcmp(chazhao,num)||!strcmp(chazhao,nam)||!strcmp(chazhao,aut)||!strcmp(chazhao,cat))
            {
            	if(k==0)
                {
    			  printf("查询结果:\n\n");
    			  printf("书号\t书名\t作者\t\t出版社\t\t类别\t\t现存量\t单价\n");
                }
    			printf("%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",num,nam,aut,pub,cat,many,price);
                k++;
            }
           }
            if (k==0)//文件夹为空则输出无记录并返回上一层
            { system ("cls");
            printf("\n无符合记录!\n");
            getch();
            tsmain();
    		}
    		fclose(fp);//查询结束
    		getch();
    		tsmain();
    }
    
    
    void llts()//浏览图书
    {
    	FILE *fp;
    	int n=0;
           int k=0,m=0,many=0;
    	   float price=0;
           char  nam[20]={'\0'},aut[20]={'\0'},cat[20]={'\0'},pub[20]={'\0'},num[20]={'\0'};
      	   char i;
    	   if ((fp=fopen("library.txt","r"))==NULL)//打开文件
           {
    	       system ("cls");
               printf("\n记录文件不存在!按任意键返回");
    		   getch();//返回
               tsmain();
    	   }
    	   n= tjzs();
           if (n==0)
          {
    	  system ("cls");
          printf("\n无任何记录!");
          }
    
    	     fp=fopen("library.txt","r");//打开只读文件
             system ("cls");
    	     printf("书号\t书名\t作者\t\t出版社\t\t类别\t\t库存量\t单价\n");
      
    	   for (m=0;m<n;m++)//输出数据
    	     {
    	     fscanf(fp,"%s%s%s%s%s%d%f",num,nam,aut,pub,cat,&many,&price);
    		 printf("%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",num,nam,aut,pub,cat,many,price);
    	 	}
    		fclose(fp);
            printf("\n按任意键返回\n");
            getch();
            tsmain();
    }
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`!~~~~~~~~~~~~~~~~~~~~~
    	
    void jmenu()//显示借书菜单
    {
    	system("cls");
    	printf("*****************************************************");
    	printf("\n\n 1.借书登记\n\n");
    	printf("\n\n 2.还书登记\n\n");
    	printf("\n\n 3.借阅情况查看\n\n");
    	printf("\n\n 4.查询借书\n\n");
        printf("\n\n 5.返回上一层\n\n");
    	printf("\n\n 请按键选择,回车确定\n");
    	printf("****************************************************");
    	return ;
    }
    
    
    void jmain()//借阅系统函数
    {
    	void js();
    	void hs();
    	void lljs();
    	void cxjs();
    	char choose;
    	jmenu();
    	scanf(" %c",&choose);
    	for(;;)
    	{
    		switch(choose)
    		{
    			case'1':
    			js();
    			break;
    			case'2':
    			hs();
    			break;
    			case'3':
    			lljs();
    			break;
    			case'4':
    			cxjs();
    			break;
    			case'5':
    			main1();
    			break;
    		}
    	}
    
    }
    
    
    
    void js()//借书函数
    {
    	FILE *fp,*fp3;
    	struct book *head=NULL;
        struct book *p,*p1,*p2;
        int i,loop,k,n=0,flag=0,s=0;
    	int jnum=0;
    	int many=0;
    	float tprice=0;
    	char tname[20]={'\0'},tauthor[20]={'\0'},tchuban[20]={'\0'},tkind[20]={'\0'},tshuhao[20]={'\0'},
             ttname[20]={'\0'},mingzi[20]={'\0'},riqi[20]={'\0'},zname[20]={'\0'};
    	char hit=0;
    
    	system("cls");
    	if((fp=fopen("library.txt","r"))==NULL)
    	{
    		system("cls");
    		printf("\n 图书馆无库存!按任意键退出!");
    		getch();
    		exit(0);
    	}
    	else
    	{
            printf("\n请输入借阅书名:\n请输入:");
    		scanf("%s",zname);
        k= tjzs();//统计图书馆文件个数
    
    	for (i=0;i<k;i++)//先将图书信息建立链表,更改库存
        	{
        		fscanf(fp,"%s%s%s%s%s%d%f",tshuhao,tname,tauthor,tchuban,tkind,&many,&tprice);
    			n++;
    			if(n==1)
    			{
    				p1=p2=(struct book*)malloc(LEN);
    				head=p1;
    			}
    		    else
               	{
                    p2->next=p1;
                    p2=p1;
                    p1=(struct book*)malloc(LEN);
    
                }
    			strcpy(p1->num,tshuhao);//复制书号
    			strcpy(p1->nam,tname);//复制书名
    			strcpy(p1->aut,tauthor);//复制作者
    			strcpy(p1->pub,tchuban);//复制出版社
    			strcpy(p1->cat,tkind);//复制类别
    			p1->many=many;//复制现存量
    			p1->price=tprice;//复制单价
            }
            if(n==0)
     		head=NULL;
    		else
    		 {
    		 	p2->next=p1;
    		 	p1->next=NULL;
    		 	fclose(fp);
    		 }
    
    	}
    	p=head;
    	
    	for (;p!=NULL;)
    	{
    		if(!(strcmp(p->nam,zname)))//判断要借书的是否存在,标记等于1,存在库存减一
    		{
    			
                flag=1;
    		 	loop=p->many;
    		 	(p->many)--;
    		 }
    			p=p->next;
      }
    	if(flag&&(loop>0))//存在被借的图书且现存量大于0,把库存量变化后的链表存入文件
        {
    
    		fp=fopen("library.txt","w");
        	fclose(fp);
        	fp=fopen("library.txt","a");
        	p=head;
    
    		for(;p !=NULL;)
        	{
        		fprintf(fp,"%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",p->num,p->nam,p->aut,p->pub,p->cat,p->many,p->price);
       		   	p=p->next;
    		}
    		free(p);
    		fclose(fp);
    
    		if ((fp3=fopen("reader.txt","r"))==NULL)//建读者文件夹存入借书信息
            {
    		    fp3=fopen("reader.txt","w");//打开只读文件
                fclose(fp3);
            }
    		fp3=fopen("reader.txt","a");
    
    		printf("\n请按以下格式输入读者信息:\n 证号 姓名 借书日期 借书书名\n请输入:");//录入读者信息
     		scanf("%d %s %s %s",&jnum,mingzi,riqi,zname);
    		fprintf(fp3,"\n%-8d%-23s%-18s%-10s\n",jnum,mingzi,riqi,zname);
    	    fclose(fp3);
            printf("借书成功!请两个月内归还!!!按任意键返回\n");
    		getch();//返回
    		jmain();//调用借阅系统
       }
    	else
        {
        	if(flag!=0)
            printf("此书已被借完!按任意键返回!");//否则输出此书已被借完
    		else
    		printf("查找无此书!按任意键返回");
    	}
    	    getch();//返回
            jmain();//调用借阅系统
    
    }
    
    
    void hs ()//还书函数
    {
     	 FILE *fp,*fp3;
    	 struct reader *head=NULL;
    	 struct reader *p,*p1,*p2;
    	 struct book *lhead1=NULL;
    	 struct book *zp1,*lp1,*lp2;
    	 int txcl=0,i;
    	 float tprice=0;
    	 char tname[20]={'\0'},tauthor[20]={'\0'},tkind[20]={'\0'},
    	 tchuban[20]={'\0'},ttname[20]={'\0'},tshuhao[20]={'\0'};
    	 int ttzhenghao=0,tzhenghao=0,n=0,k=0,t=0,flag=0;
    	 char tmingzi[20]={'\0'},triqi[20]={'\0'},tzname[20]={'\0'},ttzname[20]={'\0'};
    	 char hitkey=0;
    	 system ("cls");
    {
     	 if ((fp=fopen("reader.txt","r"))==NULL)//不存在读者文件,则输出不能还书
    	  {
             system ("cls");
    		 printf("\n 不存在借书者!按任意键退出!");
    		 getch();
    		 system("cls");
    		 jmain();
          }
    
    	  else
    	  {{
    	     printf("\n请输入读者证号和书名:\n请输入:");
    		 scanf("%d %s",&ttzhenghao,ttzname);//输入还书证号和书名
    		 k=tjdzzs();//获取读者文件夹信息个数
    		 for (i=0;i<k;i++)//读取读者文件夹信息
               {
    			fscanf(fp,"%d%s%s%s\n ",&tzhenghao,tmingzi,triqi,tzname);
    			if((ttzhenghao==tzhenghao)&&!strcmp(ttzname,tzname))//如果证号书名存在,则标记为1
    			flag=1;
    			}
          fclose(fp);
    	  fp=fopen("reader.txt","r");//打开读者文件,删除借书信息
    	  if(flag)
    	  {
    	  for (i=0;i<k;i++)//将读者文件复制到链表
    	  {
    	  fscanf(fp,"%d%s%s%s\n ",&tzhenghao,tmingzi,triqi,tzname);//读取文件信息
    	  if(!((ttzhenghao==tzhenghao)&&!strcmp(ttzname,tzname)))
    	  {
              n++;
    		  if (n==1)
    		  {
    		      p1=p2=(struct reader*)malloc(LEN1);//新建链表
    			  head=p1;
    		  }
    		  else
    		  {
    		        p2->next=p1;
    				p2=p1;
    				p1=(struct reader*)malloc(LEN1);//新建链表
              }
    		  p1->jnum=tzhenghao;//复制证号
    		  strcpy(p1->jnam,tmingzi);//复制读者名字
    		  strcpy(p1->time,triqi);//复制日
    		  strcpy(p1->tsnam,tzname);//复制书名
    		  }}
    		  if (n==0)
    		  head=NULL;
    		  else
    		  {
    		       p2->next=p1;
    			   p1->next=NULL;
    			   fclose(fp);
    	      }
    		  fp=fopen("reader.txt","w");//清空读者文件
    		  fclose(fp);
    		  fp=fopen("reader.txt","a");//追加信息
    		  p=head;
    		  for (;p!=NULL;)//把链表内容覆盖读者文件
    		  {
    		      fprintf(fp,"\n%-8d%-23s%-18s%-10s\n",p->jnum,p->jnam,p->time,p->tsnam);
    			  p=p->next;
    	      }
    		  free(p);
    		  fclose(fp);
    		  }}}}
    
    		  if(flag)//标记为1,即还书时更改库存
    		  {{
    		  {
    		      printf("确认还书请按回车!");
    			  for (;hitkey!=13&&hitkey!=27;)
    			  hitkey=getch();
    			  if (hitkey==13)
    			  printf("成功!按任意键返回!");
    			  n=0;flag=0;
    			  fp3=fopen("library.txt","r");//打开图书馆文件
    			  k=tjzs();//获取图书馆文件个数
    			  for (i=0;i<k;i++)//将图书馆文件复制到链表
    			  {
    			       fscanf(fp3,"%s%s%s%s%s%d%f",tshuhao,tname,tauthor,tchuban,tkind,&txcl,&tprice);//读取信息
    				   n++;
    				   if (n==1)
    				   {
    				       lp1=lp2=(struct book*)malloc(LEN);//新建链表
    					   lhead1=lp1;
    				   }
    				   else
    				   {
    				       lp2->next=lp1;
    					   lp2=lp1;
    					   lp1=(struct book*)malloc(LEN);//新建链表
    				   }
    				   strcpy(lp1->num,tshuhao);//复制书号
    				   strcpy(lp1->nam,tname);//复制书名
    				   strcpy(lp1->aut,tauthor);//复制作者
    				   strcpy(lp1->pub,tchuban);//复制出版社
    				   strcpy(lp1->cat,tkind);//复制类别
    				   lp1->many=txcl; //复制现存量
    				   lp1->price=tprice;//复制单价
    				   }
    				   if (n==0)
    				   {
     	  		          lhead1=NULL;
    				   }
    				   else
    				   {
    				   	   lp2->next=lp1;
    				   	   lp1->next=NULL;
    				   	   fclose(fp3);
    				   }}}
    				   zp1=lhead1;
    				   for (;zp1!=NULL;)
    				   {
    				        if(!(strcmp(zp1->nam,ttzname)))//寻找书名相同
    						++(zp1->many);//现存量加1
    						zp1=zp1->next;
    					}
    					fp3=fopen("library.txt","w");//清空图书馆文件
    					fclose(fp);
    					fp3=fopen("library.txt","a");//追加信息
    					zp1=lhead1;
    					for (;zp1!=NULL;)//把链表内容覆盖图书馆文件
    					{
                             fprintf(fp3,"%-8s%-9s%-14s%-16s%-18s%-7d%-8.2f\n",
            				 zp1->num,zp1->nam,zp1->aut,zp1->pub,zp1->cat,zp1->many,zp1->price);
    						 zp1=zp1->next;
    				    }
    					fclose(fp3);
    					getch();//返回
    					jmain();//调用借阅系统
    					}
    					else
    					printf("不存在此信息!按任意键返回!");
    					getch();//返回
    					jmain();//调用借阅系统
    }
    
    
    void lljs()//显示借书情况函数
    
    {
        FILE *fp;
        int zhenghao=0,xcl=0,n=0,i=0,j=0;
        char mingzi[20]={'\0'},riqi[20]={'\0'},zname[20]={'\0'};
    	if ((fp=fopen("reader.txt","r"))==NULL)//打开读者文件夹
        {
            system ("cls");
            printf("\n记录文件不存在!按任意键返回");
    	    getch();
    	    jmain();
        }
        n=tjdzzs();
        if (n==0)
    	{ system ("cls");
    	printf("\n无任何记录!");
    	}
    	fp=fopen("reader.txt","r");
    	system ("cls");
    	printf("\n证号\t读者姓名\t\t借书日期\t书名\n");
    	for (;!feof(fp);)//输出文件信息
    	{
    	fscanf(fp,"%d%s%s%s\n ",&zhenghao,mingzi,riqi,zname);
    	printf("\n%-8d%-23s%-18s%-10s\n", zhenghao,mingzi,riqi,zname);
    	}
    	fclose(fp);
    	printf("\n按任意键返回\n");
    	getch();//返回
    	jmain();//调用借阅系统
    }
    
    					
    void cxjs()//查询借书
    {
    	   FILE *fp;
           int jsnum=0,k=0,many=0,m=0,n=0;
    
           char  jsnam[20]={'\0'},jstime[20]={'\0'},tsnam[20]={'\0'};
           char i;
           char chazhao[20]={'\0'};
           if ((fp=fopen("reader.txt","r"))==NULL)//打开文件
           {
    	       system ("cls");
               printf("\n记录文件不存在!按任意键返回");
      		   getch();
    		   jmain();
           }
    	   system("cls");
           printf("请输入证号或姓名查询:\n");
           scanf("%s",chazhao);
           system ("cls");
    	   m=tjzs();
    	   for (n=0;n<m;n++)
    	   {
    	    fscanf(fp,"%d%s%s%s",&jsnum,jsnam,jstime,tsnam);
            if(!strcmp(chazhao,jsnam)||(('chazhao'-'0')==jsnum))
            {
            	if(k==0)
                {
    			  printf("查询结果:\n\n");
    			  printf("\n证号\t读者姓名\t\t借书日期\t书名\n");
                }
    			printf("\n%-8d%-23s%-18s%-10s\n",jsnum,jsnam,jstime,tsnam);
                k++;
             }
           }
    	    if (k==0)//文件夹为空则输出无记录并返回上一层
            { system ("cls");
            printf("\n无符合记录!\n");
            getch();
            jmain();
    		}
           fclose(fp);//查询结束
    		getch();
    		jmain();
    }
    
    
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    
    void lmenu()//显示登录菜单
    {
    
    
    printf("\n\n\t    欢迎使用会员登录系统\n\n");
    printf("**********************************************");
    printf("\n\n\t\t1.登录系统\n\n");
    printf("\n\n\t\t2.创建账号\n\n");
    printf("\n\n\t\t3.修改密码\n\n");
    printf("\n\n\t\t4.退出系统\n\n");
    printf("\n\n\t    请按键选择,回车确定\n");
    printf("**********************************************");
    return ;
    }
    
    
    void lmain()//登录功能函数
    {
    	void land();
    	void xinjian();
    	char choose;
    	lmenu();
    	scanf(" %c",&choose);
    	switch(choose)//功能函数
      {
    	  case'1':
    	    land();
    	    break;
    	  case'2':
    	  	xinjian();
    	  	break;
    	  	case'3':
    	  	xgmm();
    	  	break;
    	  case'4':
    	  	system("cls");
        getch();
      	exit(0);
      	system ("cls");
    	break;
      }
    }
    
    
    
    void xinjian()//新建账户密码
    {
    	FILE *fp;
    	int zhanghao;
    	char password[20],password1[20];
    	char hit=0;
    	if ((fp=fopen("land.txt","r"))==NULL)//if语句:打开图书馆文件,不存在此文件则新建
    	{
          fp=fopen("land.txt","w");
          fclose(fp);
        }
        system("cls");
    	fp=fopen("land.txt","a");
    	for(;;)//输入两次密码确认,两次相同才能确认
    	{
    	   printf("\n请按以下格式输入账户:\n学号 密码\n");
    	   printf("请输入:");
    	   scanf("%d %s",&zhanghao,password);
           printf("再次输入密码:\n");
    	   scanf("%s",password1);
    	   if(strcmp(password,password1)==0)
    	   {
    	       fprintf(fp,"%d %s\n",zhanghao,password);
    		   break;
           }
           else
    	   {
    	       printf("两次输入密码不一致,继续创建按回车,退出按ESC");
    	       hit=getch();
    		   if(hit=27)
    		   system("cls");
    		   lmain();
    		         }
       }
       fclose(fp);
       printf("创建成功,按任意键返回");
       getch();
       system("cls");
       lmain();
    }
    
    
    
    int match(int m,char a[20])//匹配数据库中的账号密码
    {
    	FILE*fp;
    	int n=0,i=0;
    	int zhanghao;
    	char password[20];
    
    	if ((fp=fopen("land.txt","r"))==NULL)//不存在读者文件
    	  {
             system ("cls");
    		 printf("\n 还未存在用户!请新建账户");
    		 getch();
    	 	system("cls");
    		lmain();
    	
          }
    
    
            for(;!feof(fp);)
          {
            fscanf(fp,"%d%s",&zhanghao,password);
            if(m==zhanghao)
            {
            	if(strcmp(a,password)==0)
    			return 1;
    			else
    			{
    			return -1;
    		   }
    	    }
    	  }
    	  return 0;
     }
    
    void land()//输入账户密码的登录函数
    {
    	int zhanghao;
    	char password[20];
    	int i=2,j,k,n;
    	char hit=0;
    	system("cls");
    	do
    	{
    	   printf("\n请输入账号:\n");
           scanf("%d",&zhanghao);
           printf("确认输入请安回车,重新输入请按ECS");
           hit=getch();//暂停程序当i接收后继续下一条指令
           for (;hit!=13&&hit!=27;)//保证只能是CR和ESC才能退出循环,输入其他字符无用,暂停程序,按'CR'继续。
           {
    	        hit=getch();
    	   }
        }
        while(hit==27);
    	 printf("\n请输入密码:\n");
    	 scanf("%s",password);
         i=match(zhanghao,password);
         if(i==1)
    	 {
           printf("登陆成功!按任意键继续");
    	   getch();
    	   main1();
    	 }
    	 else
    	 {
    	 	if(i==-1)
    		 {
    		 printf("密码错误!");
    		 getch();
             land();
    		 }
    		 if(i==0)
    		 printf("不存在此用户");
    		 getch();
    		 system("cls");
    		 lmain();
    	 }
    }
    
    void xg(int z,char m[20])//修改函数
    {
    	FILE *fp;
    	int zhanghao1,n,j,k;
    	char mima1[20];
    	struct land *head,*p,*p1,*p2;
    
    	 fp=fopen("land.txt","r");
    	   j =tjzs3();
    
    	   for (k=0;k<=j;k++)
           {
    	       fscanf(fp,"%d %s",&zhanghao1,mima1);
               if (z!=zhanghao1)//比较名字,将不同名字的信息复制到链表
              {
    	            n++;//相同返回值为0不执行if语句继续循环,不同则执行直到将所有不同的书名建立成链表
    	            if (n==1)//建立链表
                    {
    		          p1=p2=(struct land*)malloc(LEN2);
                      head=p1;
    				}
                    else
    			    {
    			      p2->next=p1;
    				  p2=p1;
                      p1=(struct land*)malloc(LEN2);//新建链表
                    }
     				p1->zhanghao=zhanghao1;
                    strcpy(p1->password,mima1);//复制账号密码
              }
           }
            if (n==0)
    			 {
    			 head=NULL;
    			 }
    			 else//建立链表的最后剩余一个储存空间,所以封底
    			 {
    			 p2->next=p1;
    			 p1->next=NULL;
    			 fclose(fp);
    			 }
    			  fp=fopen("land.txt","w");//清空文件,只写打开,然后关闭
                  fclose(fp);
                  fp=fopen("land.txt","a");//追加文件
                  p=head;
                for (;p!=NULL;)//把链表内容覆盖到文件
       			{
       	   		 	fprintf(fp,"%d %s%\n",p->zhanghao,p->password);
       	   			p=p->next;
    	        }
    	        fprintf(fp,"%d %s\n",z,m);
                fclose(fp);
                 system ("cls");
    
    }
    
    
    
    void xgmm()//修改密码
    {
    
    	   FILE *fp;
           int zh=0,k=0,many=0,m=0,n=0;
           int chazhao,hit;
           char mima[20]={'\0'},password1[20]={'\0'};
           char  mm[20]={'\0'};
           char i;
    
           if ((fp=fopen("land.txt","r"))==NULL)//打开文件
           {
    	       system ("cls");
               printf("\n记录文件不存在!按任意键返回");
      		   getch();
      		   system("cls");
    		   lmain();
           }
    	   system("cls");
           printf("请输入你的帐号和旧密码:\n");
           scanf("%d %s",&chazhao,mima);
    	   m =tjzs3();
    	   for (n=0;n<=m;n++)
    	   {
    	    fscanf(fp,"%d %s",&zh,mm);
            if(zh==chazhao)
            {
            	if(!strcmp(mm,mima))
            	{
            		printf("请输入新的密码");
            		scanf("%s",mima);
           		    printf("再次输入密码:\n");
    	            scanf("%s",password1);
    	             if(strcmp(mima,password1)==0)
    	   			 {
    		             xg(chazhao,mima);
    		            getch();
    				    lmain();
    	                system("cls");
       			     }
           			  else
    	   			  {
    	       		   	  printf("两次输入密码不一致,按任意键退出");
    	       			  hit=getch();
    		   			  system("cls");
    				      lmain();
    
       				  }
    			}
    			else
    			{
    				printf("旧密码错误,按任意键返回!");
    				getch();
    				system("cls");
    				lmain();
    	            
    			}
    
            }
          }
    	   printf("不存在此账号,按任意键返回");
    		fclose(fp);//修改结束
    		getch();
    		system("cls");
    		lmain();
    }
    
    
    
    int main()
    {
    	system("color 1F");
    	lmain();
    	return 0;
    }
    
    

    5.遇到的难点及解决办法

    (1)不知道如何停止程序,以及只让程序在ESC和回车按下后才继续工作。
    解:查阅资料getch()
    所在头文件:conio.h
    函数用途:从控制台读取一个字符,但不显示在屏幕上
    函数原型:int getch(void)
    返回值:读取的字符
    代码: for(;i!=13&&i!=27;)
    i=getch();

    (2)不知道C语言未初始化的变量的值,导致无限循环。
    解:全局变量 、静态变量初始值为0
    局部变量,自动变量初始值随机分配

    (3)不知道如何快速清理文件和新建文件
    解:查阅览书本后知道,先只写文件,如果文件名和已存在的相同,那么就会先删除原有文件,而且如果不存在文件将会之间新建文件。
    fp=fopen(“library.txt”,“w”); \清空
    fclose(fp);
    if ((fp=fopen(“library.txt”,“r”))==NULL)//快速新建
    {
    fp=fopen(“library.txt”,“w”);
    fclose(fp);
    }

    (4)对a!=2和a=!2弄混淆
    解:a!=2:表示a不等于“2”;
    a=!2:表示a等于“!2”(0);

    (5)编译正确,但是有的时候scanf语句好像没有执行,输入数据回车,程序没反应
    解:查阅得知:
    这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的’\n’遗留在了输入缓冲区,而当前的scanf("%c",…);又会把’\n’当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(’ ‘、’\t’、’\n’等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。 按回车没反应

    (6),关于“feof”的误区
    For(;!feof(fp)?;
    n++;
    n–;来判断文件里面字符的个数为什么错误,
    查阅得知:
    1.EOF
    EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。这个定义的意思是,文档的结尾都有一个隐藏字符”EOF”,当程序读取它的时候,就会知道文件已经到达结尾。通常使用while循环加EOF判断作为读取结束的标志。
    EOF 的值通常为 -1,但它依系统有所不同。
    2.feof()
    feof()的原理:
    feof()函数,并不是通过读取到文件的EOF来评判,这个文件是否为空。
    对feof()来说,它的工作原理是,站在光标所在位置,向后看看还有没有字符。如果有,返回0;如果没有,返回非0。它并不会读取相关信息,只是查看光标后是否还有内容。
    直接使用时的错误分析:
    对于一个空文件来说,当程序打开它的时候,它的光标会停在文件的开头,但是由于文件里什么内容都没有存(但是EOF是存在的),即整个文件就存贮了一个EOF。当程序打开文件,并直接调用feof()时,这个函数就会站在光标的位置向后张望,结果就看见了EOF,然后就当然返回0了。所以使用feof()函数时,必须要读取文件,让光标移动。

    (7)错因:用正确的格式写入文件,结果却没有数据
    解:没有及时fclose(fp),不弥补数据储存的原理。
    打开文件fopen函数把返回值赋给fp,用fclose关闭文件,如果不关闭文件就结束程序将会丢失数据,因为,在向文件里面写入数据时,是先将数据输入到缓冲区,待缓冲区从满后才正式输出给文件。因此用fclose函数关闭文件时,先把缓冲区中的数据输出到磁盘文件,然后才撤销文件信息区。

    下载链接
    链接:https://pan.baidu.com/s/13fFq7OwTb9ulWMRYHym-ZA 密码:4wbd
    亲,点个赞
    
    
    展开全文
  • C语言程序设计课程设计 - (物业管理系统 - 纯C)

    千次阅读 多人点赞 2017-11-03 16:15:32
    本套代码分享了我大一C语言实训时最后的 C语言课程设计,第一次接触编程能力还很弱,欢迎拍砖提议。。 额。。。2019.7.7更,最近好多人都在问我代码的问题,大多是大一的,可能C语言语法还不是太熟悉,代码很难复现...
  • c语言程序设计课程笔记

    千次阅读 2018-11-11 22:16:32
    c语言基本结构(顺序结构,选择结构,循环结构) part1.知识点总结 1.顺序结构 从上往下逐行执行,每句必走 a.变量的使用:在第一条可执行语句前先声明 b.赋值号和等号:赋值号"=",自动将右边的数据类型转化为...
  • 2020年湖南省普通高等学校课程思政建设研究融入哲学基本原理及方法论的新工科课程思政实践探索——以《C语言程序设计课程教学为例申请人:湖南警察学院信息技术系 姚婷婷申请人:湖南警察学院信息技术系 姚婷婷...
  • C语言程序设计课程教学目录 不要去精确定义单个论题,应将一整套问题组织成体系。——黎曼(1826-1866)德国著名数学家 教学过程 2018年秋季学期 C语言程序设计I—第一周教学 C语言程序设计I—第三周教学 ...
  • 题目内容:编写程序,输入并保存5名职工的信息,计算出平均工资并输出,再按照工资从高到低的顺序输出他们的信息。 职工信息包括:职工号、姓名、工资。职工号不超过9位,姓名不超过8个字符,工资和平均工资均为双...
  • C语言写的钟表程序 C语言 钟表 程序课程设计 C语言课程设计
  • 1 计算机与程序、程序设计语言 机器语言又称低级语言,意思是贴近计算机硬件的语言,是一个型号机器语言的指令的集合...3 简单的C语言程序 4 运行C语言的步骤与方法 4.1 运行C程序的步骤 4.2 上机运行C程序的办法 ...
  • 从11月中旬开始教授二级C语言课程,教授主要是想提高一下自己的表达能力和表现力和渲染力,一直觉得自己懂的未必能说的明白,未必能让别人也... 前言 C语言程序设计课程介绍教授三个问题1)什么是C语言2)什么是程序
  • 一、课程设计题目 《学生成绩管理系统设计》 二、实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。 (2)掌握C++的基本概念和基础知识。 (3)通过训练能够读懂较为...
  • C语言程序设计50例(经典收藏)

    万次阅读 多人点赞 2018-12-08 12:12:31
    C语言程序设计50例(经典收藏) 本篇文章是对C语言程序设计的50个小案例进行了详细的分析介绍,需要的朋友参考下 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1....
  • C语言程序设计课程教学设计

    千次阅读 2013-09-14 18:48:59
    C语言程序设计课程教学设计 张洪志 一、教学定位 本课程为专业基础课,属我校所有理工科专业本科教学计划中的主要必修课程之一。在计算机教育方面, C 语言是为数不多的与国外保持内容同步的课程之一,可见...
  • C语言程序设计实习报告

    千次阅读 2018-01-12 17:07:00
    C语言程序设计实习报告 简介 语言实践心得体会范文在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,...
  • 翁恺--C语言程序设计

    2021-06-30 14:09:41
    当然,这是题外话了,今天推荐的是翁老师的 C语言程序设计课,感觉是目前最受大家欢迎的 C 语言课程了,翁老师一共开设了5门MOOC课程,包括《零基础学Java语言》、《C语言程序设计》等等,加上网易云课堂上的学员,...
  • C语言课程设计-职工信息管理系统程序设计C语言课程设计报告设计题目:职工信息管理系统程序设计课程设计评语2目 录31.课程论文题目42.程序设计思路43.功能模块图54.数据结构设计55.算法设计66.程序代码137....
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises28P330P796P314P338P339P340 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises28 P330 测试...
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises25P788P263P804P784P789 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises25 P788 下载的待...
  • 文章目录20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises34P119P330P337P318P763 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises34 P119 #include...
  • C语言程序实验报告——实验一 简单C程序调试 实验内容: 1、 编写程序,在屏幕上输出”Hello World!”。 2、 编写程序求两个整数的较大者,要求编写函数int max(int x ,int y)实现比较功能;在程序中使用scanf()和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,102
精华内容 18,440
关键字:

c语言程序设计课程设计报告

c语言 订阅