自己参照数据改一下应该就可以了。
#include<stdioh> /引用库函数/
#include<stdlibh>
#include<ctypeh>
#include<stringh>
typedef struct /定义结构体数组/
{
char num[10]; /学号/
char name[20]; /姓名/
int score; /成绩/
}Student;
Student stu[80]; /结构体数组变量/
int menu_select() /菜单函数/
{
char c;
do{
system("cls"); /运行前清屏/
printf("\t\tStudents' Grade Management System\n"); /菜单选择/
printf("\t\t | 1 Input Records |\n");
printf("\t\t | 2 Display All Records |\n");
printf("\t\t | 3 Sort |\n");
printf("\t\t | 4 Insert a Record |\n");
printf("\t\t | 5 Delete a Record |\n");
printf("\t\t | 6 Query |\n");
printf("\t\t | 7 Statistic |\n");
printf("\t\t | 8 Add Records from a Text File|\n");
printf("\t\t | 9 Write to a Text file |\n");
printf("\t\t | 0 Quit |\n");
printf("\t\t\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /读入选择/
}while(c<'0'||c>'9');
return(c-'0'); /返回选择/
}
int Input(Student stud[],int n) /输入若干条记录/
{int i=0;
char sign,x[10]; /x[10]为清除多余的数据所用/
while(sign!='n'&&sign!='N') /判断/
{ printf("\t\t\tstudent's num:"); /交互输入/
scanf("\t\t\t%s",stud[n+i]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i]score);
gets(x); /清除多余的输入/
printf("\t\t\tany more records(Y/N)");
scanf("\t\t\t%c",&sign); /输入判断/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /显示所有记录/
{
int i;
printf("\t\t\t-----------------------------------\n"); /格式头/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /循环输入/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1]num,stud[i-1]name,stud[i-1]score);
if(i>1&&i%10==0) /每十个暂停/
{printf("\t\t\t-----------------------------------\n"); /格式/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /按学号排序/
{ int i,j,p,q,s;
char t[10];
for(i=0;i<n-1;i++) /冒泡法排序/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j]num,stud[j+1]num)>0)
{strcpy(t,stud[j+1]num);
strcpy(stud[j+1]num,stud[j]num);
strcpy(stud[j]num,t);
strcpy(t,stud[j+1]name);
strcpy(stud[j+1]name,stud[j]name);
strcpy(stud[j]name,t);
p=&stud[j+1]score;
q=&stud[j]score;
s=p;
p=q;
q=s;
}
}
int Insert_a_record(Student stud[],int n) /插入一条记录/
{char x[10]; /清除多余输入所用/
printf("\t\t\tstudent's num:"); /交互式输入/
scanf("\t\t\t%s",stud[n]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n]score);
gets(x);
n++;
Sort_by_num(stud,n); /调用排序函数/
printf("\t\t\tInsert Successed!\n"); /返回成功信息/
return(n);
}
int Delete_a_record(Student stud[],int n) /按姓名查找,删除一条记录/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /交互式问寻/
scanf("%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /返回失败信息/
return(n);
}
for(j=i;j<n-1;j++) /删除 *** 作/
{
strcpy(stud[j]num,stud[j+1]num);
strcpy(stud[j]name,stud[j+1]name);
stud[j]score=stud[j+1]score;
}
printf("\t\t\tDelete Successed!\n"); /返回成功信息/
return(n-1);
}
void Query_a_record(Student stud[],int n) /查找并显示一个记录/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /交互式输入/
scanf("\t\t\t%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /输入失败信息/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i]num); /输出该学生信息/
printf("\t\t\this(her) score:%d\n",stud[i]score);
}
void Statistic(Student stud[],int n) /新增功能,输出统计信息/
{ int i,j=0,k=0,sum=0;
float aver; /成绩平均值/
for(i=0;i<n;i++) /循环输入判断/
{
sum+=stud[i]score;
if(stud[j]score>stud[i]score) j=i;
if(stud[k]score<stud[i]score) k=i;
}
aver=10sum/n;
printf("\t\t\tthere are %d records\n",n); /总共记录数/
printf("\t\t\tthe hignest score:\n"); /最高分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j]num,stud[j]name,stud[j]score);
printf("\t\t\tthe lowest score:\n"); /最低分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k]num,stud[k]name,stud[k]score);
printf("\t\t\tthe average score is %52f\n",aver); /平均分/
}
int AddfromText(Student stud[],int n) /从文件中读入数据/
{ int i=0,num;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /输入文件名/
if((fp=fopen(filename,"rb"))==NULL) /打开文件/
{ printf("\t\t\tcann't open the file\n"); /打开失败信息/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /读入总记录量/
while(i<num) /循环读入数据/
{
fscanf(fp,"%s%s%d",stud[n+i]num,stud[n+i]name,&stud[n+i]score);
i++;
}
n+=num;
fclose(fp); /关闭文件/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /将所有记录写入文件/
{
int i=0;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tWrite Records to a Text File\n"); /输入文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /打开文件/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /循环写入数据/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i]num,stud[i]name,stud[i]score);
i++;
}
fclose(fp); /关闭文件/
printf("Successed!\n"); /返回成功信息/
}
void main() /主函数/
{
int n=0;
for(;;)
{
switch(menu_select()) /选择判断/
{
case 1:
printf("\t\t\tInput Records\n"); /输入若干条记录/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /显示所有记录/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /按学号排序/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /插入一条记录/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /按姓名查找,删除一条记录/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /查找并显示一个记录/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /新增功能,输出统计信息/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /新增功能,输出统计信息/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /循环写入数据/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /结束程序/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:datatxt,回车;
出现成功提示,则读入文件 *** 作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜单,输入4,回车
按提示插入一组数据
7、回到主菜单,输入5,回车
按提示输入姓名,删除数据
出现删除成功的信息
8、回到主菜单,输入6,回车
输入姓名进行查询
9、回到主菜单,输入7,回车
出现统计信息
10、回到主菜单,输入9,回车
输入resulttxt,回车
出现成功写入文件的信息
11、回到主菜单,输入0,回车退出系统
回答者:kingkey001 - 试用期 一级 7-14 22:38
修改答复: kingkey001,您要修改的答复如下: 积分规则 关闭
C语言课程设计报告-------学生成绩简单管理程序
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的 *** 作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的 *** 作,提前准备好数据。
三、程序正文部分
#include<stdioh> /引用库函数/
#include<stdlibh>
#include<ctypeh>
#include<stringh>
typedef struct /定义结构体数组/
{
char num[10]; /学号/
char name[20]; /姓名/
int score; /成绩/
}Student;
Student stu[80]; /结构体数组变量/
int menu_select() /菜单函数/
{
char c;
do{
system("cls"); /运行前清屏/
printf("\t\tStudents' Grade Management System\n"); /菜单选择/
printf("\t\t | 1 Input Records |\n");
printf("\t\t | 2 Display All Records |\n");
printf("\t\t | 3 Sort |\n");
printf("\t\t | 4 Insert a Record |\n");
printf("\t\t | 5 Delete a Record |\n");
printf("\t\t | 6 Query |\n");
printf("\t\t | 7 Statistic |\n");
printf("\t\t | 8 Add Records from a Text File|\n");
printf("\t\t | 9 Write to a Text file |\n");
printf("\t\t | 0 Quit |\n");
printf("\t\t\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /读入选择/
}while(c<'0'||c>'9');
return(c-'0'); /返回选择/
}
int Input(Student stud[],int n) /输入若干条记录/
{int i=0;
char sign,x[10]; /x[10]为清除多余的数据所用/
while(sign!='n'&&sign!='N') /判断/
{ printf("\t\t\tstudent's num:"); /交互输入/
scanf("\t\t\t%s",stud[n+i]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i]score);
gets(x); /清除多余的输入/
printf("\t\t\tany more records(Y/N)");
scanf("\t\t\t%c",&sign); /输入判断/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /显示所有记录/
{
int i;
printf("\t\t\t-----------------------------------\n"); /格式头/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /循环输入/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1]num,stud[i-1]name,stud[i-1]score);
if(i>1&&i%10==0) /每十个暂停/
{printf("\t\t\t-----------------------------------\n"); /格式/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /按学号排序/
{ int i,j,p,q,s;
char t[10];
for(i=0;i<n-1;i++) /冒泡法排序/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j]num,stud[j+1]num)>0)
{strcpy(t,stud[j+1]num);
strcpy(stud[j+1]num,stud[j]num);
strcpy(stud[j]num,t);
strcpy(t,stud[j+1]name);
strcpy(stud[j+1]name,stud[j]name);
strcpy(stud[j]name,t);
p=&stud[j+1]score;
q=&stud[j]score;
s=p;
p=q;
q=s;
}
}
int Insert_a_record(Student stud[],int n) /插入一条记录/
{char x[10]; /清除多余输入所用/
printf("\t\t\tstudent's num:"); /交互式输入/
scanf("\t\t\t%s",stud[n]num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n]name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n]score);
gets(x);
n++;
Sort_by_num(stud,n); /调用排序函数/
printf("\t\t\tInsert Successed!\n"); /返回成功信息/
return(n);
}
int Delete_a_record(Student stud[],int n) /按姓名查找,删除一条记录/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /交互式问寻/
scanf("%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /返回失败信息/
return(n);
}
for(j=i;j<n-1;j++) /删除 *** 作/
{
strcpy(stud[j]num,stud[j+1]num);
strcpy(stud[j]name,stud[j+1]name);
stud[j]score=stud[j+1]score;
}
printf("\t\t\tDelete Successed!\n"); /返回成功信息/
return(n-1);
}
void Query_a_record(Student stud[],int n) /查找并显示一个记录/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /交互式输入/
scanf("\t\t\t%s",s);
while(strcmp(stud[i]name,s)!=0&&i<n) i++; /查找判断/
if(i==n)
{ printf("\t\t\tnot find!\n"); /输入失败信息/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i]num); /输出该学生信息/
printf("\t\t\this(her) score:%d\n",stud[i]score);
}
void Statistic(Student stud[],int n) /新增功能,输出统计信息/
{ int i,j=0,k=0,sum=0;
float aver; /成绩平均值/
for(i=0;i<n;i++) /循环输入判断/
{
sum+=stud[i]score;
if(stud[j]score>stud[i]score) j=i;
if(stud[k]score<stud[i]score) k=i;
}
aver=10sum/n;
printf("\t\t\tthere are %d records\n",n); /总共记录数/
printf("\t\t\tthe hignest score:\n"); /最高分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j]num,stud[j]name,stud[j]score);
printf("\t\t\tthe lowest score:\n"); /最低分/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k]num,stud[k]name,stud[k]score);
printf("\t\t\tthe average score is %52f\n",aver); /平均分/
}
int AddfromText(Student stud[],int n) /从文件中读入数据/
{ int i=0,num;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /输入文件名/
if((fp=fopen(filename,"rb"))==NULL) /打开文件/
{ printf("\t\t\tcann't open the file\n"); /打开失败信息/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /读入总记录量/
while(i<num) /循环读入数据/
{
fscanf(fp,"%s%s%d",stud[n+i]num,stud[n+i]name,&stud[n+i]score);
i++;
}
n+=num;
fclose(fp); /关闭文件/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /将所有记录写入文件/
{
int i=0;
FILE fp; /定义文件指针/
char filename[20]; /定义文件名/
printf("\t\t\tWrite Records to a Text File\n"); /输入文件名/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /打开文件/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /循环写入数据/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i]num,stud[i]name,stud[i]score);
i++;
}
fclose(fp); /关闭文件/
printf("Successed!\n"); /返回成功信息/
}
void main() /主函数/
{
int n=0;
for(;;)
{
switch(menu_select()) /选择判断/
{
case 1:
printf("\t\t\tInput Records\n"); /输入若干条记录/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /显示所有记录/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /按学号排序/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /插入一条记录/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /按姓名查找,删除一条记录/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /查找并显示一个记录/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /新增功能,输出统计信息/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /新增功能,输出统计信息/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /循环写入数据/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /结束程序/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
四、函数调用关系图
注:“→”代表调用
Input函数
打印链表记录
Display函数
输入若干条记录
menu_select()函数
选择菜单
Sort_by_num函数
显示所有记录
Delete_a_record函数
按姓名查找,删除一条记录
Query_a_record查找并显示一条记录
Statistic函数
输出统计信息 (新增)
AddfromText函数
从正文中添加数据到结构体数组中
Main函数
Insert_a_record插入一条记录
WritetoText函数 将所有数据写入文件中
退出程序
Reverse(head)函数
按学号排序
五、设计测试流程
1、进入界面
2、输入选项1,回车;
按提示输入数据:
3、回到主菜单;
输入选项7,回车;
输入文件名:datatxt,回车;
出现成功提示,则读入文件 *** 作成功。
4、回到主菜单,输入2,回车
每10个暂停显示数据
5、回到主菜单,输入3,回车
出现排序成功信息。
6、回到主菜
病情分析:
血小板偏低,不论有否症状,都必须查明病因
指导意见:
通常医生会根据患者的情况确定有否必要做骨髓检查,排除血小板减少现象是否为其他疾病原因引起
病情分析:
血小板减少症是指血液中血小板单位细胞数减少或缺乏的症状发生血小板减少症,通常是由于身体所形成的抗体(有防护症,通常是由于身体所形成的抗体(有防护作用的生化物质)攻击自身的血小板所致某些急性感染是造成这种病的根本原因服用某种药物(如磺胺,有机砷,奎尼丁等)治疗别的疾病,在短时间内输血太多(如在动大手术期间),或发生异常出血和凝血,都可能造成血小板减少特发性血小板减少症紫瘢是较常见的一种
1遵医嘱,停止服用大部分或全部正在使用的药物,因为许多药物都可能造成血小板减少
2服用类固醇,可以减少抗体造成的破坏,从而使血液中血小板的含量提高
3如病情严重可考虑实施脾脏切除手术治疗血小板减少症
4可用输入血小板来治疗因血液丧失和骨髓无法制造足够的血小板而导致的血小板减少症
指导意见:
用以下方法治疗
1仙鹤草30克,熟地20克,红枣10枚,水煎服
2鲜茅根,鲜生地各30克,鲜侧柏叶15克,煎汤,发2次服
3红枣20枚,白芨6克,煎汤连同枣肉吞服
4花生衣50克,红枣7枚,水煎,阿胶1块烊化,一起同服,每天1剂,分3次服,15天为1个疗程(花生衣,具有止血作用,它能对抗纤维蛋白溶解,增强骨髓制造血小板的功能,缩短出血时间,还可能提高血小板的量,改善血小板的质,加强毛细血管收缩功能,纠正凝血因子缺陷等,其止血有效成分可溶于水故煎水服治血小板减少性紫癜,再生障碍贫血,血友病及各种出血疾患)
病情分析:
您好!可参考以下方法:
1仙鹤草30克,熟地20克,红枣10枚,水煎服
2鲜茅根,鲜生地各30克,鲜侧柏叶15克,煎汤,发2次服
3红枣20枚,白芨6克,煎汤连同枣肉吞服
4花生衣50克,红枣7枚,水煎,阿胶1块烊化,一起同服,每天1剂,分3次服,15天为1个疗程(花生衣,具有止血作用,它能对抗纤维蛋白溶解,增强骨髓制造血小板的功能,缩短出血时间,还可能提高血小板的量,改善血小板的质,加强毛细血管收缩功能,纠正凝血因子缺陷等,其止血有效成分可溶于水故煎水服治血小板减少性紫癜,再生障碍贫血,血友病及各种出血疾患)
指导意见:
血小板减少症是指血液中血小板单位细胞数减少或缺乏的症状发生血小板减少症,通常是由于身体所形成的抗体(有防护症,通常是由于身体所形成的抗体(有防护作用的生化物质)攻击自身的血小板所致某些急性感染是造成这种病的根本原因服用某种药物(如磺胺,有机砷,奎尼丁等)治疗别的疾病,在短时间内输血太多(如在动大手术期间),或发生异常出血和凝血,都可能造成血小板减少特发性血小板减少症紫瘢是较常见的一种
1遵医嘱,停止服用大部分或全部正在使用的药物,因为许多药物都可能造成血小板减少
2服用类固醇,可以减少抗体造成的破坏,从而使血液中血小板的含量提高
3如病情严重可考虑实施脾脏切除手术治疗血小板减少症
4可用输入血小板来治疗因血液丧失和骨髓无法制造足够的血小板而导致的血小板减少症
病情分析:
临床表现
(一)症状
1急性型 常见于儿童,占免疫性血小板减少病例的90%男女发病率相近起病前l一3周84%病人有呼吸道或其他病毒感染史,因此秋冬季发病最多起病急骤,可有发热,畏寒,皮肤粘膜紫癜如患者头痛,呕吐,要警惕颅内出血的可能病程多为自限性,80%以上可自行缓解,平均病程4-6周少数可迁延半年或数年以上转为慢性急性型占成人ITP不到10%
2慢性型 常见于青年女性,女性为男性的3-4倍起病隐匿,症状较轻出血常反复发作,每次出血持续数天到数月出血程度与血小板计数有关,血小板>50×109/L,常为损伤后出血;血小板在10×109/L~50×109/L之间可有不同程度自发性出血,血小板在<10×109/L常有严重出血本病自发性缓解少,病人除出血症状外全身情况良好
体征
1急性型 可突然发生广泛而严重的皮肤粘膜紫癜,甚至大片瘀斑和血肿,皮肤瘀点多为全身性,以下肢为多,分布均匀粘膜出血多见于鼻,齿龈,口腔内有血泡胃肠道及泌尿道出血并不少见,颅内出血少见,但有生命危险脾脏常不肿大
2慢性型 皮肤紫癜以下肢远端多见,可有鼻,牙龈及口腔粘膜出血,女性月经过多有时是唯一症状,也有颅内出血引起死亡者少数因反复发作可引起贫血和轻度脾肿大如有明显脾肿大,要排除继发性血小板减少的可能性
(三)常见并发症
多发部位的出血及失血性贫血
实验室和其他辅助检查
(一)血象 血小板计数减少,在急性型或慢性型急性发作期血小板计数常在20×109/L以下,在10×109/L以下时可有广泛或自发性出血慢性型慢性期一般在(30~80)×109/L之间,在50×109/L以上者可无症状;血红蛋白和红细胞计数正常
(二)出血时间可延长;凝血时间正常
(三)血小板抗体的检测 用酶联免疫或荧光免疫法检测ITP患者血小板相关抗体PAIgG,PAIgM,PAIgA,PAC3均可增高,与血小板破坏及减少程度成正比,其中PAIgG增高者占95%,PAIgM增高者占20%左右,后者常伴有较严重出血;另外ITP患者血清中抗血小板膜糖蛋白GPⅡb,Ⅲa,Ⅰb自身抗体和抗心磷脂酶抗体ACA-IgG,ACA-IgM亦可增高,但无诊断特异性
(四)骨髓象 巨核细胞增多或正常,以未成熟型巨核细胞增多为主,部分病例可见幼稚巨核细胞,而产板型巨核细胞较少,常低于30%,提示血小板生成障碍急性型的巨核细胞数量增多及成熟障碍表现为巨核细胞形态异常,体积增大,胞浆少而缺乏颗粒,细胞核圆形,甚少分叶状;在胞浆中可有各种大小不等的空胞以及血小板形成不良
(五)血小板动力学检查 可采用核素法(51Cr或111In标记血小板)或丙三醛法检测血小板生存时间,ITP患者的血小板寿命较正常人明显缩短
指导意见:
诊断要点
1, 急性型IPT:起病前1~2周常有病毒感染史起病急骤,可伴发热,畏寒,突然发生广泛严重的皮肤粘膜出血皮肤出血表现为全身瘀点或瘀斑,密集色红,以四肢及易于碰撞部位多见,严重者可融合成片甚或形成血肿,鼻,齿龈出血也较为常见,还可伴有胃肠道,泌尿系出血等,颅内,脊髓及脑膜出血较少见,但如有口腔,舌大片紫斑或血疱,又伴见头痛或呕吐,往往为颅内出血先兆,要特别警惕一般出血程度与血小板减少程度成正比其病程多为4~6周,最长半年可自愈本病肝及淋巴结一般不肿大,10%~20%患者可有轻度脾肿大颅内出血时可出现相应神经系统症状
2, 慢性型ITP:一般起病隐袭,多数在确诊前数月甚至数年已有易发紫癜,鼻衄,牙龈渗血,月经过多,小手术或外伤后出血时间延长等病史,出血程度不一,一般较轻,紫癜散在色淡,多发生在下肢,很少出现血肿或血疱,泌尿系出血,甚至颅内出血或失血性休克,其病死率<1%,多因上呼吸道感染或过劳诱发急性发作,每次发作可延续数周甚至数月缓解期出血不明显,仅有血小板计数减少此期体征与急性型相同
病情分析:
正常人的血小板数量是100x10(9次方)到300x10(9次方)之间,若降至50x10(9次方),身体遇到一些碰撞便容易瘀黑;若降至10x109,皮下便容易出血,情况非常严重
血小板低的原因
一般来说有两种:一是体内生产血小板不足,如骨髓出现问题,病人患有再生障碍性贫血,药物导致骨髓损坏,血癌或其他癌症等;二是血小板消耗得太快,如免疫性血小板过低症等
指导意见:
血小板低的治疗方法
随其病因和严重程度而多变,需迅速鉴别病因,若有可能应予以纠正(如在肝素有关的血小板低停用肝素)由于血小板反复输注会产生同种血小板抗体,造成疗效的降低,因而要间歇性使用以预防上述抗体产生若血小板低是由于血小板消耗过多,则血小板输注应保留于治疗致命性或中枢神经系出血若由于骨髓衰竭引起的血小板低,则血小板输注保留于治疗急性出血或严重性血小板低(如血小板数<10000/μl)
成年人的治疗通常开始口服皮质类固醇(例如强的松每日1mg/kg)如有效,血小板计数将在2~6周内恢复正常,然后逐步递减皮质类固醇但大多数病人的疗效不够满意,或是减少肾上腺类固醇剂量后即复发脾脏切除可使50%~60%病人得到缓解对于用类固醇和脾脏切除治疗难以奏效的病人,使用其他药物的疗效尚未证实由于慢性ITP病程长,同时慢性ITP患者死亡率低,而对治疗方法的利弊仍须慎重权衡应用合成的雄激素(达那唑),或使用硫唑嘌呤,长春新碱,环磷酰胺,或环孢菌素的免疫抑制疗法的疗效并不一致
对ITP伴致死性出血的患者,可使用免疫球蛋白静注(IVIg),这可抑制单核巨噬细胞的清除包被抗体血小板的作用IVIg剂量1g/kg,1天或连续2天患者血小板数常可在2~4天内上升,但仅维持2~4周大剂量甲基强的松龙1g/(kgd)静脉输注3天,可使血小板数迅速上升,且费用略低于IVIg对那些有致命性出血的患者亦应输注血小板由于糖皮质类固醇或IVIg可能预期在几天内显效,因而对ITP患者不应预防性输注血小板
病情分析:
正常人的血小板数量是100x10(9次方)到300x10(9次方)之间,若降至50,身体就会出现瘀斑,就比较容易出血可以输注血小板,增加凝血功能也可以口服皮质类固醇(强的松每日1mg/kg)血小板计数将在2~6周内恢复正常,然后逐步递减皮质类固醇脾脏切除可使50%~60%病人得到缓解
指导意见:
1平时可以适当参加一些锻炼,以增强体质,提高抗病能力2饮食要有规律,主副食应以高蛋白高维生素为主忌辛辣,油腻及不易消化的食物,烟酒等刺激类物品应以戒除3尽可能避免使用能引起血小板减少的药物 4平时宜保持心情舒畅,避免精神过度紧张要保持个人卫生祝你早日恢复健康
病情分析:
去皮肤病医院看病经采血化验医生说血小板低48在10-12岁左右经常鼻出血,后来就好了这次患感冒去医院看病又化验血还是
指导意见:
血小板过低不可忽视,必须到正规医院的血液科检查骨穿看看脊髓的造血情况是不是除了问题
以上就是关于关于VB的课程设计全部的内容,包括:关于VB的课程设计、我们学校vb程序设计的教科书是以vb6.0为基准的,考试只考笔试,没有上机,试卷大概就是一些选择判、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)