I'll be up front and say that I haven't applied much thought to this, so there's probably more elegant, and efficiant methods than this. Also, you haven't specifed using scripts/models for this, so I'll assume you're doing a manual job.
Start by performing an Intersect between your polygon (district) and point (complaints) data, with the output type to be "POINT". The resulting dataset will be a new set of complaint points, which will all have the attributes of the district polygon they fall within.
If you have an Advanced licence:
- use the Frequency tool with your new point data. Set the Frequency Field to that of the district names (we'll call it DISTRICT_NAME).
If you have a Basic or Standard licence:
- use the Summary Statistics tool with your new point data. Set the Statistics Field to DISTRICT_NAME and the Statistic Type to COUNT.
- in the Summary Fields section, check the box next to the DISTRICT_NAME field.
After the frequency/summary statistics step, you will have a table which contains the count of points in each district. Join this table back to your original district polygon data so that you can associate the count of complaints with the polygons.
If you want the association to be permanent, either export the polygon data to a new dataset, or create a field to contain the complaint count and calculate the frequency across from the table. I'd probably name the field with the date of the complain count, and as further iterations of the analysis are conducted, add new fields with the new dates so that you can unerstand the complaints over time.