- cloud123
-
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf(" ****Students" Grade Management System**** "); /*菜单选择*/
printf(" | 1. Input Records | ");
printf(" | 2. Display All Records | ");
printf(" | 3. Sort | ");
printf(" | 4. Insert a Record | ");
printf(" | 5. Delete a Record | ");
printf(" | 6. Query | ");
printf(" | 7. Statistic | ");
printf(" | 8. Add Records from a Text File| ");
printf(" | 9. Write to a Text file | ");
printf(" | 0. Quit | ");
printf(" ***************************************** ");
printf(" Give 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(" student"s num:"); /*交互输入*/
scanf(" %s",stud[n+i].num);
printf(" student"s name:");
scanf(" %s",stud[n+i].name);
printf(" student"s score:");
scanf(" %d",&stud[n+i].score);
gets(x); /*清除多余的输入*/
printf(" any more records?(Y/N)");
scanf(" %c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf(" ----------------------------------- "); /*格式头*/
printf(" number name score ");
printf(" ----------------------------------- ");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf(" %-16s%-15s%d ",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十个暂停*/
{printf(" ----------------------------------- "); /*格式*/
printf(" ");
system("pause");
printf(" ----------------------------------- ");
}
}
printf(" ");
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(" student"s num:"); /*交互式输入*/
scanf(" %s",stud[n].num);
printf(" student"s name:");
scanf(" %s",stud[n].name);
printf(" student"s score:");
scanf(" %d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf(" Insert Successed! "); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf(" tell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf(" not find! "); /*返回失败信息*/
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(" Delete Successed! "); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf(" input his(her) name:"); /*交互式输入*/
scanf(" %s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf(" not find! "); /*输入失败信息*/
return;
}
printf(" his(her) number:%s ",stud[i].num); /*输出该学生信息*/
printf(" his(her) score:%d ",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=1.0*sum/n;
printf(" there are %d records. ",n); /*总共记录数*/
printf(" the hignest score: "); /*最高分*/
printf(" number:%s name:%s score:%d ",stud[j].num,stud[j].name,stud[j].score);
printf(" the lowest score: "); /*最低分*/
printf(" number:%s name:%s score:%d ",stud[k].num,stud[k].name,stud[k].score);
printf(" the average score is %5.2f ",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf(" Input the filename:");
scanf(" %s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf(" cann"t open the file "); /*打开失败信息*/
printf(" ");
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(" Successed! ");
printf(" ");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf(" Write Records to a Text File "); /*输入文件名*/
printf(" Input the filename:");
scanf(" %s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf(" cann"t open the file ");
system("pause");
return;
}
fprintf(fp,"%d ",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d ",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed! "); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf(" Input Records "); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf(" Display All Records "); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf(" Sort ");
Sort_by_num(stu,n); /*按学号排序*/
printf(" Sort Suceessed! ");
printf(" ");
system("pause");
break;
case 4:
printf(" Insert a Record ");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf(" ");
system("pause");
break;
case 5:
printf(" Delete a Record ");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf(" ");
system("pause");
break;
case 6:
printf(" Query ");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf(" ");
system("pause");
break;
case 7:
printf(" Statistic ");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf(" ");
system("pause");
break;
case 8:
printf(" Add Records from a Text File ");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf(" Write to a Text file ");
WritetoText(stu,n); /*循环写入数据*/
printf(" ");
system("pause");
break;
case 0:
printf(" Have a Good Luck,Bye-bye! "); /*结束程序*/
printf(" ");
system("pause");
exit(0);
}
}
}
- 皮皮
-
1.引言
1.1编写目的
编写本文档的目的
1.2产品介绍
说明产品是什么,什么用途
介绍产品的开发背景
1.3定义
术语与缩写的解释
1.4参考资料
2.任务概述
2.1目标
项目的目标
2.2运行环境
2.3产品面向的用户群体
描述本产品面向的用户(客户、最终用户)的特征,
说明本产品将给他们带来什么好处?他们选择本产品的可能性有多大?
3.数据描述
3.1静态数据
数据库字段等,应从需求的角度写明,下同
3.2动态数据
输入输出数据等
3.3数据库介绍
所使用的数据库
3.4数据词典
数据库的表
3.5数据采集
配置数据库参数等
4.产品的功能性需求
4.1功能性需求分类
将功能性需求先粗分再细分
4.2功能A描述
4.3功能B描述
5.产品的非功能性需求
5.1数据精确度
5.2时间特性
5.3适应性
6.运行需求
6.1用户界面需求
6.2故障处理
7.其它需求
可列表说明:
正确性
可靠性
效率
完整性
可维护性
安全性
易用性