数据结构课程设计之学生信息管理系统
来源:互联网 发布:国家保密局 知乎 编辑:程序博客网 时间:2024/05/05 04:41
/*********************************************************** * 版权所有 (C)2016,jiangyankai * 文件名称: main.c * 文件标识:无 * 内容摘要:学生信息管理系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:姜延锴 * 完成日期: 2016.12.29 * 修改记录: 1 * 修改日期: 2016.12.29 * 版本号: V1.0 * 修改人: 姜延锴 * 修改内容:创建 **********************************************************/
代码:main.c
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <iostream>#include <fstream>#include <string>using namespace std;typedef struct {char name[20];//姓名float score;//成绩int num;//学号}STD;typedef struct student{STD data;struct student *next;}lnode,*linklist;int menu();//主函数int createlist(linklist &L);//建立链表 int listadd(linklist L);//追加int listinsert(linklist L,int i,STD x);//插入int listdelete(linklist L,STD &x);//删除int listlength(linklist L);//长度void printlist(linklist L);//输出int findlist(linklist L,STD &x);//查找成绩int destroylist(linklist &L);//退出int listrank(linklist L);//排序void listsum(linklist L);//合计void listsink(linklist L);//索引void savelist(linklist L);//保存文件void readlist(linklist L);//读入文件void secondlist(linklist L);//拷贝文件void main(){int i,n,t=1;linklist L;STD s;createlist(L);while(t){n=menu();switch(n){case 1:listadd(L); printf("\n ****************************************\n");printf(" 添加完成,按任意键继续...\n");getch();break;case 2:printf(" 请输入需要插入的学生学号、姓名、成绩,空格隔开\n");scanf("%d%s%f",&s.num,s.name,&s.score);printf(" 请输入需要插入的位置(1---%d):",listlength(L));scanf("%d",&i);listinsert(L,i,s); printf("\n ****************************************\n");printf(" 插入完成,按任意键继续...\n");getch();break;case 3:printf(" 请输入需要删除的学生学号:");scanf("%d",&s.num);if(!listdelete(L,s)){printf(" 没有该学生数据\n");printf(" 按任意键继续...\n");getch();break;}printf(" 删除的学生数据为:学号:%-5d 姓名:%-10s 成绩:%5.2f\n",s.num,s.name,s.score);printf("\n ****************************************\n");printf(" 删除完成,按任意键继续...\n");getch();break;case 4:printlist(L);printf(" 显示完成,按任意键继续...\n");getch();break;case 5:printf(" 请输入需要查找的学生学号:");scanf("%d",&s.num);if(!findlist(L,s)){printf("\n ****************************************\n");printf(" 没有该学生数据\n");printf(" 按任意键继续...\n");getch();break;}printf(" 被查找的学生数据为:学号:%-5d 姓名:%-10s 成绩:%5.2f\n",s.num,s.name,s.score);printf("\n ****************************************\n");printf(" 查找完成,按任意键继续...\n");getch(); break;case 6:listrank(L);printf(" 按成绩排序完成\n");printf("\n ****************************************\n");printf(" 按任意键继续...\n");getch();break;case 7:listsum(L);printf(" 合计完成,按任意键继续...\n");getch();break;case 8:listsink(L);printf("\n ****************************************\n");printf(" 索引完成,按任意键继续...\n");getch();break;case 9:savelist(L);printf("\n ****************************************\n");printf(" 保存完成,按任意键继续...\n");getch();break;case 10:readlist(L);printf("\n ****************************************\n");printf(" 读取完成,按任意键继续...\n");getch();break;case 11:secondlist(L);printf("\n ****************************************\n");printf(" 备份完成,按任意键继续...\n");getch();break;case 0:destroylist(L);exit(0);default:printf("\n ****************************************\n");printf(" 输入有误\n");printf(" 按任意键继续...\n");getch();}}}int menu(){int n;system("cls");printf("\n ****************************************\n");printf(" * 学生成绩管理系统(1.0) *\n"); printf(" ****************************************\n");printf(" * 2015585061 27 姜延锴 2016-12 *\n");printf(" ****************************************\n");printf(" * 01-增加学生数据 *\n"); printf(" * 02-插入学生数据 *\n"); printf(" * 03-删除学生数据 *\n"); printf(" * 04-显示学生数据 *\n"); printf(" * 05-查找学生数据 *\n");printf(" * 06-按成绩重新排序 *\n");printf(" * 07-合计 *\n");printf(" * 08-索引查找 *\n");printf(" * 09-保存文件 *\n");printf(" * 10-读入文件 *\n");printf(" * 11-备份文件 *\n"); printf(" * 0-退出 *\n");printf(" ****************************************\n"); printf(" 请选择操作(0---11): "); scanf("%d",&n);getchar();return n;}int createlist(linklist &L){L=(linklist)malloc(sizeof(lnode));if(L==NULL){printf("分派空间失败\n");return 0;}L->next=NULL;return 1;}int listadd(linklist L){int num;linklist p;printf(" 请输入学生学号(若输入0表示输入结束):");scanf("%d",&num);if(num==0)return 0;L->next=(linklist)malloc(sizeof(lnode));p=L->next;while(1){p->data.num=num;printf(" 请输入学生姓名:");scanf("%s",&p->data.name);printf(" 请输入学生成绩:");scanf("%f",&p->data.score); printf(" 请输入学生学号(若输入0表示输入结束):");scanf("%d",&num);if(num==0){p->next=NULL;return 1;}else{p->next=(linklist)malloc(sizeof(lnode));p=p->next;}}}int listinsert(linklist L,int i,STD x){int t=0;linklist q,p=L;while(p && t<i-1){p=p->next;++t;}if(!p || t>i-1)return 0;q=(linklist)malloc(sizeof(lnode));strcpy(q->data.name,x.name);q->data.num=x.num;q->data.score=x.score;q->next=p->next;p->next=q;return 1;}int listdelete(linklist L,STD &x){linklist p=L,q=L->next;while(q){if(q->data.num==x.num){x.score=q->data.score;strcpy(x.name,q->data.name);p->next=q->next;free(q);return 1;}else{p=q;q=q->next;}}return 0;}int findlist(linklist L,STD &x){linklist p=L,q=L->next;while(q){if(q->data.num==x.num){x.score=q->data.score;strcpy(x.name,q->data.name);return 1;}else{p=q;q=q->next;}}return 0;}void printlist(linklist L){linklist p=L->next;if(p){printf(" \n 数据显示\n");printf(" ******************************\n");printf(" 学号 姓名 成绩\n");printf(" ******************************\n");while(p){printf(" %4d%10s%16f\n",p->data.num,p->data.name,p->data.score);p=p->next;}printf(" ******************************\n");}else{printf(" 系统中无数据,请先插入数据!\n");}}int destroylist(linklist &L){linklist p=L->next;while(p){p=p->next;free(L->next);L->next=p;}return 1;}int listrank(linklist L)//冒泡排序{linklist p=L->next;linklist q;STD x;while(p){q=p->next;while(q){if(p->data.score<=q->data.score){x=p->data;p->data=q->data;q->data=x;}q=q->next;}p=p->next;}return 1;}int listlength(linklist L){int t=0;linklist p=L;while(p){p=p->next;++t;}return t;}void listsum(linklist L){int t=0;float sum=0.0;linklist p=L;while(p->next){t++;sum+=p->next->data.score;p=p->next;}printf(" 合计结果:\n");printf(" ************************\n");printf(" 总人数:%d \n",t);printf(" 总数分:%f \n",sum);printf(" ************************\n");}void listsink(linklist L){int n;printf(" 请输入索引值:1-学号 2-姓名 3-成绩\n");scanf("%d",&n);if(n==1){linklist p=L->next;if(p){while(p){printf(" 学号:%d \n",p->data.num);p=p->next;}}else{printf(" 系统中无数据,请先插入数据!\n");}}else if(n==2){linklist p=L->next;if(p){while(p){printf(" 姓名:%s \n",p->data.name);p=p->next;}}else{printf(" 系统中无数据,请先插入数据!\n");}}else if(n==3){linklist p=L->next;if(p){while(p){printf(" 成绩:%f \n",p->data.score);p=p->next;}}else{printf(" 系统中无数据,请先插入数据!\n");}}else printf(" 输入错误,请重新输入\n");}void savelist(linklist L){ofstream fp;linklist p=L->next;fp.open("学生成绩管理系统.txt",ios::out);while(p){fp<<p->data.num<<" "<<p->data.name<<" "<<p->data.score<<"\n";p=p->next;}fp.close();printf("\n 保存文件完毕,请按任意键继续!\n ");}void readlist(linklist L){string s; ifstream input; input.open("学生成绩管理系统.txt", ios::in); if(!input)cout<<"error!"<<endl; else while(input>>s){cout<<s<<" "; }}void secondlist(linklist L){ofstream fp;linklist p=L->next;fp.open("学生成绩管理系统(备份).txt",ios::out);while(p){fp<<p->data.num<<" "<<p->data.name<<" "<<p->data.score<<"\n";p=p->next;}fp.close();printf("\n 备份文件完毕,请按任意键继续!\n ");}
0 0
- 数据结构课程设计之学生信息管理系统
- 数据结构课程设计---学生信息管理系统
- 数据结构课程设计-学生信息管理系统
- 数据结构课程设计学生信息管理系统
- 数据结构课程设计-------学生信息管理系统
- 数据结构课程设计--学生信息管理系统
- 数据结构课程设计论文--学生信息管理系统
- 数据结构课程设计—学生信息管理系统
- 数据结构课程设计【学生信息管理系统(烟大版)】
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计-学生各方面信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计-学生信息管理
- 数据结构课程设计-学生信息管理
- 课程设计--学生信息管理系统
- 学生信息管理系统(课程设计)
- 程序员必知的8大排序(四)-------归并排序,基数排序(java实现)
- C#Winform将WebBowser控件替换为Chrome内核
- 网络断开后再连接的断点续传是怎么实现的?
- [Leetcode]394. Decode String
- PHP 如何操作跨域的COOKIE,不同服务器上
- 数据结构课程设计之学生信息管理系统
- 线程安全和可重入的区别
- java.net.UnknownHostException: host01: host01: Name or service not known
- 聊天界面自定义cell中的image view加载网络图片不显示
- 图解详细介绍Eclipse环境下配置spket中ExtJS提示
- 基于Crawler4j + jsoup实现爬虫
- Error:The number of method references in a .dex file cannot exceed 64K. 解决方案
- http://blog.csdn.net/mzpmzk/article/details/51488494
- 支付宝支付验签