简易信息统计系统
来源:互联网 发布:mac照片如何传磁盘上 编辑:程序博客网 时间:2024/04/30 05:41
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct info
{
char num[20];
char name[10];
float cj;
struct info *next;
struct info *last;
};
void author();
struct info* input(struct info *);
struct info* search(char *,struct info *);
struct info* del(char *,struct info *);
struct info* deleteMenu(struct info *);
void searchMenu(struct info *fPtr);
void saveData(struct info *);
struct info* loadData(struct info *);
void showAll(struct info *);
struct info* sort(struct info *);
void main()
{
struct info *first=0;
int choose;
author();
while(1){
printf("**********************************************************/n");
printf("* 1:加入一个新纪录 2:删除一个记录 3:查询(修改)一个记录 */n");
printf("* 4:退出程序 5:保存数据 6:载入数据 */n");
printf("* 7:显示全部记录 8:按成绩排序记录 */n");
printf("**********************************************************/n");
printf("请选择(1~8):");
scanf("%d",&choose);
printf("/n");
switch(choose){
case 1:
first=input(first);
break;
case 2:
first=deleteMenu(first);
break;
case 3:
searchMenu(first);
break;
case 4:
return;
case 5:
saveData(first);
break;
case 6:
first=loadData(first);
break;
case 7:
showAll(first);
break;
case 8:
first=sort(first);
break;
default:
printf("输入错误!/n/n/n");
break;
}
printf("/n/n/n");
}
}
struct info *input(struct info *fPtr)
{
struct info *i;
i=(struct info*)malloc(sizeof(struct info));
printf("输入该生学号:");
scanf("%s",i->num);
printf("输入该生姓名:");
scanf("%s",i->name);
printf("输入该生成绩:");
scanf("%f",&(i->cj));
(i->next)=fPtr;
if(fPtr!=0){
(fPtr->last)=i;
}
(i->last)=0;
fPtr=i;
return fPtr;
}
struct info* del(char *s,struct info *fPtr)
{
struct info *r;
r=search(s, fPtr);
if(r==0){
printf("没有记录可删除!/n/n/n");
return fPtr;
}
else{
if(r==fPtr){
fPtr=fPtr->next;
free(r);
printf("删除成功!/n/n/n");
return fPtr;
}
((r->last)->next)=(r->next);
free(r);
printf("删除成功!/n/n/n");
return fPtr;
}
}
struct info *search(char *s,struct info *fPtr)
{
int r;
if(fPtr==0){
return 0;
}
while(1){
r=strcmp(fPtr->num, s);
if(r==0){
return fPtr;
}
r=strcmp(fPtr->name,s);
if(r==0){
return fPtr;
}
if((fPtr->next)!=0){
fPtr=(fPtr->next);
}
else{
return 0;
}
}
}
struct info* deleteMenu(struct info *fPtr)
{
char nn[20];
printf("输入该生姓名或学号:");
scanf("%s",nn);
return del(nn,fPtr);
}
void searchMenu(struct info *fPtr)
{
int yorn;
char nn[2];
struct info *r;
printf("输入该生姓名或学号:");
scanf("%s",nn);
r=search(nn,fPtr);
if(r==0){
printf("查无记录!/n/n/n");
return;
}
else{
printf("学号:%s 姓名:%s 成绩:%f/n/n/n",r->num,r->name,r->cj);
printf("是否要修改?(1=是 , 0=否)");
scanf("%d",&yorn);
if(yorn==1){
printf("输入该生学号:");
scanf("%s",r->num);
printf("输入该生姓名:");
scanf("%s",r->name);
printf("输入该生成绩:");
scanf("%f",&(r->cj));
printf("修改成功!/n/n/n");
}
}
}
void saveData(struct info *fPtr)
{
FILE *fp;
if(fPtr==0){
printf("没有记录可保存!/n/n/n");
return;
}
fp=fopen("info.stu","wb+");
while(1){
fwrite(fPtr,sizeof(struct info),1,fp);
fPtr=(fPtr->next);
if(fPtr==0){
break;
}
}
printf("保存成功!/n");
fclose(fp);
}
struct info* loadData(struct info *fPtr)
{
struct info *now=0;
struct info *up=0;
FILE *fp;
if((fp=fopen("info.stu","rb"))==NULL){
printf("无法打开文件");
return fPtr;
}
fPtr=(struct info*)malloc(sizeof(struct info));
up=fPtr;
fread(fPtr,sizeof(struct info),1,fp);
if((fPtr->next)==0){
printf("数据载入成功!/n/n/n");
return fPtr;
}
while(1){
now=(struct info*)malloc(sizeof(struct info));
fread(now,sizeof(struct info),1,fp);
(now->last)=up;
(up->next)=now;
up=now;
if((now->next)==0){
fclose(fp);
printf("数据载入成功!/n/n/n");
return fPtr;
}
}
}
void showAll(struct info *fPtr)
{
if(fPtr==0){
printf("没有记录!/n/n/n");
return;
}
while(1){
printf("学号:%s 姓名:%s 成绩:%f/n-----------------------------/n",fPtr->num,fPtr->name,fPtr->cj);
fPtr=fPtr->next;
if(fPtr==0){
printf("显示成功!/n/n/n");
return;
}
}
}
void author()
{
printf(" ***********************************************/n");
printf(" * 简易成绩 作者:周伟 */n");
printf(" * 统计系统 版本:1.1 */n");
printf(" ***********************************************/n/n/n");
}
struct info* sort(struct info *fPtr)
{
struct info *now;
struct info *ne;
struct info *temp=0;
if(fPtr==0){
printf("没有记录可排序!");
return fPtr;
}
while(1){
int i=0;
int j=1;
now=fPtr;
ne=(fPtr->next);
if((now->next)==0){
printf("排序成功!");
return fPtr;
}
while(1){
if((now->cj)<(ne->cj)){
temp=(ne->next);
(ne->next)=now;
(now->next)=temp;
temp=(now->last);
(now->last)=ne;
(ne->last)=temp;
if(temp!=0){
(temp->next)=ne;
}
if(j==1){
fPtr=ne;
}
ne=(now->next);
i=1;
}
else{
now=ne;
ne=(ne->next);
}
j++;
if((now->next)==0){
break;
}
}
if(i==0){
printf("排序成功!");
return fPtr;
}
}
}
- 简易信息统计系统
- oracle系统统计信息
- oracle系统统计信息
- 系统统计信息与对象统计信息
- 简易学生信息查询系统
- 简易移动用户资费统计系统 数据库设计方案
- 港口信息统计系统:HNGT09
- 系统统计信息(System Statistics)
- oracle收集系统统计信息
- sysinfo: 获得系统统计信息
- 自制简易获取系统进程模块信息
- 取得Linux系统的各种统计信息
- Linux 系统信息监控统计命令小结
- 取得Linux系统的各种统计信息
- 关于广告系统信息统计的解决方案
- 取得Linux系统的各种统计信息
- 04 系统和对象统计信息
- Oracle性能分析11:系统统计信息
- 美国杂志300强及其网址
- C#编程打造自己的IE浏览器[原创]
- 净宗科学观-净空法师讲于台南某高等学府
- 游民稗史-程序员的小说(5)
- Peer-to-Peer (P2P) communication across middleboxes(翻译3)
- 简易信息统计系统
- 网址收藏
- 24小时学DX之第一小时——win32窗体
- 24小时学DX之第二小时——显示一张背景图片
- 24小时学DX之第三小时——双缓冲
- 不用日期控件的智能日期输入法(vb代码版)
- 24小时学DX之第四小时——计时器、title
- 正则表达式基础
- 人族男剑客连招技能分析