#include
#include
#include
#define MAXLEN 100
#define Null 0
typedef struct node {
int num; // 学号
char name[MAXLEN]; // 姓名
int score; // 分数
struct node *next; // 指针域
}list;
list *creat() // 新增成绩
{
list *head,*p,*r;
int i,n; // n 为学生人数
head=(list *)malloc(sizeof(list));
head->next=Null;
r=head;
printf("请输入学生人数.\n");
scanf("%d",&n);
for(i=1;i<=n;i++) {
p=(list *)malloc(sizeof(list));
printf("请输入学生学号:\n");
scanf("%d",&p->num);
printf("请输入学生姓名:\n");
scanf("%s",&p->name);
printf("请输入学生成绩:\n");
scanf("%d",&p->score);
p->next=Null;
r->next=p;
r=r->next;
}
return (head);
}
list *del (list *h) // 删除成绩
{
int k; // 要删除的学生学号
list *p,*q; // 为什么要两个指针呢?
q=h;
p=h->next;
printf("请输入待删除的学生学号:\n");
scanf("%d",&k);
while (p && p->num!=k) {
q=p;
p=p->next;
}
if(p) {
q->next=p->next;
free(p);
}
else
printf("没有此学生的记录,无法删除!\n");
return (h);
}
void output(list *h) // 输出成绩
{
list *p;
printf("学号\t姓名\t成绩\n");
p=h->next;
while (p!=NULL) {
printf("%d\t%s\t%d\n",p->num,p->name,p->score);
p=p->next;
}
}
void main()
{
list *p;
int k; // 控制循环的标志
while (1) {
printf(" ---------------------------------------\n");
printf(" | 学生成绩管理系统 |\n");
printf(" ---------------------------------------\n");
printf(" | 1. 登记成绩 |\n");
printf(" | 2. 删除成绩 |\n");
printf(" | 3. 输出所有学生成绩 |\n");
printf(" | 0. 退出系统 |\n");
printf(" ---------------------------------------\n");
printf("请输入你的选择:\n");
scanf("%d",&k);
switch(k) {
case 1: p=creat(); break;
case 2: p=del(p); break;
case 3: output(p); break;
case 0: exit(0);
default : printf("选择错误,重新开始!\n");
}
}
}
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.其它需求
可列表说明:
正确性
可靠性
效率
完整性
可维护性
安全性
易用性