精华内容
下载资源
问答
  • c++学生管理系统课程设计,面向对象设计,内含设计报告,等。
  • SQL2012+PHP学生管理系统课程设计,使用了sql2012数据库连接,文件中还带有实验报告,和源代码,还有数据库文件。
  • 学生管理系统课程设计报告
  • JAVA学生管理系统课程设计报告 目 录 1、 需求分析 1. 需求提出 ···················································· 3 2. 需求描述 ··········...

    41528d3028836879cd698677c3999917.gifJAVA学生管理系统课程设计报告

    目 录 1、 需求分析 1. 需求提出 ···················································· 3 2. 需求描述 ···················································· 3 2、 总体架构·················································· 3 3、 功能设计 1. 角色设计例图················································· 3 2. 插入模块功能················································· 4 3. 加载文件模块功能············································· 4 4. 写入文件模块功能············································· 5 5. 查询模块功能················································· 5 6. 显示模块功能················································· 5 4、 界面设计 1.主菜单······················································· 6 2.输入学生信息················································· 6 3.加载文件信息到数据库········································· 6 4.数据库中的学生信息保存到文件中······························· 7 5.根据ID号查询学生信息········································ 7 6.显示数据库中的学生信息······································· 8 5、 类的设计·················································· 9 6、 时序图···················································· 10 7、 数据库设计 1. 学生基本信息表·············································· 10 2. 班级基本信息表·············································· 10 8、 总结·················································· 11 1、 需求分析 1. 需求提出 设计一个系统可以实现学生基本信息的输入与管理等功能。 2. 需求描述 在主菜单中有输入学生信息、加载文件信息到数据库、数据库中的学生信息保存到文件中、根据ID号查询学生信息、显示数据库中的学生信息等功能,通过不同的选择进入到不同的功能,根据提示进行输入操作。 2、 总体架构 3、 功能设计 1.角色设计例图 2. 插入模块功能 3. 加载文件模块功能 4. 写入文件模块功能 5. 查询模块功能 6. 显示模块功能 4、 界面设计 1. 主菜单 2. 输入学生信息 3. 加载文件信息到数据库 4. 数据库中的学生信息保存到文件中 5. 根据ID号查询学生信息 6. 显示数据库中的学生信息 5、 类的设计 6、 时序图 7、 数据库设计 1. 学生基本信息表 字段名 字段说明 类型 备注 ID 学号 文本 主关键字 Name 姓名 文本 Gender 性别 文本 Hobby 爱好 文本 Province 籍贯 文本 2. 班级基本信息表 字段名 字段说明 类型 备注 Major 专业 文本 ClassID 班级 文本 主关键字 8、 总结 在这次课程设计报告的编写过程中,发现自己还存在许多不足,对java中的一些问题没有掌握的很透彻,对于绘图的软件的使用也不是很熟悉,在今后的学习过程中,还应加强对书本的理解,对软件使用的实践能力,加强自己的建模思想,更熟练的编写java程序。

    展开全文
  • C#版学生管理系统 课程设计 适合初学者学习
  • 攀枝花学院 学生课程设计论文 题 目 通讯录管理系统 学生姓名 学 号 所在院 (系) 数学与计算机学院 专 业 信息与计算科学 班 级 2013 级 指导教师 职 称 年 月 日 攀枝花学院教务处制 攀枝花学院本科学生课程设计...
  • 仲恺农业工程学院 仲 恺 农 业 工 程 学 院 课 程 设 计 报 告 题目员工管理系统 课程名称 数据结构与算法 信息科学与技术学院 院 系 专业班级 学 号 名 姓 3 仲恺农业工程学院 目 录 综合设计题目. 5 一问题所需要...
  • 操作系统原理课程设计 实践报告 全套设计加扣 3012250582 题 目: Linux文件管理系统的仿真 姓 名: 学 院: 信息科学技术学院 专 业: 计算机科学技术系 班 级: 计科121 是否申优 指导教师: 职称: 教授 2015年3月 18 日...
  • C++学生管理系统课程设计

    千次阅读 多人点赞 2019-06-07 23:54:05
    在学习C++时做的一个简单的学生成绩管理系统课程设计,功能较为全面,在这里分享给大家: 运行截图及完整代码如下 #include <iostream> #include <cstdio> #include <cstring> using namespace...

    在学习C++时做的一个简单的学生成绩管理系统的课程设计,功能较为全面,在这里分享给大家:
    运行截图及完整代码如下
    在这里插入图片描述

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;                         //类声明 
    
    class student{
    	public:
    	char number[10];
    	 char name[20];
    		double chinese;
    		double math;
    		double english;
    		double total;
    		double average;
    		int rank;
    		student(char n[],char *na,double c,double m,double e)
    		{
    			strcpy(number,n);
    			strcpy(name,na);
    			chinese=c;
    			math=m;
    			english=e;
    			int rank;
    			total=chinese+math+english;
    	average=total/3;
    			}student(){}
    
    void setdata(student s[]);
    void printf(student s[]);
    int search(student S[],int N,char *n);
    
    };
    void setdata(student &s)                              //定义成绩录入函数 
    {
    	cout<<"输入学号,姓名,语文,数学,英语成绩:"<<endl;
    	cin>>s.number>>s.name>>s.chinese>>s.math>>s.english;
    	s.total=s.chinese+s.math+s.english;
    	s.average=s.total/3;
    	
    }
    void compare(student *s,int n) 
     {
     	student stu;
     	for(int i=0;i<n;i++)
     	for(int j=1;j<n-i;j++)
     	{if(s[j].average>s[j-1].average)
     	{
    	 stu=s[j];
    	 s[j]=s[j-1];
    	 s[j-1]=stu;}
    	 }
     }
     void printf(student &s)
     {
    cout<<s.number<<"\t"<<s.name<<"\t"<<s.chinese<<"\t"<<s.math
    	<<"\t"<<s.english<<"\t"<<s.total<<"\t"<<s.average<<endl; 
     }
     
     int search(student S[],int N,char *n)
     {
     	for(int i=0;i<N;i++)
     	{
     		if(strcmp(S[i].number,n)==0)
     		return i;
    	 }
    	return -1;
     } 
    int main() 
    {
    	cout<<"     ----------------------------------"
    	      "---------------"<<endl;
    	    cout<<"                欢迎使用学生成绩管理系统           "<<endl<<endl; 
    		cout<<"         ☆☆☆☆☆☆"
    		      "☆☆☆☆    择命令菜单    ☆☆☆☆☆☆☆☆☆"<<endl;
    	    cout<<" ┆┆  ================================================= ┆┆"<<endl; 
    		cout<<"             1.添加学生信息并保存                 "<<endl;
    		cout<<"             2.输出所有学生信息             "<<endl;
    		cout<<"             3.查找同学信息                     "<<endl;
    		cout<<"             4.输出排序后的"
    		      "学生信息              "<<endl;
    		cout<<"             5.删除学生信息             "<<endl;
    		cout<<"             0.退出系统           "<<endl;
            cout<<" ┇┇  ================================================= ┆┆"<<endl;
    		cout<<"       ☆☆☆☆☆☆☆☆☆"
    		      "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    	int m=0;
    	
    	student S[10]=
    	{student("1001","王宇",85,94,83),
    	student("1002","李明",78,89,65),
    	student("1003","吴阳",83,62,85),
    	student("1004","高程",85,64,83),
    	student("1005","李丽",95,92,89)};
         
    //	sort(S,m);
    	int order=1;
    	while(order!=0)
    	{   
    	    
    		cout<<"输入命令选择:";
    		cin>>order;
    		switch(order)
    		{
    			case 1:
    			cout<<"输入添加学生信息的人数"<<endl ;               cin>>m; 
    				{if(m>0)
    	 for(int i=5;i<m+5;i++)
    	{
    cout<<"下面输入第"<<i+1<<"位同学的数据:"<<endl;
    		setdata(S[i]);
    		cout<<endl; 
    	} 
    			break;
    			case 2:
    	cout<<"输出已保存的学生信息"<<endl;
    	cout<<"学号:"<<"\t"<<"姓名:"<<"\t"<<"语文:"<<"\t"
    	    <<"数学:"<<"\t"<<"英语:"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;
    				if(m>0)
    				{
    						for(int k=0;k<m+5;k++)
    					printf(S[k]);
    				}
    				else 
    					for(int k=0;k<5;k++)
    					printf(S[k]);
    				break;
    			case 3:
    				{
    					char n[10];
    					cout<<"输入您要查找的学号:";
    					cin>>n;
    					int result=search(S,m+5,n);
    					if(result==-1)
    					cout<<"您输入的学号不存在!!!"<<endl;
    					else 
    					printf(S[result]);
    				}
    				break;
    			case 4:
    			cout<<"输出已保存的学生信息"<<endl;
    				compare(S,m+5);
    cout<<"学号:"<<"\t"<<"姓名:"<<"\t"<<"语文:"<<"\t"
    <<"数学:"<<"\t"<<"英语:"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;
    				for(int k=0;k<m+5;k++)
    					printf(S[k]);
    					break;
    			case 5:
    			char n1[10];
    					cout<<"输入您要查找的学号:";
    					cin>>n1;
    		int	result1=search(S,m+5,n1);
    cout<<"学号:"<<"\t"<<"姓名:"<<"\t"<<"语文:"<<"\t"
    <<"数学:"<<"\t"<<"英语:"<<"\t"<<"总分"<<"\t"<<"平均分"<<endl;
    		for(int k=0;k<m+5;k++)
    		{       if(k!=result1)
    					printf(S[k]);
    			}
    			break;	//cout<<"您输入的命令不存在!!!"<<endl;
    		 } 
    	}} cout<<"您已退出成绩管理系统!!!"<<endl;
    	return 0;
    }
    
    
    展开全文
  • 华 北 科 技 学 院 课程设计说明书 学号 201207014316 班级: 计科B123 姓名: 小星星 设计题目: 学生信息管理系统 设计地点: 华北科技学院 设计时间: 2015-12-28 至 2016-1-8 成绩评定 1工作量 A B C D ,F( ) 2难易度...
  • C#程序设计期末作业 通用学生信息管理系统 计算机科学与工程学院 班级 123456 姓名张三儿 学号 12345678 2014年 5月 一题目分析 1基本功能要求 : 1创建相应的成员变量保存学生基本信息 2创建相应属性和索引以实现对...
  • 华北科技学院 课程设计说明书 学号 201207014316 班级 : 计科 B123 姓名 :小星星 设计题目 :学生信息管理系统 设计地点 :华北科技学院 设计时间 : 2015-12-28 至 2016-1-8 成绩评定 1工作量 A B C D ,F( ) 2 难易度 ...
  • 1 相关技术简介 RDBMS 简介 SQL Server 是一个关系数据库管理系统它最初是由 Microsoft Sybase 和 Ashton-Tate 三家公司共同开发的于 1988 年推出了第一个 OS/2 版本在 Windows NT 推出后 Microsoft 与 Sybase 在 ...
  • 目 录 需求分析 需求提出 3 需求描述 3 总体架构 3 功能设计 角色设计例图 3 插入模块功能 4 加载文件模块功能 4 写入文件模块功能 5 查询模块功能 5 显示模块功能 5 界面设计 1.主菜单 6 2.输入学生信息 6 3.加载...
  • C语言学生管理系统课程设计

    千次阅读 2016-07-25 07:22:44
    通过C语言结构体实现,设计学生信息管理系统”,使其具有数据库的建立,记录的插入、修改、删除、查询、显示,数据库的保存、备份等功能。
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <string.h>
    #define MAX_SIZE 100     //定义符号常量
    
    struct student     //学生信息结构体
    {
        int ID;               //自动序号
        char studentNumber[MAX_SIZE];    //学号
        char name[MAX_SIZE];  //姓名
        char sex[MAX_SIZE];   //性别
        int age;              //年龄
        char address[MAX_SIZE];  //地址
        struct student * pre;    //学生结构体指针,指向前节点指针
        struct student * next;   //学生结构体指针,指向后节点指针
    };
    
    void mainMenu(void);   //mainMenu()函数原型,软件片头
    void caoZuoTiShi1(void);//caoZuoTiShi()函数,软件的命令选择与功能描述
    void caoZuoTiShi2(void);
    void commandSelect(void); //commandSelect()函数,实现各个功能
    void delay(void); //延迟器
    void delayTime(int n); //延迟时间与显示符号
    struct student *creatDoubleLianBiao(void); //创建双向链表
    void LianBiaoID(struct student *head); //为链表自动加上ID号
    void printDoubleLianBiao(struct student *head); //显示链表
    void saveToPc(struct student *head); //保存数据库到文件
    struct student *readFromPc(void); //调入数据库文件到内存
    struct student *shenQingOneNode(void); //创建一个节点
    struct student *insertDoubleLast(struct student *head); //添加尾条
    struct student *insertDoubleTop(struct student *head); //添加头条
    int countNodeNum(struct student *head); //统计链表的节点数
    struct student *searByIndex(struct student *head,int index);//按索引查找节点,索引从1开始
    struct student *inseryBeforByIndex(struct student *head,int index);//匹配添加ID号前
    struct student *inseryAfterByIndex(struct student *head,int index);//匹配添加ID号后
    struct student *deleteTopNode(struct student *head);//删除头条
    struct student *deleteLastNode(struct student *head);//删除尾条
    struct student *deleteByIndex(struct student *head,int index);//匹配ID删除
    struct student *deleteByID1ToID2(struct student *head,int index1,int index2);//匹配ID1至ID2删除
    void changeNodeByID(struct student *head, int index);//匹配ID号修改记录
    void printOneNode(struct student *oneNode);//显示一条记录
    int selectOneOrZero(void); //选1或选0
    void searchNodesByID(struct student *head);//ID查询
    void searchNodesBySn(struct student *head);//学号查询
    void searchNodesByName(struct student *head);//姓名查询
    void searchNodesBySex(struct student *head);//性别查询
    void searchNodesByAge(struct student *head);//年龄查询
    void searchNodesByAddress(struct student *head);//地址查询
    void backUpFromPc(void);  //备份数据库
    void jiaohuanNodeDat(struct student *p,struct student *q); //节点数据交换(不交换指针)
    void upsortsn(struct student *head); //排序,按学号升序
    void dropsortsn(struct student *head); //排序,按学号降序
    void upsortage(struct student *head); //排序,按年龄升序
    void dropsortage(struct student *head); //排序,按年龄降序
    void upsortsex(struct student *head); //排序,按性别
    void upsortaddress(struct student *head); //排序,按地址
    void upsortname(struct student *head); //排序,按姓名
    
    int main()
    {
        mainMenu();
        caoZuoTiShi1();
        commandSelect();
        return 0;
    
    }
    
    void mainMenu(void)   //mainMenu()函数,软件片头
    {
        printf("\n");
        printf("\t\t***********************************\t\t\n");
        printf("\t\t* 学  生  信  息  管  理  系  统  *\t\t\n");
        printf("\t\t***********************************\t\t\n");
        printf("\t\t* 作者:                          *\t\t\n");
        printf("\t\t* 公司:balance of love           *\t\t\n");
        printf("\t\t* 日期:2015-6                    *\t\t\n");
        printf("\t\t***********************************\t\t\n");
        printf("\n");
    }
    
    void caoZuoTiShi1(void) //caoZuoTiShi()函数,操作提示,软件的命令与功能
    {
        printf("\n");
        printf("\t\t    ~~~操    作    提    示~~~     \t\t\n");
        printf("\t\t-----------------------------------\t\t\n");
        printf("\t\t|    数字命令  |   功能描述       |\t\t\n");
        printf("\t\t-----------------------------------\t\t\n");
        printf("\t\t|       -1    >>>  退出系统       |\t\t\n");
        printf("\t\t|        0    >>>  显示命令       |\t\t\n");
        printf("\t\t|        1    >>>  创建数据库     |\t\t\n");
        printf("\t\t|        2    >>>  加载数据库     |\t\t\n");
        printf("\t\t|        3    >>>  增加记录       |\t\t\n");
        printf("\t\t|        4    >>>  删除记录       |\t\t\n");
        printf("\t\t|        5    >>>  修改记录       |\t\t\n");
        printf("\t\t|        6    >>>  查询记录       |\t\t\n");
        printf("\t\t|        7    >>>  显示记录       |\t\t\n");
        printf("\t\t|        8    >>>  排序记录       |\t\t\n");
        printf("\t\t|        9    >>>  保存数据库     |\t\t\n");
        printf("\t\t|       10    >>>  备份数据库     |\t\t\n");
        printf("\t\t-----------------------------------\t\t\n");
        printf("\n");
    }
    void caoZuoTiShi2(void)
    {
        printf("\t\t-----------------------------------------------------------\t\n");
        printf("\t|库 操 作| -1.退出,0.命令,1.创建,2.加载,9.保存,10.另存 |\t\n");
        printf("\t|记录操作| 3. 增加,4.删除,5.修改,6.查询,7.显示,8. 排序 |\t\n");
        printf("\t\t-----------------------------------------------------------\t\n");
    }
    
    void commandSelect(void)  //commandSelect()函数,实现各个功能
    {
        int number,number3,number4,number6,number8;
        int flag3=1,flag4=1,flag6=1,flag8=1;
        int id,id1,id2;
        struct student *DoubleLianBiaoTou=NULL;
        printf("\n输入数字命令[0:调出数字命令菜单]->");
        scanf("%d",&number);
        while (1)
        {
            switch(number)
            {
            case 0:
            {
                printf("\n~显示命令菜单~\n");
                caoZuoTiShi2();
                break;
            }
            case 1:
            {
                printf("\n~创建数据库~\n");
                DoubleLianBiaoTou=creatDoubleLianBiao();
                break;
            }
            case 2:
            {
                printf("\n~加载数据库~\n");
                DoubleLianBiaoTou=readFromPc();
                break;
            }
            case 3:
            {
                flag3=1;
                if (NULL==DoubleLianBiaoTou)
                {
                    printf("\n");
                    printf("数据库不存在\n");
                    printf("@请先创建数据库或加载数据库@\n");
                    break;
                }
                printf("\n~添加记录~\n");
                printf("\n选择添加记录模式:\n");
                printf("30:退出,31:添加头条,32:添加尾条,33:匹配添加ID号前,34:匹配添加ID号后,37:显示记录\n");
                scanf("%d",&number3);
                while (1==flag3)
                {
                    switch(number3)
                    {
                    case 31:
                    {
                        printf("\n");
                        printf("~添加头条~\n");
                        DoubleLianBiaoTou=insertDoubleTop(DoubleLianBiaoTou);
                        break;
                    }
                    case 32:
                    {
                        printf("\n");
                        printf("~添加尾条~\n");
                        DoubleLianBiaoTou=insertDoubleLast(DoubleLianBiaoTou);
                        break;
                    }
                    case 33:
                    {
                        printf("\n");
                        printf("~匹配添加ID号前~\n");
                        printf("\n");
                        printf("输入ID号->");
                        scanf("%d",&id);
                        DoubleLianBiaoTou=inseryBeforByIndex(DoubleLianBiaoTou,id);
                        break;
                    }
                    case 34:
                    {
                        printf("\n");
                        printf("~匹配添加ID号后~\n");
                        printf("\n");
                        printf("输入ID号->");
                        scanf("%d",&id);
                        DoubleLianBiaoTou=inseryAfterByIndex(DoubleLianBiaoTou,id);
                        break;
                    }
                    case 37:
                    {
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 30:
                    {
                        printf("\n");
                        printf("~退出添加记录,返回主菜单~\n");
                        caoZuoTiShi1();
                        flag3=0;
                        break;
                    }
                    default:
                    {
                        printf("无效命令,请重新选择\n");
                        break;
                    }
                    }
                    if (1==flag3)
                    {
                        printf("\n选择添加记录模式:\n");
                        printf("30:退出,31:添加头条,32:添加尾条,33:匹配添加ID号前,34:匹配添加ID号后,37:显示记录\n");
                        scanf("%d",&number3);
                    }
                }
                break;
            }
            case 4:
            {
                flag4=1;
                if (NULL==DoubleLianBiaoTou)
                {
                    printf("\n");
                    printf("数据库不存在\n");
                    printf("@请先创建数据库或加载数据库@\n");
                    break;
                }
                printf("\n~删除记录~\n");
                printf("\n选择删除记录模式:\n");
                printf("40:退出,41:删除头条,42:删除尾条,43:匹配ID删除,44:匹配ID1至ID2删除,47:显示记录\n");
                scanf("%d",&number4);
                while (1==flag4)
                {
                    switch(number4)
                    {
                    case 41:
                    {
                        printf("\n");
                        printf("~删除头条~\n");
                        if (NULL!=DoubleLianBiaoTou)
                        {
                            DoubleLianBiaoTou=deleteTopNode(DoubleLianBiaoTou);
                        }
                        else
                        {
                            printf("@数据库已删空@\n");
                            break;
                        }
                        break;
                    }
                    case 42:
                    {
                        printf("\n");
                        printf("~删除尾条~\n");
                        if (NULL!=DoubleLianBiaoTou)
                        {
                            DoubleLianBiaoTou=deleteLastNode(DoubleLianBiaoTou);
                        }
                        else
                        {
                            printf("@数据库已删空@\n");
                            break;
                        }
                        break;
                    }
                    case 43:
                    {
                        printf("\n");
                        printf("~匹配ID删除~\n");
                        printf("\n");
                        printf("输入ID号->");
                        scanf("%d",&id);
                        if (NULL!=DoubleLianBiaoTou)
                        {
                            DoubleLianBiaoTou=deleteByIndex(DoubleLianBiaoTou,id);
                        }
                        else
                        {
                            printf("@数据库已删空@\n");
                            break;
                        }
                        break;
                    }
                    case 44:
                    {
                        printf("\n");
                        printf("~匹配ID1至ID2删除~\n");
                        printf("\n");
                        printf("输入ID1号->");
                        scanf("%d",&id1);
                        printf("输入ID2号->");
                        scanf("%d",&id2);
                        if (NULL!=DoubleLianBiaoTou)
                        {
                            DoubleLianBiaoTou=deleteByID1ToID2(DoubleLianBiaoTou,id1,id2);
                        }
                        else
                        {
                            printf("@数据库已删空@\n");
                            break;
                        }
                        break;
                    }
                    case 47:
                    {
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 40:
                    {
                        printf("\n");
                        printf("~退出删除记录,返回主菜单~\n");
                        caoZuoTiShi1();
                        flag4=0;
                        break;
                    }
                    default:
                    {
                        printf("无效命令,请重新选择\n");
                        break;
                    }
                    }
                    if (1==flag4)
                    {
                        printf("\n选择删除记录模式:\n");
                        printf("40:退出,41:删除头条,42:删除尾条,43:匹配ID删除,44:匹配ID1至ID2删除,47:显示记录\n");
                        scanf("%d",&number4);
                    }
                }
                break;
            }
            case 5:
            {
                if (NULL==DoubleLianBiaoTou)
                {
                    printf("\n");
                    printf("数据库不存在\n");
                    printf("@请先创建数据库或加载数据库@\n");
                    break;
                }
                printf("\n");
                printf("~修改记录~\n");
                printf("~~匹配ID修改记录~~\n");
                printf("\n");
                printf("输入ID号->");
                scanf("%d",&id);
                printf("\n");
                changeNodeByID(DoubleLianBiaoTou,id);
                break;
            }
            case 6:
            {
                flag6=1;
                if (NULL==DoubleLianBiaoTou)
                {
                    printf("\n");
                    printf("数据库不存在\n");
                    printf("@请先创建数据库或加载数据库@\n");
                    break;
                }
                printf("\n~查询记录~\n");
                printf("\n选择查询记录模式:\n");
                printf("60:退出,61:ID查询,62:学号查询,63:姓名查询,");
                printf("64:性别查询,65:年龄查询,66:地址查询\n");
                scanf("%d",&number6);
                while (1==flag6)
                {
                    switch(number6)
                    {
                    case 61:
                    {
                        printf("\n");
                        printf("~ID查询~\n");
                        printf("\n");
                        searchNodesByID(DoubleLianBiaoTou);
                        break;
                    }
                    case 62:
                    {
                        printf("\n");
                        printf("~学号查询~\n");
                        printf("\n");
                        searchNodesBySn(DoubleLianBiaoTou);
                        break;
                    }
                    case 63:
                    {
                        printf("\n");
                        printf("~姓名查询~\n");
                        printf("\n");
                        searchNodesByName(DoubleLianBiaoTou);
                        break;
                    }
                    case 64:
                    {
                        printf("\n");
                        printf("~性别查询~\n");
                        printf("\n");
                        searchNodesBySex(DoubleLianBiaoTou);
                        break;
                    }
                    case 65:
                    {
                        printf("\n");
                        printf("~年龄查询~\n");
                        printf("\n");
                        searchNodesByAge(DoubleLianBiaoTou);
                        break;
                    }
                    case 66:
                    {
                        printf("\n");
                        printf("~地址查询~\n");
                        printf("\n");
                        searchNodesByAddress(DoubleLianBiaoTou);
                        break;
                    }
                    case 60:
                    {
                        printf("\n");
                        printf("~退出查询记录,返回主菜单~\n");
                        caoZuoTiShi1();
                        flag6=0;
                        break;
                    }
                    default:
                    {
                        printf("无效命令,请重新选择\n");
                        break;
                    }
                    }
                    if (1==flag6)
                    {
                        printf("\n选择查询记录模式:\n");
                        printf("60:退出,61:ID查询,62:学号查询,63:姓名查询,");
                        printf("64:性别查询,65:年龄查询,66:地址查询\n");
    
                        scanf("%d",&number6);
    
                    }
                }
                break;
            }
            case 7:
            {
                printf("\n~显示记录~\n");
                printDoubleLianBiao(DoubleLianBiaoTou);
                break;
            }
            case 8:
            {
                flag8=1;
                if (NULL==DoubleLianBiaoTou)
                {
                    printf("\n");
                    printf("数据库不存在\n");
                    printf("@请先创建数据库或加载数据库@\n");
                    break;
                }
                printf("\n~排序记录~\n");
                printf("\n选择排序记录模式:\n");
                printf("80:退出,81:学号升序,82:学号降序,83:年龄升序,84:年龄降序\n");
                printf("        85:姓名排序,86:性别排序,87:地址排序\n");
                scanf("%d",&number8);
                while (1==flag8)
                {
                    switch(number8)
                    {
                    case 81:
                    {
                        printf("\n");
                        printf("~学号升序~\n");
                        printf("\n");
                        upsortsn(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 82:
                    {
                        printf("\n");
                        printf("~学号降序~\n");
                        printf("\n");
                        dropsortsn(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 83:
                    {
                        printf("\n");
                        printf("~年龄升序~\n");
                        printf("\n");
                        upsortage(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 84:
                    {
                        printf("\n");
                        printf("~年龄降序~\n");
                        printf("\n");
                        dropsortage(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 85:
                    {
                        printf("\n");
                        printf("~姓名排序~\n");
                        printf("\n");
                        upsortname(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 86:
                    {
                        printf("\n");
                        printf("~性别排序~\n");
                        printf("\n");
                        upsortsex(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 87:
                    {
                        printf("\n");
                        printf("~地址排序~\n");
                        printf("\n");
                        upsortaddress(DoubleLianBiaoTou);
                        printDoubleLianBiao(DoubleLianBiaoTou);
                        break;
                    }
                    case 80:
                    {
                        printf("\n");
                        printf("~退出排序记录,返回主菜单~\n");
                        caoZuoTiShi1();
                        flag8=0;
                        break;
                    }
                    default:
                    {
                        printf("无效命令,请重新选择\n");
                        break;
                    }
                    }
                    if (1==flag8)
                    {
                        printf("\n选择排序记录模式:\n");
                        printf("80:退出,81:学号升序,82:学号降序,83:年龄升序,84:年龄降序\n");
                        printf("        85:姓名排序,86:性别排序,87:地址排序\n");
                        scanf("%d",&number8);
                    }
                }
                break;
            }
            case 9:
            {
                printf("\n~保存数据库~\n");
                saveToPc(DoubleLianBiaoTou);
                break;
            }
            case 10:
            {
                printf("\n~备份数据库~\n");
                backUpFromPc();
                break;
            }
            case -1:
            {
                printf("\a"); //报警声,蜂鸣器,一声
                printf("欢迎再次使用本系统");
                delayTime(8); //延迟6个延迟时段
                exit(0);   //exit(0)正常退出,exit(-1)不正常退出
            }
            default:
            {
                printf("\a\a\a"); //报警声,三声
                printf("无效命令,请重新选择\n");
                break;
            }
            }
            printf("\n输入数字命令[0:调出数字命令菜单]->");
            scanf("%d",&number);
        }
    }
    void upsortage(struct student *head) //排序,按年龄升序
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (p->age>q->age)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void dropsortage(struct student *head) //排序,按年龄降序
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (p->age<q->age)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void dropsortsn(struct student *head) //排序,按学号降序
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (strcmp(p->studentNumber,q->studentNumber)<0)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void upsortaddress(struct student *head) //排序,按地址
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (strcmp(p->address,q->address)>0)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void upsortsex(struct student *head) //排序,按性别
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (strcmp(p->sex,q->sex)>0)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void upsortname(struct student *head) //排序,按姓名
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (strcmp(p->name,q->name)>0)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void upsortsn(struct student *head) //排序,按学号升序
    {
        struct student *p;
        struct student *q;
        for (p=head; p!=NULL; p=p->next)
        {
            for (q=p->next; q!=NULL; q=q->next)
            {
                if (strcmp(p->studentNumber,q->studentNumber)>0)
                {
                    jiaohuanNodeDat(p,q);
                }
            }
        }
        return ;
    }
    void jiaohuanNodeDat(struct student *p,struct student *q) //节点数据交换(不交换指针)
    {
        char sn[MAX_SIZE],name[MAX_SIZE],sex[MAX_SIZE],address[MAX_SIZE];
        int age;
    
        strcpy(sn,p->studentNumber);
        strcpy(p->studentNumber,q->studentNumber);
        strcpy(q->studentNumber,sn);
    
    
        strcpy(name,p->name);
        strcpy(p->name,q->name);
        strcpy(q->name,name);
    
    
        strcpy(sex,p->sex);
        strcpy(p->sex,q->sex);
        strcpy(q->sex,sex);
    
    
        strcpy(address,p->address);
        strcpy(p->address,q->address);
        strcpy(q->address,address);
    
    
        age=p->age;
        p->age=q->age;
        q->age=age;
    
        return ;
    }
    void searchNodesByAddress(struct student *head)//地址查询
    {
        struct student *p=NULL;
        int i=0;
        char address[MAX_SIZE];
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入地址->");
        scanf("%s",address);
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
            if (NULL!=strstr(p->address,address))
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    void searchNodesByAge(struct student *head)//年龄查询
    {
        struct student *p=NULL;
        int i=0;
        int age;
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入年龄->");
        scanf("%d",&age);
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
            if (p->age==age)
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    void searchNodesBySex(struct student *head)//性别查询
    {
        struct student *p=NULL;
        char sex[MAX_SIZE];
        int i=0;
        int sexnum;
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入性别->");
        printf("1:男,2:女\n");
        scanf("%d",&sexnum);
        while(!(1==sexnum||2==sexnum))
        {
            printf("选择无效,请再次选择\n");
            printf("性别->");
            printf("1:男,2:女\n");
            scanf("%d",&sexnum);
        }
        if(1==sexnum)
        {
            strcpy(sex,"男");
        }
        else
        {
            strcpy(sex,"女");
        }
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
            if (NULL!=strstr(p->sex,sex))
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    void searchNodesByName(struct student *head)//姓名查询
    {
        struct student *p=NULL;
        int i=0;
        char name[MAX_SIZE];
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入姓名->");
        scanf("%s",name);
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
            if (NULL!=strstr(p->name,name))
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    void searchNodesBySn(struct student *head)//学号查询
    {
        struct student *p=NULL;
        int i=0;
        char sn[MAX_SIZE];
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入学号->");
        scanf("%s",sn);
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
            if (NULL!=strstr(p->studentNumber,sn))
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    
    void searchNodesByID(struct student *head)//ID查询
    {
        struct student *p=NULL;
        int i=0;
        int index;
        p=head;
        if (NULL==p)
        {
            return;
        }
        printf("输入ID->");
        scanf("%d",&index);
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (NULL!=p)
        {
    
            if (p->ID==index)
            {
                i++;
                printf("%-8d%-16s%-8s%-8s%-8d%s\n",i,p->studentNumber,p->name,p->sex,p->age,p->address);
            }
            p=p->next;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    
    void changeNodeByID(struct student *head, int index)//匹配ID号修改记录
    {
        struct student *p=NULL;
        int sexnum;
        p=searByIndex(head,index);
        if (NULL==p)
        {
            return ;
        }
        else
        {
            printOneNode(p);
            printf("请输入新的对应信息:\n\n");
            printf("修改学号?");
            if(1==selectOneOrZero())
            {
                printf("学号->");
                scanf("%s",p->studentNumber);
            }
            printf("修改姓名?");
            if(1==selectOneOrZero())
            {
                printf("姓名->");
                scanf("%s",p->name);
            }
            printf("修改性别?");
            if(1==selectOneOrZero())
            {
                printf("性别->");
                printf("1:男,2:女\n");
                scanf("%d",&sexnum);
                while(!(1==sexnum||2==sexnum))
                {
                    printf("选择无效,请再次选择\n");
                    printf("性别->");
                    printf("1:男,2:女\n");
    
                    scanf("%d",&sexnum);
    
                }
    
                if(1==sexnum)
    
                {
    
                    strcpy(p->sex,"男");
    
                }
    
                else
    
                {
    
                    strcpy(p->sex,"女");
                }
            }
            printf("修改年龄?");
            if(1==selectOneOrZero())
            {
                printf("年龄->");
                scanf("%d",&(p->age));
            }
            printf("修改地址?");
            if(1==selectOneOrZero())
            {
                printf("地址->");
                scanf("%s",p->address);
            }
            printf("\n");
            printOneNode(p);
            printf("^-^修改成功^-^\n");
        }
    }
    int selectOneOrZero(void) //选1或选0
    {
        int sexnum;
        printf("\n0:略过,1:修改->");
        scanf("%d",&sexnum);
        while(!(1==sexnum||0==sexnum))
        {
            printf("选择无效,请再次选择\n");
            printf("0:略过,1:修改->");
            scanf("%d",&sexnum);
        }
        return sexnum;
    }
    void printOneNode(struct student *oneNode)//显示一条记录
    {
        struct student *p=NULL;
        p=oneNode;
        if (NULL==p)
        {
            return;
        }
        printf("\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        printf("%-8d%-16s%-8s%-8s%-8d%s\n",p->ID,p->studentNumber,p->name,p->sex,p->age,p->address);
        printf("----------------------------------------------------------------------\n");
        printf("\n");
        return;
    }
    struct student *deleteByID1ToID2(struct student *head,int index1,int index2)//匹配ID1至ID2删除
    {
        struct student *p1=NULL;
        struct student *p2=NULL;
        struct student *p=NULL;
        p1=searByIndex(head,index1);
        p2=searByIndex(head,index2);
        if (NULL==p1)
        {
            free(p1);
            free(p2);
            free(p);
            printf("ID %d 超标\n",index1);
            return head;
        }
        if (NULL==p2)
        {
            free(p1);
            free(p2);
            free(p);
            printf("ID %d 超标\n",index2);
            return head;
        }
        if (index1>index2)
        {
            p=p1;
            p1=p2;
            p2=p;
        }
        if (NULL==(p1->pre)&&NULL==(p2->next))
        {
            free(p1);
            free(p2);
            free(p);
            printf("数据库全部删除!!!\n");
            return NULL;
        }
        if (NULL==(p1->pre)&&NULL!=(p2->next))
        {
            head=p2->next;
            (p2->next)->pre=NULL;
            free(p1);
            free(p2);
            free(p);
            LianBiaoID(head);
            return head;
        }
        if (NULL!=(p1->pre)&&NULL==(p2->next))
        {
            (p1->pre)->next=NULL;
            free(p1);
            free(p2);
            free(p);
            LianBiaoID(head);
            return head;
        }
        (p1->pre)->next=p2->next;
        (p2->next)->pre=p1->pre;
        free(p1);
        free(p2);
        free(p);
        LianBiaoID(head);
        return head;
    }
    struct student *deleteByIndex(struct student *head,int index)//匹配ID删除
    {
        struct student *p=NULL;
        p=searByIndex(head,index);
        if (NULL==p)
        {
            return head;
        }
        if (p->pre==NULL)
        {
    
            head=deleteTopNode(head);
            LianBiaoID(head);
            return head;
        }
        if (p->next==NULL)
        {
            head=deleteLastNode(head);
            LianBiaoID(head);
            return head;
        }
        (p->pre)->next=p->next;
        (p->next)->pre=p->pre;
        free(p);
        LianBiaoID(head);
        return head;
    }
    struct student *deleteLastNode(struct student *head)//删除尾条
    {
        struct student *p=NULL;
        p=head;
        if (head->next==NULL)
        {
            printf("数据库已删空\n");
            free(head);
            return NULL;
        }
        while (p->next!=NULL)
        {
            p=p->next;
        }
        (p->pre)->next=NULL;
        free(p);
        LianBiaoID(head);
        return head;
    }
    struct student *deleteTopNode(struct student *head)//删除头条
    {
        struct student *p=NULL;
        p=head;
        if (head->next==NULL)
        {
            printf("@数据库已删空@\n");
            free(head);
            return NULL;
        }
        head=p->next;
        (p->next)->pre=NULL;
        free(p);
        LianBiaoID(head);
        return head;
    }
    struct student *inseryAfterByIndex(struct student *head,int index)//匹配添加ID号后
    {
        struct student *p=NULL;
        struct student *m=NULL;
        p=searByIndex(head,index);
        if (NULL==p) return head;
        m=shenQingOneNode();
        if (p->next != NULL)
        {
            m->next=p->next;
            p->next=m;
            m->pre=p;
            (m->next)->pre=m;
            LianBiaoID(head);
            return head;
        }
        else
        {
            p->next=m;
            m->pre=p;
            LianBiaoID(head);
            return head;
        }
    }
    struct student *inseryBeforByIndex(struct student *head,int index)//匹配添加ID号前
    {
        struct student *p=NULL;
        struct student *q=NULL;
        struct student *m=NULL;
        p=searByIndex(head,index);
        if (NULL==p) return head;
        m=shenQingOneNode();
        if (head==p)
        {
            m->next=head;
            head->pre=m;
            head=m;
            LianBiaoID(head);
            return  head;
        }
        else
        {
            q=p->pre;
            m->next=p;
            q->next=m;
            p->pre=m;
            m->pre=q;
            LianBiaoID(head);
            return head;
        }
    }
    struct student *searByIndex(struct student *head,int index)//按索引查找节点,索引从1开始
    {
        int count=countNodeNum(head);
        int i=1;
        struct student *p=NULL;
        if (index>count||index<=0)
        {
            printf("@索引超标@\n");
            return NULL;
        }
        p=head;
        while (i<index)
        {
            p=p->next;
            i++;
        }
        return p;
    }
    int countNodeNum(struct student *head) //统计链表的节点数
    {
        struct student *p=NULL;
        int count=0;
        p=head;
        if (NULL==p) return count;
        while (p!=NULL)
        {
            count++;
            p=p->next;
        }
        return count;
    }
    struct student *insertDoubleTop(struct student *head) //添加头条,插入首记录
    {
        struct student *p=NULL;
        p=shenQingOneNode();
        p->next=head;
        head->pre=p;
        head=p;
        LianBiaoID(head);
        return  head;
    }
    struct student *insertDoubleLast(struct student *head) //添加尾条,插入尾记录
    {
        struct student *q=NULL;
        struct student *p=NULL;
        q=head;
        p=shenQingOneNode();
        printf("\n");
        while (q->next!=NULL)
        {
            q=q->next;
        }
        q->next=p;
        p->pre=q;
        LianBiaoID(head);
        return  head;
    }
    struct student *readFromPc(void) //从文件调入数据库到内存
    {
        FILE *sourceFile=NULL;
        char source[MAX_SIZE];
        struct student *head=NULL;
        struct student *p=NULL;
        struct student *tail=NULL;
        int flag=1;
        int panduan;
        printf("\n");
        printf("输入调入的数据库路径及文件名【形如:d:/hqg/huqig1.dat】->");
        scanf("%s",source);
        sourceFile=fopen(source,"r");
        while (NULL==sourceFile)
        {
            printf("打开文件 %s 失败,请重新输入->",source);
            scanf("%s",source);
            sourceFile=fopen(source,"r");
        }
        p=(struct student *)malloc(sizeof(struct student));
        if (NULL==p)
        {
            printf("申请内存空间失败!!!\n");
            exit(-1);  //exzit(0);
        }
        panduan=fscanf(sourceFile,"%d",&(p->ID));
        if (1==panduan)
        {
            fscanf(sourceFile,"%s",p->studentNumber);
            fscanf(sourceFile,"%s",p->name);
            fscanf(sourceFile,"%s",p->sex);
            fscanf(sourceFile,"%d",&(p->age));
            fscanf(sourceFile,"%s",p->address);
            p->pre=NULL;
            p->next=NULL;
        }
        head=p;
        tail=p;
        while (1==flag)
        {
            p=(struct student *)malloc(sizeof(struct student));
            if (NULL==p)
            {
                printf("申请内存空间失败!!!\n");
                exit(-1);  //exzit(0);
            }
            panduan=fscanf(sourceFile,"%d",&(p->ID));
            if (1==panduan)
            {
                fscanf(sourceFile,"%s",p->studentNumber);
                fscanf(sourceFile,"%s",p->name);
                fscanf(sourceFile,"%s",p->sex);
                fscanf(sourceFile,"%d",&(p->age));
                fscanf(sourceFile,"%s",p->address);
                p->pre=NULL;
                p->next=NULL;
                tail->next=p;
                p->pre=tail;
                tail=p;
            }
            else
            {
                flag=0;
            }
        }
        printf("数据库文件加载成功...\n");
        fclose(sourceFile);
        return head;
    }
    void backUpFromPc(void)  //备份数据库
    {
        FILE * sourceFile=NULL, * endFile=NULL;
        char source[MAX_SIZE],end[MAX_SIZE];
        char ch;
        int i=1,j=1;
        printf("\n");
        printf("请输入源文件名【包含路径与文件名】->");
        scanf("%s",source);
        sourceFile=fopen(source,"r");
        while (sourceFile==NULL)
        {
            if (3==i)
            {
                printf("\n备份数据库失败!!!\n");
                exit(-1);
            }
            printf("打开文件失败v_v\n");
            printf("请重新输入->");
            scanf("%s",source);
            sourceFile=fopen(source,"r");
            i++;
        }
        printf("请输入目标文件名【包含路径与文件名】->");
        scanf("%s",end);
        endFile=fopen(end,"w");
        while (endFile==NULL)
        {
            if (3==j)
            {
                printf("\n备份数据库失败!!!\n");
                exit(-1);
            }
            printf("打开文件失败v_v\n");
            printf("请重新输入->");
            scanf("%s",end);
            endFile=fopen(end,"w");
            j++;
        }
        for ( ch=fgetc(sourceFile); ch != EOF; ch=fgetc(sourceFile) )
        {
            fputc(ch,endFile);
        }
        fclose(sourceFile);
        fclose(endFile);
        printf("文件备份成功^_^,从 %s 到 %s \n",source,end);
    }
    void saveToPc(struct student *head) //输出链表内容到文件
    {
        struct student * p=NULL;
        FILE * outFilePointer=NULL;   //文件指针
        char outName[MAX_SIZE];        //保存文件名
        int i=1;
        if (head==NULL)
        {
            printf("\n~数据不存在,不能保存~\n");
            return;
        }
        printf("输入保存的路径及文件名【形如:d:/hqg/huqig1.dat】->");
        scanf("%s",outName);
        outFilePointer=fopen(outName,"w");  //  w  'w' "w"
        while (NULL==outFilePointer) //while (outFilePointer=NULL)  while (NULL=outFilePointer)
        {
            if (3==i)
            {
                printf("\n保存数据库失败!!!\n");
                exit(-1);
            }
            printf("保存 %s 文件失败,请重新输入->",outName);
            scanf("%s",outName);
            outFilePointer=fopen(outName,"w");
            i++;
        }
        p=head;
        while (p!=NULL)
        {
            fprintf(outFilePointer,"%-8d%-16s%-8s%-8s%-8d%s\n",p->ID,p->studentNumber,p->name,p->sex,p->age,p->address);
            p=p->next;
        }
        fprintf(outFilePointer,"END!!!\n");
        fclose(outFilePointer);         //关闭文件
        printf("文件保存成功^_^\n");
    }
    void delay(void) //延迟器
    {
        int n=200000000;
        while (n>0) n--;
        return;
    }
    void delayTime(int n) //
    {
        int i;
        for (i=0; i<n; i++)
        {
            delay();
            printf(".");
        }
        return;
    }
    struct student *shenQingOneNode(void) //        创建一个节点
    {
        struct student *p=NULL;
        int sexnum;
        p=(struct student *)malloc(sizeof(struct student));
        if (NULL==p)
        {
            printf("创建节点失败\n");
            exit(-1);
        }
        printf("\n");
        printf("输入节点的内容:\n");
        printf("学号->");
        scanf("%s",p->studentNumber);
        printf("姓名->");
        scanf("%s",p->name);
        printf("性别->");
        printf("1:男,2:女\n");
        scanf("%d",&sexnum);
        while(!(1==sexnum||2==sexnum))
        {
            printf("选择无效,请再次选择\n");
            printf("性别->");
            printf("1:男,2:女\n");
            scanf("%d",&sexnum);
        }
        if(1==sexnum)
        {
            strcpy(p->sex,"男");
        }
        else
        {
            strcpy(p->sex,"女");
        }
        printf("年龄->");
        scanf("%d",&(p->age));
        printf("地址->");
        scanf("%s",p->address);
        p->pre=NULL;
        p->next=NULL;
        return p;
    }
    struct student *creatDoubleLianBiao(void) //创建双向链表
    {
        struct student *head=NULL;
        struct student *tail=NULL;
        struct student *p=NULL;
        int i;
        p=shenQingOneNode();
        head=p;
        tail=p;
        printf("1:继续创建, 2:退出创建\n");
        scanf("%d",&i);
        while(!(1==i||2==i))
        {
            printf("选择无效,请再次选择\n");
            printf("1:继续创建, 2:退出创建\n");
            scanf("%d",&i);
        }
        while (1==i)
        {
            p=shenQingOneNode();
            tail->next=p;
            p->pre=tail;
            tail=p;
            printf("1:继续创建, 2:退出创建\n");
            scanf("%d",&i);
            while(!(1==i||2==i))
            {
                printf("选择无效,请再次选择\n");
                printf("1:继续创建, 2:退出创建\n");
                scanf("%d",&i);
            }
            if (2==i) break;
        }
        LianBiaoID(head);
        return head;
    }
    void LianBiaoID(struct student *head) //为链表自动加上ID号
    {
        struct student *p=NULL;
        int ID=0;
        p=head;
        if (NULL==p) return;
        while (p!=NULL)
        {
            ID++;
            p->ID=ID;
            p=p->next;
        }
        return ;
    }
    void printDoubleLianBiao(struct student *head) //显示链表
    {
        struct student *p=NULL;
        int i=0;
        p=head;
        if (NULL==p)
        {
            printf("\n链表不存在\n");
            printf("----------------------------------------------------------------------\n");
            printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
            printf("----------------------------------------------------------------------\n");
            return;
        }
        printf("\n");
        printf("\t\t\t档  案  信  息  表\n");
        printf("----------------------------------------------------------------------\n");
        printf("ID\t学号\t\t姓名\t性别\t年龄\t地址\n");
        printf("----------------------------------------------------------------------\n");
        while (p!=NULL)
        {
            printf("%-8d%-16s%-8s%-8s%-8d%s\n",p->ID,p->studentNumber,p->name,p->sex,p->age,p->address);
            p=p->next;
            i++;
        }
        printf("----------------------------------------------------------------------\n");
        printf("\n");
        printf("\t\t\t共有 %d 条记录\n",i);
        printf("\n");
        return;
    }
    

    功能模块图


    流程图


    展开全文
  • 学生成绩管理系统JAVA课程设计 目录 1设计题目1 2 设计目的2 3设计分析 3 4 概念结构设计 6 5 逻辑结构设计 11 6 表结构设计 13 装 7 具体功能实现15 8 总结26 9 附录 27 订 线 共 39 页 第 0 页 1.设计题目 学生...
  • Javaweb学生信息管理系统课程设计,带mysql数据库和课程设计文档
  • 选 目 录 TOC \o "1-3" \h \z \u 1 引言.2 3 需求分析.3 2.1 问题陈述 3 2.2 需求分析 4 2.3 可行性研究 4 3 系统总体设计 5 3.1 数据需求设计 5 3.2 功能模块设计 7 4 详细设计与实现 8 4.1 开发环境 9 4.2 功能...
  • 数据库学生成绩管理系统课程设计报告 数据库课程设计报告1.功能需求 本报告主要介绍学生成绩管理系统的数据库设计,从需求分析到数据库的运行与维护都 进行详细的叙述。该系统是利用 SQL 开发出来的。通过 SQL 建立...

    41528d3028836879cd698677c3999917.gif数据库学生成绩管理系统课程设计报告

    数据库课程设计报告1.功能需求 本报告主要介绍学生成绩管理系统的数据库设计,从需求分析到数据库的运行与维护都 进行详细的叙述。该系统是利用 SQL 开发出来的。通过 SQL 建立学生成绩管理系统,大大 方便和简化了数据的查询和处理,管理员可以通过 SQL 语言对表内数据进行添加,删除, 修改,查询等操作,还可以建立多用户,对其使用权限进行分配和回收。 报告分为 4部分,第一部分是课题简介及设计的内容与目的,需求分析,此阶段是数据 库设计的起点。第二部分是概念设计,逻辑结构设计,它是将需求分析的用户需求抽象为信 息结构,并将概念模型转换为某个 DBMS 所支持的数据模型。第三部分是数据库的实施与 运行,它包括数据的载入及数据困的运行和数据库和数据表的创建(代码) 。第四部分是课 程设计的总结。 1.1开发环境及开发语言 本次课程设计是以学生信息管理系统为模拟模型,运用 C++编程语言结合 SQL 数据库 所开发系统。开发平台为 VC6.0 和 SQL2008。 1.2 设计目的 随着学生数量的日益增多,学校对学生的管理要求也越来越高,为了使学生成绩的管理 更加系统化,数字化,因此我们设计了该学生信息管理系统。 1.3 设计内容 运用基于 E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计 直至系统的最终实现,开发学生成绩管理系统,完成学生成绩管理系统的全部功能。首先做 好需求分析,并完成数据流图,其次做概念分析,利用实体联系的方法将需求分析的用户需 求抽象为信息结构,得到 E-R 图,然后就是逻辑结构设计,将 E-R 图转换为计算机系统所 支持的逻辑模型。最后利用 SQL 完成具体的实例。 1.4.需求分析 1、 问题的提出:为了高效率的完成学生成绩的管理,决定开发学生成绩管理系统。 2、 需完成的功能: (1) 能提供管理员及普通用户(除删除和修改)录入、注销、显示当前用户、修改、删 除、查询、输出,学生的档案信息,这些信息包括学生的成绩、课程、个人信息等。 (2) 触发器,索引,存储过程的建立及使用。 2. 概念设计 (1)(E-R图) Studen t Sname Sex Birthday Tel Sno Address Grade Score Politica Culture Cource Sno Cno Test User UserNm UserPw UserTyp (2)物理结构设计 Student Column Name Date Type Width 空值情况 Sno nchar 10 主关键字 Sname nchar 10 不为空 Sex nchar 10 不为空 Birthday numeric 10 可为空 Address nchar 10 可为空 Grade nchar 10 不为空 Po;itic nchar 10 不为空 Cuture nchar 10 不为空 Tel Nchar 10 不为空Cource Column Name Date Type Width 空值情况 Sno nchar 10 主关键字 Cno nchar 10 不为空 Score nchar 10 可为空 User Column Name Date Type Width 空值情况 User_name nchar 20 主关键字 User_Pswd nchar 20 不为空 User_Type int 可为空 (3)分析关系模式 对于关系模式 Student(Sno|Sname|Sex|Age|Address|Grade|class|Tel|Politic|Cuture )假定姓名 也具有唯一性,那么 Student 就有两个码,这两个码都由单个属性组成,彼此不相交。其它属性不存在对码的传递依赖与 部分依赖,又因为 Student 中除学号、姓名外没有其它的因素,所以 Student 属于 BCNF。对 于关系模式Cource(|Sno|Cno|Score|)有两个码,这两个码都由单个属性组成,彼此不相交, 其它属性不存在对码的传递依赖与部分依赖,又因为成绩中除学号、课程号外没有其它的决 定因素,所以成绩属于 BCNF。对于关系模式User(|UserName|UserType|UserPswd|)中, 它只有一个码,这里没有任何属性对课程号部分依赖或传递依赖,同时用户名是唯一的决定 因素,所以课程属于 BCNF。它和学生信息和成绩没有直接的联系,因此它是一张单独的表。 3.SQL 语句 3.1 创建表 学生表 create table Student ( Sno nchar(10) primary key,Sname nchar(10) not nullSex nchar(10) not null Age numeric(10) Address nchar(10)Class nchar(10) not null Grade nchar(10) not null Tel nchar(10) not null Politic nchar(10) not null Cuture nchar(10) not null ) 成绩表 create table Exam ( Sno nchar(10) primary key //主键约束Cno nchar(10) Not nullScore nchar(10) foreign key (Cno) references Course //外键约束 check(Score>=0) //完整性约束 ) 用户表 create table Teacher ( Username nchar(10) not nullUserPswd nchar(10) not nullUserType nchar(10) not null ) 3.2数据初始化 将学生类别加入表 Student 中 insert into Student values ( 000’,’张明’,’M’,’’,’哈尔滨’,’计科一班’,’大一’,’15880000’, ’无’,’群众’) insert into Student values( 001’,’李三’,’M’,’’,’长春’,’计科二班’,’大三’ ’15233000’.’无’, ’群众’) insert into Student values( 002’,’王强’,’M’,’’,’哈尔滨’,’软件二班’,’大二’ ’15850040’.’无’, ’群众’) insert into Student values( 003’,’张雪’,’F’,’’,’哈尔滨’,’软件一班’,’大一’ ’156809802’.’无’, ’群众’) insert into Student values( 004’,’李力’,’M’,’’,’大连’,’软件一班’,’大三’ ’15980000’.’无’, ’群众’)

    展开全文
  • 主要介绍了C语言学生学籍管理系统课程设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了C语言学生成绩管理系统课程设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 错误未定义书签 错误未定义书签 错误未定义书签 错误未定义书签 错误未定义书签 错误未定义书签 1设计目的及内容要求 2系统总体设计 3系统详细设计 4运行结果及分析 致谢 参考文献 简单学生成绩管理系统设计与实现...
  • 一、引言(简要说明设计题目的目的、意义、内容、主要任务等)1实验目的在全面掌握《C语言程序设计课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序实现对实际问题的处理,掌握程序项目开发...
  • 用c++语言编写的学生管理系统课程设计,希望对大家学习c++语言有所帮助
  • 数据库原理及Oracle开发课程设计 题 目 选课管理系统 系 (部) 电信系 班 级 计本一班 姓 名 耿榕 学 号 2012020198 指导教师 黄硕 2014年 6 月9日 选课管理系统 选课管理系统 数据库原理及Oracle开发 课程设计任务书...
  • 学生成绩管理系统课程设计报告+代码
  • 学生成绩管理系统课程设计报告.docx学生成绩管理系统课程设计报告.docx学生成绩管理系统课程设计报告.docx学生成绩管理系统课程设计报告.docx学生成绩管理系统课程设计报告.docx
  • 荆楚理工学院 课程设计成果 学院: 计算机工程学院 班 级: 计算机科学与技术一班 ... 教师签名_ 摘 要 本文描述的是基于Windows环境的学生管理系统主要功能模块包括学生信息的添加修改查找删除主要工具Microsoft Visu
  • 学习态度及平 时成绩30 技术水平与实际 能力20 创新5 说明书撰写质量45 总?...码: 8404051 题 目: 学生成绩管理系统 年级/专业/班: 07?计科?6?班 学?生?姓?名: 张旭 学 号: 312007080605828 开?始?时?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,010
精华内容 1,604
关键字:

学生管理系统课程设计