c语言学生证设计报告,C语言程序设计课设报告_学生证管理系统.docx

PAGE \* MERGEFORMAT1

学生证管理程序报告

学号:

姓名:

完成日期: 2012年 5 月

题目内容的提出与描述

学生证的有效管理是学校的重要工作,这项工作的工作重点是需要学校建立一个简明高效,便于操作和处理信息的学生证管理系统。这样,学校就可以从全局上掌控、修改、统计学生信息,为学生管理工作提供极大的便利,本程序的目的旨在于管理大量学生的学生证信息,大大提高学校和教师的工作效率。

本程序的具体功能包括:1)通过键盘输入某位学生的学生证信息。

2) 给定学号,显示某位学生的学生证信息。

3) 给定某个班级的班号,显示该班所有学生的学生证信息。

4) 给定某位学生的学号,修改该学生的学生证信息。

5) 给定某位学生的学号,删除该学生的学生证信息。

6) 提供一些统计各类信息的功能。

二.软件的需求分析描述

本软件要实现对学生证信息的有序程序化管理,操作人员可以输入学生的学生证信息并存储,修改学生证信息,删除学生证信息,并通过不同方式查找到学生,从而简化学生证的管理工作,方便进行相关操作。

本软件要达到的性能,存储至少100位同学的学生证信息,并可以查找指定学生的学生证信息,修改,删除指定学生的学生证信息,可输出已存储的全部学生的相关信息。

三. 开发工具的介绍—C语言的优点

简洁紧凑、灵活方便。

运算符丰富。

数据类型丰富。

C是结构式语言。

语法限制不太严格,程序设计自由度大。

允许直接访问物理地址,对硬件进行操作。

生成目标代码质量高,程序执行效率高。

适用范围大,可移植性好。

四.软件的总体设计和详细设计

1.软件的总体设计部分画出结构图。

2.软件的详细设计部分画出流程图,并写出个函数之间参数的定义和传递方式、输入数据类型、格式和内容限制。

①Main函数

函数从主函数开始运行,首先进行选择要操作的函数,引导用户执行操作。而后通过全局变量在进行具体操作

②Setup函数

用户选择执行Setup()函数,首先引导用户确定录入人数,之后通过循环语句判断,一次录入每个学生的学生卡信息,包括姓名,性别,学院,以及学号。

③Correct函数

用户选择执行Correct()函数,首先程序引导输入指定学生的学号,判断输入学号的学生是否存在,如果存在则引导用户重新将该学生的学生卡各项信息输入并覆盖原信息,修改结束后自动返回主菜单等待用户操作,否则直接返回主菜单。

④Delete函数

⑤Find函数

用户选择Find函数,首先引导用户选择查询方式,确认后调用执行响应程序段,最后将查询结果全部打出。

⑦.统计功能

五.资源描述

凡装有Free-C5的程序皆可完美运行此程序

六.程序的源代码

#include"stdio.h"

#include"string.h"

#include"stdlib.h"

#include"conio.h"

struct information{

char name[10];

char sex;

char num[8];

int academy;

};

typedef struct information INFORMATION;

struct sqlisttp{

INFORMATION student[100];

int last;

};

typedef struct sqlisttp SQLISTTP;

SQLISTTP v; /*建立一个全局变量,线性表*/

void Setup(){

int i;

printf("请输入你要建立数据的人数\n");

scanf("%d",&v.last);

for(i=0;i

printf("请输入第%d位的姓名\n",i+1);

scanf("%s",v.student[i].name);

printf("请输入第%d位的性别(MorF)\n",i+1);

scanf("%s",&v.student[i].sex);

printf("请输入第%d位的学号\n",i+1);

scanf("%s",v.student[i].num);

printf("请输入第%d位的学院(1-15)\n",i+1);

scanf("%d",&v.student[i].academy);

}

getch();

}

void Add(){

v.last++;

printf("请输入第%d位的姓名\n",v.last);

scanf("%s",v.student[v.last-1].name);

printf("请输入第%d位的性别(MorF)\n",v.last);

scanf("%s",&v.student[v.last-1].sex);

设计一个学生证的管理程序。该程序应该具有以下功能: (l)录入某位学生的学生证信息(学生证应该包含的位息请参看自己的学生证); (2)给定学号,显示某位学生的学生证信息; (3)给定某个班级的班号,按学号由小到大显示该班所有学生的学生证信息; (4)给定某个班级的班号,按姓名的字典顺序显示该班所有学生的学生证信息; (5)给定某位学生的学号,修改该学生的学生证信息; (6)给定某位学生的学号,删除该学生的学生证信息。 题目要求: (1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序,即在程序中加入异常处理,检查用户输入数据的有效性,以保证程序的健壮性; (2)学生证应该包含的信息请参看自己的学生证; (3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单选项选则所需进行的操作项目,菜单要界面友好、清晰; (4)将所有学生证信息存储在一个文件中,并实现文件的读写操作,即将输入的数据以文件的形式存盘,将原来已经存盘的文件读入内存,进行管理; (5)应保证测试用例测试程序的各种边缘情况。 输入要求: 应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。 输出要求: (1)应用程序运行后,在屏幕上显示一个菜单。 (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
#include #include #include #include #define STU struct student STU {long num; char name[20]; int sex; long classes; long birth; }; /***************************input****************************/ void input(int k,STU *st) {int n,i; FILE *fp; long b; STU student_1; printf("Please input your number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&b); for(i=0;i<k;i++) if(st[i].num==b) {printf("\nThe school number is repeat!\n"); free(st);menu();} else {printf("\nPlease input your name[ ]\b\b\b\b\b\b\b\b\b"); scanf("%s",student_1.name); printf("\nPlease input you sex male(1) or female(2)[ ]\b\b\b\b\b\b\b"); scanf("%d",&student_1.sex); printf("\nPlease input you Class[ ]\b\b\b\b\b\b\b"); scanf("%ld",&student_1.classes); printf("\nPlease input you date of birth[ ]\b\b\b\b\b\b\b"); scanf("%ld",&student_1.birth); fp=fopen("student1.txt","ab"); if(!fp) {printf("Document error! "); exit(0);} else {fprintf(fp,"%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); printf("%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); n=k+1; rewind(fp); fprintf(fp,"%d",n); fclose(fp); free(st); menu();} }} /******************************inquiries********************************/ void inquiries(int k,STU *st) {int i,j=0,n,p,w; long a; do {printf("\n\t\t**************INQUIRIE MENU**************\n\n"); printf("\t\t\t1.Inquiries school number\n"); printf("\t\t\t2.Inquiries classes\n"); printf("\t\t\t3.Inquiries date of birth\n"); printf("\t\t\t4.Back to menu\n"); printf("\n\n\t\t******************************************\n"); printf("Choice your number(1-4)[ ]\b\b\b\b\b\b\b"); scanf("%d",&n); if(n4) {w=1;getchar();} else w=0; }while(w==1); switch(n) {case 1:j=0;printf("Please input your inquiries school number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].num==a) {j=1;p++; printf("%ld%s%d%ld%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this school number!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 2:j=0;printf("Please input you class number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].classes==a) {i=1;p++; printf("%d%s%d%d%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this Class!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 3:j=0; printf("Please input you date of birth[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].birth==a) {i=1;p++; printf("%d%s%d%d%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this date of birth!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 4:free(st);menu();break; } } /***************************change************************/ void change(int k,STU *st) {int a,i,n,w,j=0,p,q=0; FILE *fp; fp=fopen("student1","wb"); if(!fp) {printf("Document error! "); exit(0);} printf("Plese input you change number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) if(st[i].num==a) {j=1;p=i; do {printf("\n\t\t***************CHANGES MENU***************"); printf("\n\t\t\t1.Change Number"); printf("\n\t\t\t2.Change Name"); printf("\n\t\t\t3.Change Sex"); printf("\n\t\t\t4.Change classes"); printf("\n\t\t\t5.Change Date of birth"); printf("\n\t\t\t6.Back"); printf("\n\t\t***********************************************\n"); printf("\nChoice your number(1-6)[ ]\b\b\b\b\b\b\b"); scanf("%d",&n); if(n6) {w=1;getchar();}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值